สกัดใจความสำคัญของข้อความด้วยเทคนิคการประมวลผลทางภาษาเบื้องต้น: TF-IDF, Part 1

สกัดใจความสำคัญของข้อความด้วยเทคนิคการประมวลผลทางภาษาเบื้องต้น: TF-IDF, Part 1

01 ตุลาคม 2563

ในยุคปัจจุบัน ข้อมูลที่เราสามารถนำมาใช้ประโยชน์ได้มีอยู่ปริมาณมหาศาลจากหลากหลายแหล่งที่มา ไม่ว่าจะเป็นข้อมูลที่ถูกเก็บภายในองค์กร ข้อมูลที่ถูกเก็บจากเซนเซอร์ หรือข้อมูลที่มาจากอินเทอร์เน็ต ในบรรดาข้อมูลหลากหลายรูปแบบเหล่านี้ ข้อมูลที่มีลักษณะเป็นข้อความถือเป็นข้อมูลชนิดหนึ่งที่มีอยู่เป็นจำนวนมาก โดยเฉพาะข้อมูลจากสื่อสังคมออนไลน์ต่างๆ ไม่ว่าจะเป็นเว็บไซต์หรือโซเชียลมีเดีย ถ้าหากเราสามารถนำข้อมูลประเภทนี้มาวิเคราะห์เพื่อใช้งานจะสามารถก่อให้เกิดประโยชน์ได้อย่างมหาศาล

จุดสำคัญหนึ่งที่ทำให้ข้อมูลชนิดข้อความแตกต่างจากข้อมูลที่มีโครงสร้างอย่างชัดเจน (เช่น ข้อมูลที่ถูกเก็บในฐานข้อมูล) นั้น คือข้อมูลในรูปแบบข้อความมีรูปแบบและความยาวที่หลากหลาย ส่งผลให้ข้อมูลชนิดข้อความถูกนำมาวิเคราะห์ได้ยากกว่ามาก ดังนั้นความสามารถในการสกัดเอาข้อมูลที่สำคัญออกมาจากจากข้อความ (Text Mining) ได้จึงเป็นสิ่งที่สำคัญและเป็นประโยชน์อย่างมาก ในบทความนี้เราจะพูดถึงเทคนิคพื้นฐานเทคนิคหนึ่งที่ใช้ในการวิเคราะห์ค้นหาคำสำคัญของข้อมูลในลักษณะของข้อความที่ชื่อว่า Term Frequency – Inverse Document Frequency (TF-IDF).

Term Frequency – Inverse Document Frequency เป็นเทคนิคที่พิจารณาองค์ประกอบของคำภายในประโยค (และเอกสาร) เป็นหลักโดยจะไม่นำลำดับของคำภายในเอกสารมาใช้วิเคราะห์ประกอบด้วย

เทคนิคนี้มีอยู่ 2 องค์ประกอบด้วยกันคือ Term Frequency (TF) และ Inverse document Frequency (IDF) ซึ่งมีที่มาจากสองไอเดียหลักๆ ต่อไปนี้
* การคำนวณค่าของทั้ง TF และ IDF นั้น มีหลายรูปแบบ สิ่งที่เลือกมานำเสนอ ณ ที่นี้จะเป็นรูปแบบพื้นฐานของทั้งสองค่า (แต่การคำนวณในรูปแบบอื่นๆนั้นก็จะมีลักษณะคล้ายคลึงกัน)


Term-Frequency (TF)

ไอเดียแรกคือ “ถ้าหากคำคำไหนถูกพูดถึงอยู่บ่อยๆ ในเอกสารนั้นๆ จะมีความเป็นไปได้สูงว่าคำนั้นมีความเกี่ยวข้องกับใจความสำคัญของเอกสารนั้นๆ มาก” เช่น ถ้าหากเราเลือกที่จะพิจารณาบทความเกี่ยวกับกาแฟ เราอาจจะเห็นคำว่า “กาแฟ” และ “ชง” หลายครั้งภายในบทความนั้น ค่าของ Term Frequency เป็นค่าที่บอกความถี่ของคำแต่ละคำที่ปรากฏในเอกสารเอกสารหนึ่ง โดยคิดคำนวณจากการนำจำนวนครั้งที่คำนั้นๆ ปรากฏในเอกสารมาหารด้วยจำนวนคำทั้งหมดในเอกสาร

