<?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: Natchanan Sukwandee</title>
    <description>The latest articles on DEV Community by Natchanan Sukwandee (@nnamenatchx).</description>
    <link>https://dev.to/nnamenatchx</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%2F3025755%2Fb7826fdf-c25c-4355-a14c-f21e63de0ee8.jpg</url>
      <title>DEV Community: Natchanan Sukwandee</title>
      <link>https://dev.to/nnamenatchx</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nnamenatchx"/>
    <language>en</language>
    <item>
      <title>AI ตรวจจับคำหยาบในข้อความภาษาไทยด้วย Machine Learning</title>
      <dc:creator>Natchanan Sukwandee</dc:creator>
      <pubDate>Fri, 11 Apr 2025 13:45:33 +0000</pubDate>
      <link>https://dev.to/nnamenatchx/ai-trwcchcchabkhamhyaabainkhkhwaamphaasaaaithydwy-machine-learning-cbf</link>
      <guid>https://dev.to/nnamenatchx/ai-trwcchcchabkhamhyaabainkhkhwaamphaasaaaithydwy-machine-learning-cbf</guid>
      <description>&lt;p&gt;ในยุคที่โลกออนไลน์เป็นศูนย์กลางของการสื่อสาร การแสดงความคิดเห็นในแพลตฟอร์มต่างๆ เช่น Facebook, Twitter, YouTube หรือแม้แต่เว็บไซต์ข่าวสาร กลายเป็นเรื่องธรรมดา แต่สิ่งที่ตามมาคือ "ข้อความไม่เหมาะสม" หรือ "คำหยาบคาย" ที่อาจสร้างความไม่สบายใจให้กับผู้อื่น การมีระบบอัตโนมัติที่ช่วยตรวจจับและกรองคำเหล่านี้จึงเป็นเรื่องจำเป็น&lt;/p&gt;

&lt;p&gt;บทความนี้จะพาคุณไปรู้จักกับวิธีการสร้าง AI ง่ายๆ ที่สามารถตรวจจับคำหยาบในข้อความภาษาไทย โดยใช้เทคนิค Natural Language Processing (NLP) ร่วมกับ Machine Learning แบบ Supervised Learning โดยเราจะใช้ภาษา Python และรันได้ง่ายๆ บน Google Colab พร้อมโค้ดตัวอย่างที่สามารถนำไปประยุกต์ใช้ได้ทันที&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI ตัวนี้ทำงานอย่างไร?&lt;/strong&gt;&lt;br&gt;
AI ที่เราจะสร้างอยู่ในกลุ่มของ Supervised Learning - Text Classification โดยเป้าหมายคือการจำแนกข้อความออกเป็น 2 ประเภท:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;สุภาพ (0) เช่น “สวัสดีครับ”, “ขอบคุณมากๆ”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ไม่สุภาพ (1) เช่น “ไอสัส”, “โง่ชิบหาย”&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;กระบวนการโดยรวมของการสร้าง AI มีดังนี้:&lt;br&gt;
1.เตรียม Dataset ที่มีตัวอย่างข้อความ พร้อม label ว่าเป็นคำสุภาพหรือไม่&lt;br&gt;
2.ทำการ ตัดคำและลบคำฟุ่มเฟือย ด้วยเทคนิค NLP (Natural Language Processing)&lt;br&gt;
3.แปลงข้อความเป็นเวกเตอร์ตัวเลขด้วย TF-IDF Vectorization&lt;br&gt;
4.สร้างโมเดล Machine Learning ด้วย Logistic Regression&lt;br&gt;
5.ทดสอบผลลัพธ์และลองใช้งานจริงด้วยข้อความใหม่&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ขั้นตอนที่ 1: เริ่มต้นจากการเตรียมข้อมูล&lt;/strong&gt;&lt;br&gt;
สำหรับบทความนี้ เราจะสร้าง Dataset แบบง่ายๆ ด้วยตนเองก่อน เพื่อให้เข้าใจภาพรวม โดยแต่ละบรรทัดคือข้อความภาษาไทย พร้อม label ว่าเป็นคำสุภาพหรือคำหยาบ&lt;br&gt;
ตัวอย่างของ Dataset แบบง่ายๆ สามารถ copy code และนำไปเพิ่มเติมข้อมูลได้ตามใจชอบ&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzgbw193u6cy4m0f1q9qo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzgbw193u6cy4m0f1q9qo.png" alt="Image description" width="800" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ตัวอย่างผลที่ได้จาก code&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frdv3b0io4km7avr4mvjz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frdv3b0io4km7avr4mvjz.png" alt="Image description" width="299" height="261"&gt;&lt;/a&gt;&lt;br&gt;
หมายเหตุ: ในงานจริงควรใช้ Dataset ที่มีขนาดใหญ่กว่านี้ และหลากหลายคำมากขึ้น เพื่อให้โมเดลแม่นยำยิ่งขึ้น&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ขั้นตอนที่ 2: การเตรียมข้อความด้วย NLP (Tokenization &amp;amp; Stopword Removal)&lt;/strong&gt;&lt;br&gt;
ภาษาธรรมชาติอย่างภาษาไทยจะต้องผ่านขั้นตอน "ตัดคำ" (เพราะไม่มีการเว้นวรรคเหมือนภาษาอังกฤษ) และลบคำฟุ่มเฟือย เช่น “ที่”, “คือ”, “แล้ว” ที่ไม่มีผลกับความหมายของข้อความ&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fds0wx88kuamslpi09fl7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fds0wx88kuamslpi09fl7.png" alt="Image description" width="711" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ตัวอย่างเช่น:&lt;/p&gt;

