„WordNet“ su NLTK: „Python“ žodžių sinonimų paieška

Kas yra „Wordnet“?

„Wordnet“ yra NLTK korpuso skaitytuvas, leksinė anglų kalbos duomenų bazė. Jis gali būti naudojamas ieškant žodžių, sinonimų ar antonimų reikšmės. Galima apibrėžti kaip semantiškai orientuotą anglų kalbos žodyną. Jis importuojamas su šia komanda:

from nltk.corpus import wordnet as guru

Statistika atskleidžia, kad su anglišku „WordNet“ yra 155287 žodžių ir 117659 sinonimų rinkiniai.

Įvairius „WordNet“ metodus galite rasti įvesdami „dir“ („guru“)

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class______________________________________________________________________________________________________________________________d___________d_______d__________________________del __ge__ ',' __getattr__ ',' __getattribute__ ',' __gt__ ',' __hash__ ',' __init__ ',' __le__ ',' __lt__ ',' __module__ ',' __name__ ',' __ne__ ',' __new__ ',' __redru , '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_unload', 'subdir', 'unicode_repr']

Supraskime kai kurias „Wordnet“ funkcijas:

Sinetetas : jis taip pat vadinamas sinonimų rinkiniu arba sinonimų žodžių rinkiniu. Patikrinkime pavyzdį

from nltk.corpus import wordnetsyns = wordnet.synsets("dog")print(syns)

Išvestis:

[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')]

Leksiniai santykiai : tai prasminiai santykiai, kurie yra abipusiai. Jei yra ryšys tarp {x1, x2,… xn} ir {y1, y2, ... yn}, tai yra santykis ir tarp {y1, y2, ... yn} ir {x1, x2, ... xn}. Pvz., Sinonimas yra priešingas antonimui arba hipernimai, o hiponimas yra leksinės sąvokos tipas.

Parašykime programą naudodami „python“, kad rastume žodžio „aktyvus“ sinonimą ir antonimą naudojant „Wordnet“.

from nltk.corpus import wordnetsynonyms = []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))

Kodo išvestis:

{'dynamic', 'kova', 'ready-fight', 'active_voice', 'active_agent', 'dalyvaujantis', 'gyvas', 'aktyvus'} - sinonimas

{'stative', 'pasyvus', 'tylus', 'passive_voice', 'išnykęs', 'neveikiantis', 'neaktyvus'} - Antonym

Kodo paaiškinimas

  1. „Wordnet“ yra korpusas, todėl jis yra importuojamas iš ntlk.corpus
  2. Sinonimų ir antonimų sąrašas laikomas tuščiu, kuris bus naudojamas pridedant
  3. Žodžio aktyvūs sinonimai ieškomi modulio sinetruose ir pridedami prie sąrašo sinonimų. Tas pats procesas kartojamas ir antrajam.
  4. Išvestis atspausdinta

Išvada:

„WordNet“ yra leksinė duomenų bazė, kurią naudojo pagrindinė paieškos sistema. Iš „WordNet“ informaciją apie tam tikrą žodį ar frazę galima apskaičiuoti, pvz

  • sinonimas (žodžiai, turintys tą pačią reikšmę)
  • hipermenai (bendrinis terminas, vartojamas apibūdinti specifikos klasę (ty valgis yra pusryčiai), hiponimai (ryžiai yra valgis)
  • holonimai (baltymai, angliavandeniai yra valgio dalis)
  • meronimai (valgis yra dienos maisto dalis)

„WordNet“ taip pat teikia informaciją apie derinimo terminus, darinius, jutimus ir dar daugiau. Jis naudojamas norint rasti bet kurių dviejų žodžių panašumus. Jame taip pat saugoma informacija apie susijusio žodžio rezultatus. Trumpai tariant, trumpai tariant, galima traktuoti kaip žodyną ar tezaurą. Gilinantis į wordnet, jis yra padalintas į keturis bendruosius potinklius, tokius kaip

  1. Daiktavardis
  2. Veiksmažodis
  3. Būdvardis
  4. Prieveiksmis

Jis gali būti naudojamas dirbtinio intelekto srityje teksto analizei. Naudodamiesi „Wordnet“ galite sukurti savo korpusą rašybos tikrinimui, kalbos vertimui, šlamšto aptikimui ir daugeliui kitų.

Tokiu pačiu būdu galite naudoti šį korpusą ir suformuoti jį tam, kad veiktų tam tikras dinaminis funkcionalumas. Tai yra kaip paruoštas korpusas jums. Galite tai naudoti savo keliu.

Įdomios straipsniai...