การใช้Language Detection ด้วย Python
Published: 2023-04-11 16:50:00

บทความนี้เราจะมาพูดถึง Language Detection with Machine Learning หรือการตรวจจับภาษาและจำแนกภาษา

**Language Detection**
      
ในฐานะมนุษย์สามารถตรวจจับภาษาที่รู้จักได้อย่างง่ายดาย แต่ก็มีข้อจำกัดกับบางภาษาที่ไม่สามารถระบุได้ว่าภาษาที่เห็นเป็นภาษาอะไร แต่มีนักแปลภาษาที่ได้รับความนิยมมากที่สุดในโลกซึ่งมีผู้คนจำนวนมากใช้อยู่ 

นั่นคือ "Google Translate" นอกจากนี้ยังมี Machine Learning Model เพื่อตรวจจับภาษาที่คุณสามารถใช้ได้ หากไม่ทราบว่าต้องการแปลภาษาใด

ส่วนสำคัญที่สุดของการฝึกอบรมการตรวจจับภาษาให้มีประสิทธิภาพ คือ ข้อมูล ยิ่งมีข้อมูลเกี่ยวกับภาษาหลาย ๆ ภาษามาก การตรวจจับภาษาก็จะทำงานได้แม่นยำมากขึ้นในแบบ Real-time 

ในชุดข้อมูลที่ใช้ถูกรวบรวมจาก Kaggle ซึ่งมีข้อมูลเกี่ยวกับภาษายอดนิยม 22 ภาษาและมี 1000 ประโยคในแต่ละภาษา ดังนั้นจะเป็นชุดข้อมูลที่เหมาะสมสำหรับการฝึกอบรมการตรวจจับภาษาด้วยการเรียนรู้ของเครื่อง

**Language Detection using Python**
ต่อมาเป็นวิธีการฝึก Machine Learning Model โดยใช้ Python

**❤️<u>ขั้นตอนที่ 1</u> นำเข้า Python Libraries และ Dataset**

```
import pandas as pd
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB

data = pd.read_csv(
    "https://raw.githubusercontent.com/amankharwal/Website-data/master/dataset.csv"
)
print(data.head())
```
ผลที่ได้
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gqz3wmj8r4310kale4cc.jpg)

▷ต่อมาให้ลองตรวจสอบว่าDatasetนี้มีค่าว่างหรือไม่ด้วยCodeคำสั่ง
`data.isnull().sum()`
จะแสดงผลดังนี้
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0uasipcosynhng17spul.jpg)

▷ตรวจสอบภาษาในDataset ด้วยCodeคำสั่ง
`data["language"].value_counts()`
จะแสดงผลดังนี้
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/df3ybo49xfn2nim9qvym.jpg)

**❤️<u>ขั้นตอนที่ 2</u> แบ่งข้อมูลจำแนกคลาสออกเป็นชุดฝึกอบรมกับชุดทดสอบ**

```
x = np.array(data["Text"])
y = np.array(data["language"])

cv = CountVectorizer()
X = cv.fit_transform(x)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
```
> เนื่องจากนี่เป็นปัญหาของการจำแนกหลายคลาส ดังนั้นจะใช้ Multinomial Naïve Bayes Algorithm เพื่อฝึก Language Detection Model เนื่องจาก Algorithm นี้ทำงานได้ดีมากในปัญหาการจำแนกประเภทหลายคลาส

```
model = MultinomialNB()
model.fit(X_train,y_train)
model.score(X_test,y_test)
```
ผลลัพธ์ที่แสดงออกมา
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xwi5ej82lh5d9i8m9f75.jpg)

**❤️<u>ขั้นตอนที่ 3</u> Codeที่ให้ผู้ใช้ป้อนข้อความเพื่อทำการตรวจจับภาษา**

```
user = input("Enter a Text: ")
data = cv.transform([user]).toarray()
output = model.predict(data)
print(output)
```

> เมื่อทำการRun Codeแล้ว จะขึ้นกล่องให้เราใส่ข้อความลงไป👩🏻‍💻

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8ezx5hbrtbe6u588lzqs.jpg)

ผลที่แสดงออกมาเมื่อเรากรอกข้อความลงไป ตัวอย่างเช่น พิมพ์คำว่า "สวัสดีชาวโลก"👽 ภาษาที่แสดงออกมาก็คือ 'Thai'🇹🇭 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/96didoqh6rqv7jdg49oo.jpg)

👉🏻**<u>สรุป</u>**
Language Detection Model โดยการเขียนด้วย Python เป็น Machine Learning ประเภท Supervised Learning คือมีการใช้Datasetในการสอนเพื่อให้สามารถตรวจจับภาษาได้ว่า ภาษาที่ผู้ใช้กรอกลงไปเป็นภาษาอะไร แต่ข้อจำกัดของโมเดลนี้คือจะสามารถตรวจจับภาษาได้แค่ 22 ภาษา หรือตามในDatasetนั่นเอง

---

🙏🏻ขอบคุณข้อมูลจากเว็บไซต์https://thecleverprogrammer.com/2021/10/30/language-detection-with-machine-learning/