ในปัจจุบันข้อมูลที่ไม่มีโครงสร้าง (Unstructured Data) มีจำนวนมากขึ้น เช่น รูปภาพใน Facebook หรือ Instagram (IG) หรือ ข้อความต่างๆ ไม่ว่าจะเป็นในเว็บไซต์หรือ Twitter แต่ข้อมูลเหล่านี้ยังไม่สามารถนำไปใช้วิเคราะห์ได้โดยตรงเนื่องจากไม่ได้อยู่ในรูปแบบของตาราง ดังนั้นจึงต้องมีขั้นตอนในการแปลงข้อความเหล่านี้ให้เป็นตารางเสียก่อน ในบทความนี้จะอธิบายวิธีการแปลงข้อความให้เป็นตาราง โดยมีขั้นตอนโดยสรุปดังนี้

  • Tokenize เป็นขั้นตอนการตัดข้อความหรือประโยคออกเป็นคำ (word)
  • Normalizationเป็นขั้นตอนการปรับรูปแบบของคำให้เหมือนกัน เช่น การแปลงให้เป็นตัวอักษรตัวเล็กทั้งหมด
  • Stemmingเป็นขั้นตอนการตัดส่วนท้ายของคำที่เพิ่มเข้าไปออก เช่น ตัด -ing
  • Remove Stop Wordsเป็นขั้นตอนการลบคำที่เป็น stop word เช่น a, and, the ทิ้งไป
  • Part Of Speech Taggingเป็นขั้นตอนการหาประเภทของคำ เช่น คำนาม (noun) คำกริยา (verb)

ตัวอย่างขั้นตอนการแปลงข้อความมีดังนี้

  • Tokenize เป็นขั้นตอนการตัดข้อความหรือประโยคออกเป็นคำ (word) โดยจากตัวอย่างจะเห็นประโยค์ที่ว่า “Just watched first episode of Squid Game” ซึ่งจะถูกแยกออกมาด้วยเครื่องหมายเว้นวรรคได้ออกมาเป็นคำต่างๆ  ได้แก่
    • Just
    • watched
    • first
    • episode
    • of
    • Squid Game
  • Normalization เป็นขั้นตอนการปรับรูปแบบของคำให้เหมือนกัน เช่น การแปลงให้เป็นตัวอักษรตัวเล็กทั้งหมด ซึ่งจากตัวอย่างจะเห็นว่าคำว่า Just จะแปลงเป็น just และ Squid จะแปลงเป็น squid ซึ่งเป็นตัวอักษรตัวเล็กทั้งหมด
  • Stemming เป็นขั้นตอนการแปลงตัดส่วนท้ายของคำให้เป็นคำแรกเริ่ม เนื่องจากภาษาอังกฤษจะมีการเปลี่ยนรูปแบบของคำไปตาม tense ต่างๆ เช่น มีการเติม -ing หรือ -ed เข้าไป ซึ่งทำให้พบคำเดียวกันที่เขียนต่างกัน เช่น คำว่า watching และ watched ซึ่งเป็นคำเดียวกัน จากตัวอย่างคำก่อนหน้าจะมีการ ตัด -ed ออกจากคำว่า watched เหลือเป็นคำว่า watch
  • Remove Stop Words เป็นขั้นตอนการลบคำที่เป็น stop word เช่น a, and, the ทิ้งไป จากขั้นตอนก่อนหน้าจะมี stop word อยู่ 3 คำ คือ คำว่า just, first และ of โดยรายการคำต่างๆ ที่เป็น stop word ดูได้จาก https://gist.github.com/sebleier/554280
  • Part Of Speech (POS) Tagging เป็นขั้นตอนการหาประเภทของคำ เช่น คำนาม (noun) คำกริยา (verb) และจะเลือกเฉพาะคำที่เป็นประเภทที่เราต้องการ จากในตัวอย่างจะเห็นได้ว่าถ้าสนใจแค่คำนาม (Noun) จะเหลือเฉพาะคำว่า episod, squid และ game ซึ่งขั้นตอนนี้อาจจะมีหรือไม่มีก็ได้ ตัวอย่างของ POS Tag แสดงในตารางด้านล่าง และสามารถดู POS Tag ทั้งหมดได้ที่ https://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html
TagDescription
DTDeterminer
INPreposition or subordinating conjunction
JJAdjective
NNNoun, singular or mass
NNSNoun, plural
NNPProper noun, singular
NNPSProper noun, plural
RBAdverb
RBRAdverb, comparative
RBSAdverb, superlative
VBVerb, base form
VBDVerb, past tense

