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

คำอธิบายของรหัส

  1. Wordnet เป็นคลังข้อมูล ดังนั้นจึงนำเข้าจาก ntlk.corpus
  2. รายการคำพ้องความหมายและคำตรงข้ามจะว่างเปล่าซึ่งจะนำไปใช้ต่อท้าย
  3. คำพ้องของคำว่า active จะถูกค้นหาใน synset ของโมดูลและผนวกเข้ากับคำพ้องความหมายของรายการ กระบวนการเดียวกันนี้ซ้ำแล้วซ้ำอีกในขั้นตอนที่สอง
  4. มีการพิมพ์เอาท์พุต

สรุป

WordNet เป็นฐานข้อมูลคำศัพท์ที่ผู้ใช้หลักใช้ เครื่องมือค้นหา- จาก WordNet ข้อมูลเกี่ยวกับคำหรือวลีที่กำหนดสามารถคำนวณได้ เช่น

  • คำพ้องความหมาย (คำที่มีความหมายเหมือนกัน)
  • คำพ้องความหมาย (คำทั่วไปที่ใช้เพื่อระบุประเภทเฉพาะ (เช่น มื้ออาหารคืออาหารเช้า) คำสะกดจิต (ข้าวคืออาหาร)
  • คำพ้องเสียง (โปรตีน คาร์โบไฮเดรตเป็นส่วนหนึ่งของมื้ออาหาร)
  • meronyms (มื้ออาหารเป็นส่วนหนึ่งของการบริโภคอาหารประจำวัน)

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

  1. คำนาม
  2. คำกริยา
  3. คำคุณศัพท์
  4. คำวิเศษณ์

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

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

จดหมายข่าว Guru99 รายวัน

เริ่มต้นวันใหม่ของคุณด้วยข่าวสาร AI ล่าสุดและสำคัญที่สุดที่ส่งมอบทันที