<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Thanapon</title>
    <description>The latest articles on DEV Community by Thanapon (@thanapon).</description>
    <link>https://dev.to/thanapon</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1404427%2Fb04cac68-d794-466e-8265-e056cc0b47e0.jpeg</url>
      <title>DEV Community: Thanapon</title>
      <link>https://dev.to/thanapon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thanapon"/>
    <language>en</language>
    <item>
      <title>การสร้างโมเดล AI ในการจำแนกข้อความรีวิวแอปพลิเคชั่นด้วย Tensorflow และ Keras โดยใช้ Python</title>
      <dc:creator>Thanapon</dc:creator>
      <pubDate>Tue, 09 Apr 2024 15:08:14 +0000</pubDate>
      <link>https://dev.to/thanapon/kaarsraangomedl-ai-ainkaarcchamaenkkhkhwaamriiwiwaepphliekhchandwy-tensorflow-aela-keras-odyaich-python-1a26</link>
      <guid>https://dev.to/thanapon/kaarsraangomedl-ai-ainkaarcchamaenkkhkhwaamriiwiwaepphliekhchandwy-tensorflow-aela-keras-odyaich-python-1a26</guid>
      <description>&lt;p&gt;การรับรู้ความพึงพอใจจากลูกค้ามีความสำคัญอย่างยิ่ง ไม่ว่าจะเป็นธุรกิจด้านการขายหรือสื่อบันเทิง เพื่อการจัดการข้อเสนอแนะจากลูกค้าได้อย่างรวดเร็วเพื่อความง่ายต่อการจำแนกเราเลยจะเลือกใช้ตัวสร้างโมเดล AI อย่าง Tensorflow และ Keras เข้ามาช่วยในการจำแนก&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Tensorflow&lt;/u&gt; และ &lt;u&gt;Keras&lt;/u&gt; เป็นเครื่องมือสำหรับการพัฒนาและฝึกโมเดล AI และ machine learning โดย&lt;br&gt;
Tensorflow สามารถนำไปใช้งานได้หลากหลายสำหรับการสร้างและฝึกโมเดล AI เช่น การจำแนกข้อความ การจำแนกภาพ&lt;br&gt;&lt;br&gt;
Keras คือ high-level neural networks API ที่ถูกสร้างขึ้นบน Tensorflow ทำให้สามารถ สร้างและฝึกโมเดล neural networks ได้อย่างรวดเร็ว&lt;/p&gt;

&lt;p&gt;โดยบทความนี้เราจะมาดูถึงการใช้งาน Tensorflow และ Keras ใน Python ว่าสามารถจำแนกข้อความได้อย่างไรบ้าง ซึ่งจะใช้ Google Colab ในการรันตัว Code โดย Dataset ที่ใช้ คือ ตัวอย่างข้อความที่สร้างขึ้นมาเองเพื่อรีวิวตัว application&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;ขั้นตอนที่ 1 นำเข้า Libraries ที่จะใช้ลง Google Colab&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.models import Sequential
import numpy as np
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;ขั้นตอนที่ 2 เตรียมข้อมูล train_data คือข้อความรีวิวนั้นเอง&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;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)
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;&lt;code&gt;("I love this application", 1)&lt;/code&gt;&lt;br&gt;
&lt;code&gt;("This is a bad application", 0)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ขั้นตอนที่ 3 แยกข้อความกับตัวเลขกำกับและทำการแปลงข้อความเป็นตัวเลข และแปลงเลขกำกับเป็น array&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;texts, labels = zip(*train_data)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;แยกข้อความและตัวเลขของรีวิวดีและไม่ดีโดยใช้ &lt;code&gt;zip&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;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)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;y_train = np.array(labels)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;ขั้นตอนที่ 4 ทำการสร้างโมเดลที่ใช้ในการจำแนกและนำไปคอมไพล์&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ใช้ Sequential API ใน Keras เพื่อสร้างโมเดล neural network ที่ประกอบด้วย Embedding layer, Flatten layer และ Dense layer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;model = Sequential([
    layers.Embedding(input_dim=1000, output_dim=16, input_length=10),
    layers.Flatten(),
    layers.Dense(1, activation='sigmoid')
])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

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

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

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

&lt;p&gt;&lt;strong&gt;ขั้นตอนที่ 5 Train ข้อมูลที่เตรียมไว้&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;model.fit(x_train, y_train, epochs=10)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ผลลัพธ์ที่ได้&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbtqeze0sio7t75dwzdq5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbtqeze0sio7t75dwzdq5.jpg" alt="Image description" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จะเป็นการ Train ข้อมูล 10 รอบเพื่อเพิ่มความแม่นยำและเหมาะสม&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ขั้นตอนที่ 6 ทดลอง Predict จากข้อมูลที่ทดสอบ&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;เริ่มจากการ Predict ด้วยคำพูดตัวอย่าง&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;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)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ผลลัพธ์&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq771kxpcsd3vgy2brbb0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq771kxpcsd3vgy2brbb0.png" alt="Image description" width="516" height="69"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;code&gt;I hate this application&lt;/code&gt; คือ มีค่าความน่าจะเป็นน้อยกว่า 0.5 จะเป็นความคิดเห็นที่ไม่ดี&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;ตัวอย่างการรันใช้งาน&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fadabxq8lo9bjia636aao.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fadabxq8lo9bjia636aao.png" alt="Image description" width="531" height="638"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;และทำการเปลี่ยนความคิดเห็นจาก Code ของ&lt;strong&gt;ขั้นตอนที่ 6&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;test_data = ["I love this application", "this application is so bad"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ผลลัพธ์ที่ได้&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3bojbzbx5juil8krvbfu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3bojbzbx5juil8krvbfu.png" alt="Image description" width="138" height="59"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ค่าที่ได้ มีค่าความน่าจะเป็นมากขึ้นกว่าเก่าเยอะเลย 😮😮&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;สรุปผล&lt;/strong&gt;&lt;br&gt;
จากการ Train model รีวิว application เราจะเห็นได้ว่า ค่าความน่าจะเป็นที่ได้จะเพิ่มขึ้นและแม่นยำมากขึ้นเกิดจากการ Train model ที่ประสิทธิภาพ จากตอนแรกที่เรา Train model ไป 10 รอบ ค่าทั้ง 2 จะอยู่ความคิดเห็นที่ดีอยู่ที่ 0.55 และ ที่แย่ 0.41&lt;br&gt;
แต่เมื่อเราเพิ่มรอบ Train model ไปเป็น 30 รอบ ความคิดเห็นจะเพิ่มขึ้นอย่างเห็นได้ชัดโดยความคิดเห็นที่ดีจะอยู่ที่ 0.61 และที่แย่จะอยู่ที 0.31 &lt;/p&gt;

&lt;p&gt;ดังนั้น การเพิ่มรอบการ Train model และการเตรียมข้อมูลในการ Train จึงเป็นสิ่งสำคัญในการหาความแม่นยำจากตัว AI นั้นเอง&lt;/p&gt;




&lt;p&gt;ขอขอบคุณข้อมูลจาก&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.tensorflow.org/tutorials/keras/text_classification"&gt;https://www.tensorflow.org/tutorials/keras/text_classification&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>tensorflow</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