หลังจากที่ได้คำที่เกิดขึ้นในข้อความต่างๆ แล้วขั้นตอนถัดไปต้องแปลงข้อความเหล่านี้ให้อยู่ในรูปแบบของตารางเสียก่อน ซึ่งตารางนี้คือ ตาราง ABT (Analytical Base Table) ซึ่งประกอบด้วยแถว (row) และ คอลัมน์ (column) โดยที่

  • แถว จะเป็นแต่ละเอกสารหรือแต่ละข้อความ เช่น ข้อความจาก Twitter.com
  • คอลัมน์ จะเป็นคำต่างๆ ที่ตัดแยกออกมาได้ในขั้นตอนก่อนหน้า

โดยแต่ละเซลล์ (cell) ในตาราง ABT จะเป็นการแสดงค่าความสำคัญของคำนั้นๆ ซึ่งสามารถแสดงได้หลายรูปแบบ เช่น

  • Binary Occurrence เป็นการแสดงค่า 0 (ไม่พบ) หรือ 1 (พบ) สำหรับแต่ละคำ ตัวอย่างในตารางจะมีข้อความ (text) อยู่ด้านขวาสุด และแต่ละคอลัมน์คือคำที่เกิดขึ้นในข้อความทั้งหมด เมื่อพิจารณาที่ข้อความแรก (Donut Baker) จะพบว่ามีคำว่า Donut และ Baker จึงใส่ 1 คอลัมน์ที่มีคำว่า donut และ baker ส่วนคอลัมน์อื่นๆ จะแสดงค่าเป็น 0 เนื่องจากไม่มีคำนั้นเกิดขึ้นในข้อความทางด้านซ้ายมือ
  • Term Occurrence เป็นการแสดงจำนวนคำ (occurence) ที่เกิดขึ้นในข้อความ/เอกสารซึ่งจะต่างจาก Binary Occurance ที่แสดงว่าเกิดหรือไม่เกิด แต่ Term Occurance จะแสดงเป็นจำนวนคำที่พบในข้อความเลย จากตัวอย่างในตารางจะเห็นว่าข้อความในแถวที่ 3 (Donut Donut) มีคำว่า Donut เกิดขึ้น 2 ครั้ง ดังนั้นในคอลัมน์ donut จึงมีค่าเท่ากับ 2
  • Term Frequency (TF) เป็นการแสดงความถี่ (frequency)ของคำที่ทำการ normalize โดยอาจจะทำการ normalize โดยหารจำนวนคำที่อยู่ในข้อความ เช่น ในตารางจะเห็นว่าข้อความในแถวแรก (Donut Baker) มีคำว่า Donut และ Baker จึงคำนวนค่า Term Frequency ออกมาได้เป็น
    • TF ของคำว่า Donut เท่ากับ 1/2 = 0.5 เนื่องจากมีคำว่า Donut 1 คำและในข้อความมีทั้งหมด 2 คำ
    • TF ของคำว่า Baker เท่ากับ 1/2 = 0.5 เนื่องจากมีคำว่า Baker 1 คำและในข้อความมีทั้งหมด 2 คำ
  • Term Frequency x Inverse Document Frequency (TF-IDF) เป็นการแสดงความสำคัญของแต่ละคำ โดยพิจารณาการเกิดคำในเอกสารทั้งหมดร่วมด้วย โดยคำนวณได้ตามสมการ
    • TF-IDF = TF x log (N/nt)  โดยที่ nt = |{d ∈ D : t ∈ d}| นั่นคือจำนวนเอกสารที่มีคำนั้นปรากฏอยู่
    • ในตารางจะเห็นว่าข้อความในแถวแรก (Donut Baker) มีคำว่า Donut และ Baker และคำนวนค่า TF และ IDF คำนวณได้ดังนี้
      • TF ของคำว่า Donut เท่ากับ 1/2 = 0.5 เนื่องจากมีคำว่า Donut 1 คำและในข้อความมีทั้งหมด 2 คำ
      • IDF ของคำว่า Donut เท่ากับ log(6/2) = 0.48 เนื่องจากมีทั้งหมด 6 ข้อความแต่มีคำว่า Donut อยู่แค่ 2 ข้อความคือ ข้อความที่ 1 และ 3
      • TF x IDF ของคำว่า Donut เท่ากับ 0.5 x 0.48 = 0.24

บทความนี้เป็นตัวอย่างหนี่งในการอบรม Practical Data Preparation and Feature Engineering for Data Analytics and Machine Learning (Workshop with RapidMiner Studio & AI Hub) ซึ่งจะเน้นการเตรียมข้อมูลต่างๆ ก่อนจะนำไปวิเคราะห์ต่อในด้านต่างๆ เช่น Machine Learning