ใน ep นี้เราจะเรียนรู้การสร้าง Toxicity Classifier แบบ Multi-label Classification จำแนกคำพูด Toxic ซึ่งเป็นงานด้าน NLP โดยใช้โมเดลสำเร็จรูป สำหรับภาษา JavaScript ด้วย TensorFlow.js
Toxicity คืออะไร
Toxicity หมายถึง ความ Toxic มุ่งร้าย คิดร้าย ดูถูก คุกคาม ขู่เข็ญ แดกดัน หยาบคาย สบประมาท อนาจาร คำพูดเป็นพิษ ในเคสนี้ จะแบ่งเป็น 7 หัวข้อ ดังนี้
- identity_attack
- insult
- obscene
- severe_toxicity
- sexual_explicit
- threat
- toxicity
โดย 1 ข้อความจะเป็นได้หลายหัวข้อ
TensorFlow.js Code Example
เริ่มต้นด้วยใส่ Code ด้านล่าง ไว้ระหว่าง HTML tag head
และ body
โค้ดนี้เป็นการ Load TensorFlow.js และ โหลดโมเดลที่ใช้ในการทำ Toxicity Classification
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/toxicity"></script>
กำหนด threshold
ของความน่าจะเป็นที่ต้องการ
const threshold = 0.9;
เราจะได้ toxicity
ขึ้นมา สั่งให้โหลด model
ด้วย threshold
ที่เรากำหนดไว้ด้านบน แล้วใช้ model
ในการ classify
ข้อความที่ต้องการ
toxicity.load(threshold).then(model => {
model.classify(sentences).then(predictions => {
...
});
});
จะได้ predictions
เป็น array ระบุความน่าจะเป็นของ Class ต่าง ๆ รูปแบบด้านล่าง โดยถ้าความน่าจะเป็นมีค่าเกิน threshold
ที่ตั้งไว้ match
จะเป็น true
{
"label": "identity_attack",
"results": [{
"probabilities": [0.9659664034843445, 0.03403361141681671],
"match": false
}]
},
{
"label": "insult",
"results": [{
"probabilities": [0.08124706149101257, 0.9187529683113098],
"match": true
}]
},
...
เรามาเริ่มกันเลยดีกว่า
Inference
You are useless.
จะเห็นว่าโมเดล classify ประโยค You are useless. ได้ insult = 97.6% และ toxicity = 98.0%
You are perfect.
ส่วนประโยค You are perfect ไม่มีความ Toxicity ทั้ง 7 class เลย
Credit
- https://www.coursera.org/learn/browser-based-models-tensorflow
- https://js.tensorflow.org/api/latest/
- https://github.com/tensorflow/tfjs-models/tree/master/toxicity