Gensim - เอกสาร & Corpus

ที่นี่เราจะเรียนรู้เกี่ยวกับแนวคิดหลักของ Gensim โดยเน้นที่เอกสารและคลังข้อมูลเป็นหลัก

แนวคิดหลักของ Gensim

ต่อไปนี้เป็นแนวคิดหลักและคำศัพท์ที่จำเป็นในการทำความเข้าใจและใช้ Gensim -

  • Document - ZIt หมายถึงข้อความบางส่วน

  • Corpus - หมายถึงชุดเอกสาร

  • Vector - การแสดงเอกสารทางคณิตศาสตร์เรียกว่าเวกเตอร์

  • Model - มันหมายถึงอัลกอริทึมที่ใช้สำหรับการเปลี่ยนเวกเตอร์จากการแทนค่าหนึ่งไปยังอีก

เอกสารคืออะไร?

ตามที่กล่าวไว้นั้นหมายถึงข้อความบางส่วน หากเราดูรายละเอียดบางอย่างมันเป็นวัตถุประเภทลำดับข้อความซึ่งเรียกว่า‘str’ ใน Python 3 ตัวอย่างเช่นใน Gensim เอกสารอาจเป็นอะไรก็ได้เช่น -

  • ทวีตสั้น ๆ 140 ตัวอักษร
  • ย่อหน้าเดียว ได้แก่ บทความหรือบทคัดย่อของงานวิจัย
  • หัวข้อข่าว
  • Book
  • Novel
  • Theses

ลำดับข้อความ

ประเภทลำดับข้อความมักเรียกว่า ‘str’ ใน Python 3 อย่างที่เราทราบกันดีว่าใน Python ข้อมูลที่เป็นข้อความจะถูกจัดการด้วยสตริงหรือมากกว่านั้นโดยเฉพาะ ‘str’วัตถุ สตริงเป็นลำดับที่ไม่เปลี่ยนรูปของจุดรหัส Unicode โดยทั่วไปและสามารถเขียนได้ด้วยวิธีต่อไปนี้ -

  • Single quotes - ตัวอย่างเช่น ‘Hi! How are you?’. ช่วยให้เราสามารถฝังเครื่องหมายคำพูดคู่ได้ด้วย ตัวอย่างเช่น,‘Hi! “How” are you?’

  • Double quotes - ตัวอย่างเช่น "Hi! How are you?". ช่วยให้เราสามารถฝังคำพูดเดี่ยวได้ด้วย ตัวอย่างเช่น,"Hi! 'How' are you?"

  • Triple quotes - สามารถมีได้สามคำพูดเดียวเช่น '''Hi! How are you?'''. หรือสามคำพูดคู่เช่น"""Hi! 'How' are you?"""

ช่องว่างทั้งหมดจะรวมอยู่ในสตริงลิเทอรัล

ตัวอย่าง

ต่อไปนี้เป็นตัวอย่างของเอกสารใน Gensim -

Document = “Tutorialspoint.com is the biggest online tutorials library and it’s all free also”

Corpus คืออะไร?

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

บทบาทของ Corpus ใน Gensim

คลังข้อมูลใน Gensim ทำหน้าที่สองบทบาทต่อไปนี้ -

ทำหน้าที่เป็นข้อมูลสำหรับการฝึกอบรมนางแบบ

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

ทำหน้าที่เป็นตัวแยกหัวข้อ

เมื่อแบบจำลองได้รับการฝึกอบรมแล้วจะสามารถใช้เพื่อแยกหัวข้อจากเอกสารใหม่ได้ เอกสารใหม่เป็นเอกสารที่ไม่ได้ใช้ในขั้นตอนการฝึกอบรม

ตัวอย่าง

คลังข้อมูลสามารถรวมทวีตทั้งหมดโดยบุคคลใดบุคคลหนึ่งรายการบทความทั้งหมดในหนังสือพิมพ์หรือเอกสารการวิจัยทั้งหมดในหัวข้อใดหัวข้อหนึ่งเป็นต้น

การรวบรวม Corpus

ต่อไปนี้เป็นตัวอย่างคลังข้อมูลขนาดเล็กที่มีเอกสาร 5 ชุด ที่นี่เอกสารทุกฉบับเป็นสตริงที่ประกอบด้วยประโยคเดียว