เพื่อแสดงการตัวอย่างการคำนวณค่า TF (รวมถึง ค่า IDF และ TF-IDF ในตัวอย่างต่อๆไป)  เราจะใช้เอกสาร 2 เอกสารด้านล่างซึ่งแต่ละเอกสารจะมีเพียงประโยคเดียวเท่านั้น

  • เอกสารที่ 1: A nose print of a dog is unique the same way fingerprints of a human being are unique.
  • เอกสารที่ 2: A human nose has five million scent receptors, while  a dog nose has up to three hundred million receptors.

เนื่องจากเอกสารที่ 1 ประกอบด้วยคำทั้งหมด 18 คำ ดังนั้นเราสามารถคำนวณค่า Term Frequency  ของคำแต่ละคำได้ดังต่อไปนี้

คำจำนวนคำTerm-Frequency (TF)
a33/18
nose11/18
print11/18
of22/18
dog11/18
is11/18
unique22/18
the11/18
same11/18
way11/18
fingerprints11/18
human11/18
being11/18
are11/18
ค่า Term Frequency ของคำในเอกสารที่ 1

สำหรับเอกสารที่ 2 (ประกอบด้วยคำทั้งหมด 19 คำ) นั้น เราก็สามารถทำการคำนวณค่า Term Frequency ได้แบบเดียวกัน

อย่างไรก็ตาม การที่ใช้คำที่ปรากฏบ่อยๆ เพียงอย่างเดียวเพื่อหาใจความสำคัญของข้อความนั้นอาจยังไม่ดีพอ ยกตัวอย่างเช่นในกรณีที่เรามีหลายเอกสารในหมวดหมู่เดียวกัน เราต้องการคำที่สามารถแยกแยะเอกสารแต่ละชิ้นออกจากกันได้ด้วย (เช่นในกรณีที่เราต้องการหาใจความสำคัญของบทความเกี่ยวกับปลาทะเล เราคงไม่ต้องการให้คำสำคัญที่สุดของทุกบทความที่หามาได้เป็นคำว่า “ปลา”,”ทะเล” หรือ ”ว่าย” ไปทั้งหมด) ดังนั้นคำที่ถูกเลือกมาว่าเป็นคำที่มีความสำคัญที่สุดต่อความหมายของบทความนั้นควรจะเป็นคำที่ปรากฏอยู่ในเอกสารจำนวนไม่มากในบรรดาเอกสารทั้งหมดที่เรานำมาวิเคราะห์ ความต้องการในจุดนี้ทำให้ไอเดียของ Invert Document Frequency (IDF) ถูกนำมาใช้ในลำดับถัดมา


Inverse Document Frequency (IDF)

IDF เป็นการคำนวณค่าน้ำหนัก (weight) ความสำคัญของแต่ละคำโดยจะคำที่พบเจอได้บ่อยๆ (ในหลายๆเอกสาร) จะมีค่า IDF ต่ำ ซึ่งบ่งบอกว่าคำเหล่านั้นจะไม่สามารถดึงเอาจุดเด่นของเอกสารที่คำเหล่านั้นปรากฏอยู่ออกมาได้ดี ค่า IDF สามารถคำนวณได้ด้วยสมการ

สำหรับตัวอย่างการคำนวณค่า IDF นั้น เราจะใช้ตัวอย่างเอกสารชุดเดียวกับตัวอย่างการคำนวณ ค่า TF ด้านบน

เมื่อพิจารณาเอกสารที่ 1 เราพบว่าคำว่า a, nose, dog, human ปรากฏอยู่ในเอกสารที่ 2 ด้วย ดังนั้นเราจึงสามารถคำนวณค่า IDF ได้ดังต่อไปนี้

[latexpage]คำจำนวนเอกสารที่ปรากฏInverse Document Frequency (IDF)
a2$\log{(\frac{2}{2})} = 0$
nose2$\log{(\frac{2}{2})} = 0$
print1$\log{(\frac{2}{1})} \approx 0.3$
of1$\log{(\frac{2}{1})} \approx 0.3$
dog2$\log{(\frac{2}{2})} = 0$
is1$\log{(\frac{2}{1})} \approx 0.3$
unique1$\log{(\frac{2}{1})} \approx 0.3$
the1$\log{(\frac{2}{1})} \approx 0.3$
same1$\log{(\frac{2}{1})} \approx 0.3$
way1$\log{(\frac{2}{1})} \approx 0.3$
fingerprints1$\log{(\frac{2}{1})} \approx 0.3$
human2$\log{(\frac{2}{2})} = 0$
being1$\log{(\frac{2}{1})} \approx 0.3$
are1$\log{(\frac{2}{1})} \approx 0.3$
ค่า Inverse Document Frequency ของคำในเอกสารที่ 1

เช่นเดียวกับตัวอย่างด้านบน ค่า IDF ของคำในเอกสารที่ 2 ก็สามารถทำการคำนวณได้ด้วยวิธีเดียวกัน


