การสร้างโมเดล AI ในการจำแนกข้อความรีวิวแอปพลิเคชั่นด้วย Tensorflow และ Keras โดยใช้ Python
Thanapon
Posted on April 9, 2024
การรับรู้ความพึงพอใจจากลูกค้ามีความสำคัญอย่างยิ่ง ไม่ว่าจะเป็นธุรกิจด้านการขายหรือสื่อบันเทิง เพื่อการจัดการข้อเสนอแนะจากลูกค้าได้อย่างรวดเร็วเพื่อความง่ายต่อการจำแนกเราเลยจะเลือกใช้ตัวสร้างโมเดล AI อย่าง Tensorflow และ Keras เข้ามาช่วยในการจำแนก
Tensorflow และ Keras เป็นเครื่องมือสำหรับการพัฒนาและฝึกโมเดล AI และ machine learning โดย
Tensorflow สามารถนำไปใช้งานได้หลากหลายสำหรับการสร้างและฝึกโมเดล AI เช่น การจำแนกข้อความ การจำแนกภาพ
Keras คือ high-level neural networks API ที่ถูกสร้างขึ้นบน Tensorflow ทำให้สามารถ สร้างและฝึกโมเดล neural networks ได้อย่างรวดเร็ว
โดยบทความนี้เราจะมาดูถึงการใช้งาน Tensorflow และ Keras ใน Python ว่าสามารถจำแนกข้อความได้อย่างไรบ้าง ซึ่งจะใช้ Google Colab ในการรันตัว Code โดย Dataset ที่ใช้ คือ ตัวอย่างข้อความที่สร้างขึ้นมาเองเพื่อรีวิวตัว application
ขั้นตอนที่ 1 นำเข้า Libraries ที่จะใช้ลง Google Colab
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.models import Sequential
import numpy as np
ขั้นตอนที่ 2 เตรียมข้อมูล train_data คือข้อความรีวิวนั้นเอง
train_data = [
("This is a great application", 1),
("I love this application", 1),
("This is a bad application", 0),
("I hate this application", 0),
("This application was okay, not great but not bad", 0)
]
โดย จากตัว Code ที่เราได้กำหนดข้อความรีวิวไปจะมีทั้งข้อความรีวิวที่แย่ และดี โดยจะกำหนดเลขให้ ข้อความที่ดีเป็น 1 และ ข้อความที่แย่เป็น 0
("I love this application", 1)
("This is a bad application", 0)
ขั้นตอนที่ 3 แยกข้อความกับตัวเลขกำกับและทำการแปลงข้อความเป็นตัวเลข และแปลงเลขกำกับเป็น array
texts, labels = zip(*train_data)
แยกข้อความและตัวเลขของรีวิวดีและไม่ดีโดยใช้ zip
tokenizer = tf.keras.preprocessing.text.Tokenizer(num_words=1000)
tokenizer.fit_on_texts(texts)
sequences = tokenizer.texts_to_sequences(texts)
x_train = tf.keras.preprocessing.sequence.pad_sequences(sequences, maxlen=10)
เสร็จแล้ว ใช้ Tokenizer
ใน TensorFlow เพื่อแปลงข้อความเป็น sequences ของตัวเลข และทำการ padding เพื่อให้ทุก sequence มีความยาวเท่ากัน
เพื่อให้ง่ายต่อการฝึกโมเดลเราจะแปลงเลข 0 กับ 1 ให้อยู่ในรูปแบบของ array
y_train = np.array(labels)
ขั้นตอนที่ 4 ทำการสร้างโมเดลที่ใช้ในการจำแนกและนำไปคอมไพล์
ใช้ Sequential API ใน Keras เพื่อสร้างโมเดล neural network ที่ประกอบด้วย Embedding layer, Flatten layer และ Dense layer.
model = Sequential([
layers.Embedding(input_dim=1000, output_dim=16, input_length=10),
layers.Flatten(),
layers.Dense(1, activation='sigmoid')
])
Embedding คือ การแปลงคำศัพท์ในประโยคเป็น dense vectors
Flatten คือ แปลงข้อมูลให้เป็นเวกเตอร์ชั้นเดียว
Dense เพื่อทำนายความน่าจะเป็นว่ารีวิว application เป็นบวกหรือลบ โดยใช้ activation function เป็น sigmoid
เพื่อให้ได้ผลลัพธ์เป็นค่าความน่าจะเป็นของการเป็นบวกหรือลบ
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
คอมไพล์โมเดล Neural Network เพื่อเตรียมพร้อมสำหรับการเทรนโมเดล
optimizer เป็น 'adam'
loss function เป็น 'binary_crossentropy'
ใช้เมตริก 'accuracy' เพื่อวัดประสิทธิภาพของโมเดล
ขั้นตอนที่ 5 Train ข้อมูลที่เตรียมไว้
model.fit(x_train, y_train, epochs=10)
ผลลัพธ์ที่ได้
จะเป็นการ Train ข้อมูล 10 รอบเพื่อเพิ่มความแม่นยำและเหมาะสม
ขั้นตอนที่ 6 ทดลอง Predict จากข้อมูลที่ทดสอบ
เริ่มจากการ Predict ด้วยคำพูดตัวอย่าง
test_data = ["This is a great application", "I hate this application"]
test_seq = tokenizer.texts_to_sequences(test_data)
test_seq_padded = tf.keras.preprocessing.sequence.pad_sequences(test_seq, maxlen=10)
predictions = model.predict(test_seq_padded)
print(predictions)
ผลลัพธ์
ค่าที่ได้จากการสังเกต
This is a great application
คือ มีค่าความน่าจะเป็นมากกว่า 0.5 จะเป็นความคิดเห็นหรือเป็นรีวิวที่ดี
I hate this application
คือ มีค่าความน่าจะเป็นน้อยกว่า 0.5 จะเป็นความคิดเห็นที่ไม่ดี
ตัวอย่างการรันใช้งาน
จากขั้นตอนที่ 5 ถ้าหากเราเพิ่มรอบการ train ข้อมูลที่เตรียมไว้ จาก 10 เป็น 30 ละ??
และทำการเปลี่ยนความคิดเห็นจาก Code ของขั้นตอนที่ 6
test_data = ["I love this application", "this application is so bad"]
ผลลัพธ์ที่ได้
ค่าที่ได้ มีค่าความน่าจะเป็นมากขึ้นกว่าเก่าเยอะเลย 😮😮
สรุปผล
จากการ Train model รีวิว application เราจะเห็นได้ว่า ค่าความน่าจะเป็นที่ได้จะเพิ่มขึ้นและแม่นยำมากขึ้นเกิดจากการ Train model ที่ประสิทธิภาพ จากตอนแรกที่เรา Train model ไป 10 รอบ ค่าทั้ง 2 จะอยู่ความคิดเห็นที่ดีอยู่ที่ 0.55 และ ที่แย่ 0.41
แต่เมื่อเราเพิ่มรอบ Train model ไปเป็น 30 รอบ ความคิดเห็นจะเพิ่มขึ้นอย่างเห็นได้ชัดโดยความคิดเห็นที่ดีจะอยู่ที่ 0.61 และที่แย่จะอยู่ที 0.31
ดังนั้น การเพิ่มรอบการ Train model และการเตรียมข้อมูลในการ Train จึงเป็นสิ่งสำคัญในการหาความแม่นยำจากตัว AI นั้นเอง
ขอขอบคุณข้อมูลจาก
https://www.tensorflow.org/tutorials/keras/text_classification
Posted on April 9, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.