Sentiment Analysis คืออะไร ?
การวิเคราะห์ความรู้สึก(Sentiment Analysis) เป็นการวิเคราะห์อารมณ์และความรู้สึกจากข้อความ เช่น ความรู้สึกด้านดี (Positive), ความรู้สึกด้านที่ไม่ดี (Negative),ความรู้สึกกลางๆ (Neutral)
จะใช้ train.txt กับ train_label.txt เป็นตัวอย่าง
เริ่มต้นโหลดข้อมูลมา

ขนาดที่ได้

ดูข้อมูลสรุป

count=24063, unique=4, top=Neutral(neu), freq=13105
ดูข้อมูลสรุปแบบจัดกลุ่ม

Negative(neg) = count->6140, unique->6129, top->#ERROR!, freq->12
Neutral(neu) = count->13105, unique->13087, top->#ERROR!, freq->19
Positive(pos) = count->4300, unique->4300, top-> เห็นด้วยเหรอค่ะ อุ้ยเขินเลย😁😁, freq->1
q = count->518, unique->518, top-> 20% ต้องจ่ายเท่าไหร่ครับ, freq->1
Plot ออกมาเป็นกราฟ

กราฟที่ได้

ตัดคำ
โดยใช้ word_tokenize ในการตัดคำ

หาความยาวของประโยค

ได้ออกมา 758 คำ

ดูการกระจายคำ ของความยาวประโยค
โดยกำหนดหให้ sharex เป็น False


ดูการจัด scale ให้เท่ากัน ของความยาวประโยค
โดยให้ sharex เป็น true


สุ่มเลือก class neu โดยใช้ undersampling
undersampling คือการข้อมูลที่มีเยอะ แล้วให้เป็นข้อมูลย่อย
เริ่มต้นจะเอา category ที่เป็น neu โดยใช้ sample 5000


ลองมาเป็น category ที่เป็น pos


สุดท้ายเป็น category ที่เป็น neg


นำข้อมูล 3 Class มาต่อกัน

ผลลัพธ์ที่ได้

ได้มาเป็น
Negative(neg) = count->6140, unique->6129, top->#ERROR!, freq->12
Neutral(neu) = count->5000, unique->4990, top->#ERROR!, freq->11
Positive(pos) = count->4300, unique->4300, top->
เห็นด้วยเหรอค่ะ อุ้ยเขินเลย😁😁, freq->1
ลองแสดงข้อมูล 5 แถวแรก

plot ออกมาเป็นกราฟ


การกระจายคำ

การจัด scale ให้เท่ากัน

ลองมาทำเป็น Word2Vec จากข้อความเป็นเลข
ก่อนที่จะทำเราดู cores ของ cpu ในคอมว่ามีกี่ cores ซึ่งของผมมี 8 cores

เริ่มแรกจะหาความยาวประโยคและตัดคำ แล้วแสดงข้อมูลสัก 5 ประโยค

ผลลัพธ์ที่ได้

ลองนำคำต่างๆมาแปลงเป็นตัวเลข
workers คือ จำนวน cores ของ cpu ใน computer ลบกับ 1
ลองทำ word2vec

ผลลัพธ์ที่ได้

ลองหาค่าที่ใกล้เคียงว่ามีความเหมือนกันมากหรือไม่

ผลลัพธ์ที่ได้
ลองหาคำที่ใกล้เคียงกับคำว่า “เสียดาย”


ทำเป็น OneHot แปลงข้อความ ผลเฉลย ให้เป็นตัวเลข

โดยการแปลง จะใช้ text to sequences

ผลลัพธ์ที่ได้จากการแปลงแล้ว

Padding คือ การทำให้ประโยคมีความยาวเท่ากันทั้งหมด
ผลลัพธ์ที่ได้จากการ padding

นิยาม model โดยจะใช้ keras

จะใช้การ Sprit Data เพื่อ train ข้อมูล

train ข้อมูลโดยใช้ epoch 20 ตัว


จากนั้นหาค่า accuracy และ ค่า loss

ซึ่งได้ accuracy ได้ 67.81088 เปอร์เซนต ์และ loss ได้ 82.822823 เปอร์เซนต ์
ลองมาดูเป็นกราฟ