คำนวณค่า TF-IDF

เมื่อนำการคำนวณทั้งสองส่วนมารวมกัน เราจะได้การคำนวณ TF-IDF ดังต่อไปนี้

เพราะฉะนั้นค่า TF-IDF ของแต่ละคำในเอกสารที่ 1 ถูกคำนวณได้ดังต่อไปนี้ได้ดังต่อไปนี้

[latexpage]คำTFIDFTF-IDF = TF$\times$IDF
a3/1800
nose1/1800
print1/180.30.0167
of2/180.30.333
dog1/1800
is1/180.30.0167
unique2/180.30.333
the1/180.30.0167
same1/180.30.0167
way1/180.30.0167
fingerprints1/180.30.167
human1/1800
being1/180.30.0167
are1/180.30.0167
ค่า TF-IDF ของคำในเอกสารที่ 1

และ ของเอกสารที่ 2 ถูกคำนวณได้ดังต่อไปนี้ได้ดังต่อไปนี้

[latexpage]คำTFIDFTF-IDF = TF$\times$IDF
a2/1900
human1/1900
nose2/1900
has2/190.30.0316
five1/190.30.0158
million2/190.30.0316
scent1/190.30.0158
receptors2/190.30.0316
while1/190.30.0158
dog1/1900
up1/190.30.0158
to1/190.30.0158
three1/190.30.0158
hundred1/190.30.0158
ค่า TF-IDF ของคำในเอกสารที่ 2

จากผลลัพธ์ที่ได้จะเห็นว่าคำที่ปรากฏอยู่ในทั้งสองเอกสาร ถึงแม้ว่าจะมีค่า TF ที่สูง เมื่อนำมาคิดค่า TF-IDF แล้วนั้นถูก weight ให้ต่ำลง (ในกรณีนี้ถูกเปลี่ยนเป็น 0) เนื่องจากคำเหล่านี้ไม่สามารถที่จะช่วยแยกแยะใจความสำคัญของข้อความของทั้งสองเอกสารออกจากกันได้ดีเพราะปรากฏอยู่ในทุกเอกสารนั่นเอง คำที่มีค่า TF-IDF สูงของแต่ละเอกสารนั้นจะเป็นคำที่มีความสำคัญสูง (ถูกกล่าวถึงบ่อยที่สุดและไม่ได้ปรากฏอยู่หลายเอกสารเกินไป) และมีแนวโน้มที่จะเป็นใจความสำคัญของเอกสาร

ในตัวอย่างนี้ เราอาจจะเห็นว่ามีความบางคำที่มีค่า TF-IDF สูงแต่ไม่ได้บ่งบอกถึงลักษณะของข้อความในเอกสารเช่นคำว่า of, has, หรือ million ปนอยู่ด้วย อันที่จริงแล้วคำเหล่านี้ถูกจัดว่าเป็น “stop words” ซึ่งเป็นคำที่ปรากฏอยู่ทั่วไปในภาษาอังกฤษและมักไม่สื่อความหมายถึงนัยสำคัญของข้อความ โดยปกติแล้ว คำเหล่านี้มักถูกกรองออกก่อนที่จะมีการนำข้อความมาทำการประมวลผลทางภาษา อย่างไรก็ดีโดยปกติแล้วนั้นต่อให้คำเหล่านี้จะไม่ถูกกรองออกก่อน เนื่องด้วยเรามักจะพบคำเหล่านี้ในเอกสารต่างๆอยู่เสมอ เมื่อนำคำจากเอกสารต่างๆมาคำนวณหาค่า TF-IDF แล้ว คำเหล่านี้ส่วนมากจะถูกค่า IDF ปรับ ให้มีค่าต่ำลงมากจนไม่ปรากฏเป็นคำสำคัญของเอกสารอยู่ดี สาเหตุที่เรายังเห็นคำเหล่านี้มีค่า TF-IDF ที่สูงในตัวอย่างนี้นั้นเกิดมาจากเราทำการพิจารณาเอกสารทั้งหมดเพียงแค่ 2 เอกสาร ซึ่งแต่ละเอกสารมีเพียงแค่ประโยคเดียวเท่านั้น

ในบทความต่อไปเราจะมาทำการเขียนโปรแกรมอย่างง่ายๆเพื่อลองใช้งาน TF-IDF กันดูครับ

Data Scientist Expert at Big Data Institute (BDI)

แบ่งปันบทความ

กลุ่มเนื้อหา

แท็กยอดนิยม

แจ้งเรื่องที่อยากอ่าน

