DEV Community

Thanapon
Thanapon

Posted on

การสร้างโมเดล AI ในการจำแนกข้อความรีวิวแอปพลิเคชั่นด้วย Tensorflow และ Keras โดยใช้ Python

การรับรู้ความพึงพอใจจากลูกค้ามีความสำคัญอย่างยิ่ง ไม่ว่าจะเป็นธุรกิจด้านการขายหรือสื่อบันเทิง เพื่อการจัดการข้อเสนอแนะจากลูกค้าได้อย่างรวดเร็วเพื่อความง่ายต่อการจำแนกเราเลยจะเลือกใช้ตัวสร้างโมเดล 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
Enter fullscreen mode Exit fullscreen mode

ขั้นตอนที่ 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)
]
Enter fullscreen mode Exit fullscreen mode

โดย จากตัว Code ที่เราได้กำหนดข้อความรีวิวไปจะมีทั้งข้อความรีวิวที่แย่ และดี โดยจะกำหนดเลขให้ ข้อความที่ดีเป็น 1 และ ข้อความที่แย่เป็น 0

("I love this application", 1)
("This is a bad application", 0)

ขั้นตอนที่ 3 แยกข้อความกับตัวเลขกำกับและทำการแปลงข้อความเป็นตัวเลข และแปลงเลขกำกับเป็น array

texts, labels = zip(*train_data)
Enter fullscreen mode Exit fullscreen mode

แยกข้อความและตัวเลขของรีวิวดีและไม่ดีโดยใช้ 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)
Enter fullscreen mode Exit fullscreen mode

เสร็จแล้ว ใช้ Tokenizer ใน TensorFlow เพื่อแปลงข้อความเป็น sequences ของตัวเลข และทำการ padding เพื่อให้ทุก sequence มีความยาวเท่ากัน

เพื่อให้ง่ายต่อการฝึกโมเดลเราจะแปลงเลข 0 กับ 1 ให้อยู่ในรูปแบบของ array

y_train = np.array(labels)
Enter fullscreen mode Exit fullscreen mode

ขั้นตอนที่ 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')
])
Enter fullscreen mode Exit fullscreen mode

Embedding คือ การแปลงคำศัพท์ในประโยคเป็น dense vectors

Flatten คือ แปลงข้อมูลให้เป็นเวกเตอร์ชั้นเดียว

Dense เพื่อทำนายความน่าจะเป็นว่ารีวิว application เป็นบวกหรือลบ โดยใช้ activation function เป็น sigmoid เพื่อให้ได้ผลลัพธ์เป็นค่าความน่าจะเป็นของการเป็นบวกหรือลบ

model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])
Enter fullscreen mode Exit fullscreen mode

คอมไพล์โมเดล Neural Network เพื่อเตรียมพร้อมสำหรับการเทรนโมเดล

optimizer เป็น 'adam'
loss function เป็น 'binary_crossentropy'
ใช้เมตริก 'accuracy' เพื่อวัดประสิทธิภาพของโมเดล

ขั้นตอนที่ 5 Train ข้อมูลที่เตรียมไว้

model.fit(x_train, y_train, epochs=10)
Enter fullscreen mode Exit fullscreen mode

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

Image description

จะเป็นการ 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)
Enter fullscreen mode Exit fullscreen mode

ผลลัพธ์

Image description

ค่าที่ได้จากการสังเกต
This is a great application คือ มีค่าความน่าจะเป็นมากกว่า 0.5 จะเป็นความคิดเห็นหรือเป็นรีวิวที่ดี

I hate this application คือ มีค่าความน่าจะเป็นน้อยกว่า 0.5 จะเป็นความคิดเห็นที่ไม่ดี


ตัวอย่างการรันใช้งาน

จากขั้นตอนที่ 5 ถ้าหากเราเพิ่มรอบการ train ข้อมูลที่เตรียมไว้ จาก 10 เป็น 30 ละ??

Image description

และทำการเปลี่ยนความคิดเห็นจาก Code ของขั้นตอนที่ 6

test_data = ["I love this application", "this application is so bad"]
Enter fullscreen mode Exit fullscreen mode

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

Image description

ค่าที่ได้ มีค่าความน่าจะเป็นมากขึ้นกว่าเก่าเยอะเลย 😮😮


สรุปผล
จากการ 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

Top comments (0)