t_corpus = [
   "A survey of user opinion of computer system response time",
   "Relation of user perceived response time to error measurement",
   "The generation of random binary unordered trees",
   "The intersection graph of paths in trees",
   "Graph minors IV Widths of trees and well quasi ordering",
]

การประมวลผลก่อนการรวบรวมคอร์ปัส

เมื่อเรารวบรวมคลังข้อมูลแล้วควรดำเนินการขั้นตอนก่อนการประมวลผลสองสามขั้นตอนเพื่อให้คลังข้อมูลง่ายขึ้น เราสามารถลบคำศัพท์ภาษาอังกฤษที่ใช้บ่อยเช่น 'the' นอกจากนี้เรายังสามารถลบคำที่เกิดขึ้นเพียงครั้งเดียวในคลังข้อมูล

ตัวอย่างเช่นสคริปต์ Python ต่อไปนี้ใช้เพื่อตัวพิมพ์เล็กแต่ละเอกสารแบ่งตามช่องว่างและกรองคำหยุด -

ตัวอย่าง

import pprint
t_corpus = [
   "A survey of user opinion of computer system response time", 
   "Relation of user perceived response time to error measurement", 
   "The generation of random binary unordered trees", 
   "The intersection graph of paths in trees", 
   "Graph minors IV Widths of trees and well quasi ordering",
]
stoplist = set('for a of the and to in'.split(' '))
processed_corpus = [[word for word in document.lower().split() if word not in stoplist]
   for document in t_corpus]
	
pprint.pprint(processed_corpus)
]

เอาต์พุต

[['survey', 'user', 'opinion', 'computer', 'system', 'response', 'time'],
['relation', 'user', 'perceived', 'response', 'time', 'error', 'measurement'],
['generation', 'random', 'binary', 'unordered', 'trees'],
['intersection', 'graph', 'paths', 'trees'],
['graph', 'minors', 'iv', 'widths', 'trees', 'well', 'quasi', 'ordering']]

Preprocessing ที่มีประสิทธิภาพ

Gensim ยังมีฟังก์ชันสำหรับการประมวลผลก่อนการประมวลผลของคลังข้อมูลที่มีประสิทธิภาพมากขึ้น ในการประมวลผลล่วงหน้าประเภทนี้เราสามารถแปลงเอกสารเป็นรายการโทเค็นตัวพิมพ์เล็ก นอกจากนี้เรายังสามารถละเว้นโทเค็นที่สั้นหรือยาวเกินไปได้ ฟังก์ชันดังกล่าวคือgensim.utils.simple_preprocess(doc, deacc=False, min_len=2, max_len=15).

gensim.utils.simple_preprocess() fucntion

Gensim จัดเตรียมฟังก์ชันนี้เพื่อแปลงเอกสารเป็นรายการโทเค็นตัวพิมพ์เล็กและสำหรับการละเว้นโทเค็นที่สั้นหรือยาวเกินไป มีพารามิเตอร์ดังต่อไปนี้ -

เอกสาร (str)

หมายถึงเอกสารอินพุตที่ควรใช้การประมวลผลล่วงหน้า

deacc (บูลตัวเลือก)

พารามิเตอร์นี้ใช้เพื่อลบเครื่องหมายเน้นเสียงออกจากโทเค็น มันใช้deaccent() เพื่อทำสิ่งนี้.

min_len (int, ไม่บังคับ)

ด้วยความช่วยเหลือของพารามิเตอร์นี้เราสามารถกำหนดความยาวขั้นต่ำของโทเค็นได้ โทเค็นที่สั้นกว่าความยาวที่กำหนดจะถูกทิ้ง

max_len (int ทางเลือก)

ด้วยความช่วยเหลือของพารามิเตอร์นี้เราสามารถตั้งค่าความยาวสูงสุดของโทเค็นได้ โทเค็นที่ยาวเกินกว่าที่กำหนดไว้จะถูกทิ้ง

ผลลัพธ์ของฟังก์ชันนี้จะเป็นโทเค็นที่ดึงมาจากเอกสารอินพุต