คุณสามารถแจ้งเรื่องที่อยากอ่านให้เราทราบได้ !
และเราจะนำไปพัฒนาบทความให้มีเนื้อหาที่น่าสนใจมากขึ้น

ไอคอน PDPA

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ “นโยบายคุ้กกี้” และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ “ตั้งค่า”

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่มีความจำเป็น (Strictly Necessary Cookies)
    เปิดใช้งานตลอด

    คุกกี้ประเภทนี้มีความจำเป็นต่อการให้บริการเว็บไซต์ของ สำนักงานคณะกรรมการคุ้มครองข้อมูลส่วนบุคคล เพื่อให้ท่านสามารถเข้าใช้งานในส่วนต่าง ๆ ของเว็บไซต์ได้ รวมถึงช่วยจดจำข้อมูลที่ท่านเคยให้ไว้ผ่านเว็บไซต์ การปิดการใช้งานคุกกี้ประเภทนี้จะส่งผลให้ท่านไม่สามารถใช้บริการในสาระสำคัญของ สำนักงานคณะกรรมการคุ้มครองข้อมูลส่วนบุคคล ซึ่งจำเป็นต้องเรียกใช้คุกกี้ได้
    รายละเอียดคุกกี้

  • คุกกี้เพื่อการวิเคราะห์และประเมินผลการใช้งาน (Performance Cookies)

    คุกกี้ประเภทนี้ช่วยให้ BDI ทราบถึงการปฏิสัมพันธ์ของผู้ใช้งานในการใช้บริการเว็บไซต์ของ BDI รวมถึงหน้าเพจหรือพื้นที่ใดของเว็บไซต์ที่ได้รับความนิยม ตลอดจนการวิเคราะห์ข้อมูลด้านอื่น ๆ BDI ยังใช้ข้อมูลนี้เพื่อการปรับปรุงการทำงานของเว็บไซต์ และเพื่อเข้าใจพฤติกรรมของผู้ใช้งานมากขึ้น ถึงแม้ว่า ข้อมูลที่คุกกี้นี้เก็บรวบรวมจะเป็นข้อมูลที่ไม่สามารถระบุตัวตนได้ และนำมาใช้วิเคราะห์ทางสถิติเท่านั้น การปิดการใช้งานคุกกี้ประเภทนี้จะส่งผลให้ BDI ไม่สามารถทราบปริมาณผู้เข้าเยี่ยมชมเว็บไซต์ และไม่สามารถประเมินคุณภาพการให้บริการได้

  • คุกกี้เพื่อการใช้งานเว็บไซต์ (Functional Cookies)

    คุกกี้ประเภทนี้จะช่วยให้เว็บไซต์ของ BDI จดจำตัวเลือกต่าง ๆ ที่ท่านได้ตั้งค่าไว้และช่วยให้เว็บไซต์ส่งมอบคุณสมบัติและเนื้อหาเพิ่มเติมให้ตรงกับการใช้งานของท่านได้ เช่น ช่วยจดจำชื่อบัญชีผู้ใช้งานของท่าน หรือจดจำการเปลี่ยนแปลงการตั้งค่าขนาดฟอนต์หรือการตั้งค่าต่าง ๆ ของหน้าเพจซึ่งท่านสามารถปรับแต่งได้ การปิดการใช้งานคุกกี้ประเภทนี้อาจส่งผลให้เว็บไซต์ไม่สามารถทำงานได้อย่างสมบูรณ์

  • คุกกี้เพื่อการโฆษณาไปยังกลุ่มเป้าหมาย (Targeting Cookies)

    คุกกี้ประเภทนี้เป็นคุกกี้ที่เกิดจากการเชื่อมโยงเว็บไซต์ของบุคคลที่สาม ซึ่งเก็บข้อมูลการเข้าใช้งานและเว็บไซต์ที่ท่านได้เข้าเยี่ยมชม เพื่อนำเสนอสินค้าหรือบริการบนเว็บไซต์อื่นที่ไม่ใช่เว็บไซต์ของ BDI ทั้งนี้ หากท่านปิดการใช้งานคุกกี้ประเภทนี้จะไม่ส่งผลต่อการใช้งานเว็บไซต์ของ BDI แต่จะส่งผลให้การนำเสนอสินค้าหรือบริการบนเว็บไซต์อื่น ๆ ไม่สอดคล้องกับความสนใจของท่าน

บันทึกการตั้งค่า
ไซต์นี้ลงทะเบียนกับ wpml.org ในฐานะไซต์พัฒนา สลับไปยังไซต์การผลิตโดยใช้รหัส remove this banner.