NLTK WordNet: ค้นหาคำพ้องจาก NLTK WordNet ใน Python
เวิร์ดเน็ตคืออะไร?
Wordnet คือโปรแกรมอ่านข้อมูลแบบ NLTK ซึ่งเป็นฐานข้อมูลคำศัพท์ภาษาอังกฤษ โปรแกรมนี้สามารถใช้ค้นหาความหมายของคำ คำพ้องความหมาย หรือคำตรงข้าม โดยสามารถกำหนดให้เป็นพจนานุกรมภาษาอังกฤษที่เน้นความหมาย โดยสามารถนำเข้าข้อมูลได้โดยใช้คำสั่งต่อไปนี้:
from nltk.corpus import wordnet as guru
ค้นหาคำพ้องความหมายจาก NLTK WordNet ใน Python
สถิติเผยว่ามี 155287 คำและ 117659 คำพ้องความหมาย ชุดที่มาพร้อมกับ English WordNet
วิธีการต่างๆ ที่สามารถใช้ได้กับ WordNet สามารถพบได้โดยการพิมพ์ dir(guru)
['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__รูปแบบ__', ' __ge__', '__getattr__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__โมดูล__', '__name__', '__ne__', '__new__', '__ลด__' , '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_unload', 'subdir', 'unicode_repr']
ให้เราเข้าใจคุณสมบัติบางอย่างที่มีใน wordnet:
ซินเซ็ต: เรียกอีกอย่างว่าชุดคำพ้องความหมายหรือชุดคำพ้องความหมาย ให้เราตรวจสอบตัวอย่าง
from nltk.corpus import wordnet syns = wordnet.synsets("dog") print(syns)
Output:
[Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n.01'), Synset('frank.n.02'), Synset('pawl.n.01'), Synset('andiron.n.01'), Synset('chase.v.01')]
ความสัมพันธ์ทางคำศัพท์: สิ่งเหล่านี้คือความสัมพันธ์เชิงความหมายซึ่งตอบสนองซึ่งกันและกัน หากมีความสัมพันธ์ระหว่าง {x1,x2,…xn} และ {y1,y2,…yn} ก็มีความสัมพันธ์ระหว่าง {y1,y2,…yn} และ {x1,x2,…xn} ด้วย ตัวอย่างเช่น คำพ้องความหมาย เป็นสิ่งที่ตรงกันข้ามกับคำตรงข้ามหรือคำที่มีความหมายเกินจริง และคำสะกดจิตเป็นประเภทของแนวคิดเกี่ยวกับคำศัพท์
ให้เราเขียนโปรแกรมโดยใช้ หลาม เพื่อค้นหาคำพ้องและคำตรงข้ามของคำว่า "ใช้งานอยู่" โดยใช้ Wordnet
from nltk.corpus import wordnet synonyms = [] antonyms = [] for syn in wordnet.synsets("active"): for l in syn.lemmas(): synonyms.append(l.name()) if l.antonyms(): antonyms.append(l.antonyms()[0].name()) print(set(synonyms)) print(set(antonyms))
ผลลัพธ์ของรหัส:
{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} — คำพ้องความหมาย
{'stative', 'passive', 'เงียบ', 'passive_voice', 'สูญพันธุ์', 'อยู่เฉยๆ', 'ไม่ได้ใช้งาน'} - คำตรงข้าม
คำอธิบายของรหัส
- Wordnet เป็นคลังข้อมูล ดังนั้นจึงนำเข้าจาก ntlk.corpus
- รายการคำพ้องความหมายและคำตรงข้ามจะว่างเปล่าซึ่งจะนำไปใช้ต่อท้าย
- คำพ้องของคำว่า active จะถูกค้นหาใน synset ของโมดูลและผนวกเข้ากับคำพ้องความหมายของรายการ กระบวนการเดียวกันนี้ซ้ำแล้วซ้ำอีกในขั้นตอนที่สอง
- มีการพิมพ์เอาท์พุต
สรุป
WordNet เป็นฐานข้อมูลคำศัพท์ที่ผู้ใช้หลักใช้ เครื่องมือค้นหา- จาก WordNet ข้อมูลเกี่ยวกับคำหรือวลีที่กำหนดสามารถคำนวณได้ เช่น
- คำพ้องความหมาย (คำที่มีความหมายเหมือนกัน)
- คำพ้องความหมาย (คำทั่วไปที่ใช้เพื่อระบุประเภทเฉพาะ (เช่น มื้ออาหารคืออาหารเช้า) คำสะกดจิต (ข้าวคืออาหาร)
- คำพ้องเสียง (โปรตีน คาร์โบไฮเดรตเป็นส่วนหนึ่งของมื้ออาหาร)
- meronyms (มื้ออาหารเป็นส่วนหนึ่งของการบริโภคอาหารประจำวัน)
WordNet ยังให้ข้อมูลเกี่ยวกับเงื่อนไขการประสานงาน อนุพันธ์ ความรู้สึก และอื่นๆ อีกมากมาย ใช้เพื่อค้นหาความคล้ายคลึงกันระหว่างคำสองคำใดๆ อีกทั้งยังเก็บข้อมูลผลลัพธ์ของคำที่เกี่ยวข้องด้วย กล่าวโดยย่อหรือสรุปก็คือสามารถถือเป็นพจนานุกรมหรืออรรถาภิธานได้ เมื่อเจาะลึกเข้าไปใน wordnet จะแบ่งออกเป็นเครือข่ายย่อยทั้งหมดสี่เครือข่ายเช่น
- คำนาม
- คำกริยา
- คำคุณศัพท์
- คำวิเศษณ์
สามารถใช้ในด้านปัญญาประดิษฐ์เพื่อการวิเคราะห์ข้อความได้ ด้วยความช่วยเหลือของ Wordnet คุณสามารถสร้างคลังข้อมูลสำหรับการตรวจตัวสะกด การแปลภาษา การตรวจจับสแปม และอื่นๆ อีกมากมาย
ในทำนองเดียวกัน คุณสามารถใช้คลังข้อมูลนี้และปั้นมันให้ทำงานฟังก์ชันไดนามิกบางอย่างได้ นี่ก็เหมือนกับพร้อมที่จะสร้างคลังข้อมูลให้กับคุณ คุณสามารถใช้มันในแบบของคุณ