&lt;p&gt;“ขอความกรุณาด้วยครับ” → [ขอ, ความกรุณา]&lt;/p&gt;

&lt;p&gt;“ไอสัส” → [ไอ, สัส]&lt;/p&gt;

&lt;p&gt;ผลลัพธ์ที่ได้&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb341lmrx1kicej4sqz0m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb341lmrx1kicej4sqz0m.png" alt="Image description" width="365" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ขั้นตอนที่ 3: แปลงข้อความเป็นเวกเตอร์ตัวเลข (TF-IDF Vectorization)&lt;/strong&gt;&lt;br&gt;
เพื่อให้โมเดลสามารถเรียนรู้จากข้อความ เราต้องแปลงข้อความเป็นตัวเลขก่อน ซึ่ง TF-IDF จะช่วยแปลงข้อความแต่ละประโยคเป็นเวกเตอร์ที่มีน้ำหนักของแต่ละคำ&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5oys5f3a94iv26wsd305.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5oys5f3a94iv26wsd305.png" alt="Image description" width="607" height="141"&gt;&lt;/a&gt;&lt;br&gt;
X จะกลายเป็น matrix ของข้อความที่มีค่าน้ำหนัก TF-IDF ของแต่ละคำ&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ขั้นตอนที่ 4: สร้างและเทรนโมเดลด้วย Logistic Regression&lt;/strong&gt;&lt;br&gt;
เราใช้โมเดล Logistic Regression ซึ่งเหมาะกับงานจำแนกประเภทแบบ binary (เช่น สุภาพ / ไม่สุภาพ)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdqmehexenh5ovxfnxklb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdqmehexenh5ovxfnxklb.png" alt="Image description" width="668" height="308"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ผลลัพธ์จะได้ precision, recall และ accuracy ของโมเดล ซึ่งแสดงถึงความสามารถของโมเดลในการจำแนกข้อความ&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fflugrlroe7wdp6apuyo9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fflugrlroe7wdp6apuyo9.png" alt="Image description" width="425" height="189"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ตัวอย่างการใช้งานจริง&lt;/strong&gt;&lt;br&gt;
เราจะลองเขียนฟังก์ชันให้ผู้ใช้พิมพ์ข้อความแล้วตรวจว่าเป็นคำหยาบหรือไม่&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F93ullrx1v236zre83bsg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F93ullrx1v236zre83bsg.png" alt="Image description" width="586" height="235"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ผลลัพธ์&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb915s1dfk0qgq1ploek3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb915s1dfk0qgq1ploek3.png" alt="Image description" width="302" height="87"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;สรุป&lt;/strong&gt;&lt;br&gt;
จากบทความนี้เราได้เรียนรู้วิธีการสร้างโมเดล AI สำหรับตรวจจับคำหยาบในข้อความภาษาไทย โดยใช้เทคนิค NLP และ Logistic Regression ซึ่งเหมาะกับการใช้งานเบื้องต้น&lt;br&gt;
หากต้องการความแม่นยำสูงขึ้น อาจพิจารณาใช้เทคนิคขั้นสูง เช่น:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Word Embedding (เช่น fastText, Word2Vec)&lt;/li&gt;
&lt;li&gt;Deep Learning (เช่น LSTM, BERT) &lt;/li&gt;
&lt;li&gt;เพิ่ม Dataset ที่หลากหลายยิ่งขึ้น
ในอนาคตสามารถพัฒนาให้ดียิ่งขึ้นด้วยการใช้ Deep Learning, LSTM หรือ Transformer เพื่อความแม่นยำที่สูงขึ้นได้&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;แหล่งอ้างอิง (References)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;PyThaiNLP Documentation&lt;br&gt;
&lt;a href="https://pythainlp.github.io/docs/" rel="noopener noreferrer"&gt;https://pythainlp.github.io/docs/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;scikit-learn: Machine Learning in Python&lt;br&gt;
&lt;a href="https://scikit-learn.org/stable/" rel="noopener noreferrer"&gt;https://scikit-learn.org/stable/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;TF-IDF Explained (จาก MonkeyLearn)&lt;br&gt;
&lt;a href="https://monkeylearn.com/blog/what-is-tf-idf/" rel="noopener noreferrer"&gt;https://monkeylearn.com/blog/what-is-tf-idf/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Thai Text Classification Example by PyThaiNLP&lt;br&gt;
&lt;a href="https://github.com/PyThaiNLP/tutorials" rel="noopener noreferrer"&gt;https://github.com/PyThaiNLP/tutorials&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Kaggle: Natural Language Processing (Text Classification Tutorial)&lt;br&gt;
&lt;a href="https://www.kaggle.com/learn/natural-language-processing" rel="noopener noreferrer"&gt;https://www.kaggle.com/learn/natural-language-processing&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
  </channel>
</rss>
