Co to jest Wordnet?
Wordnet to czytnik korpusów NLTK, leksykalna baza danych dla języka angielskiego. Można go użyć do znalezienia znaczenia słów, synonimu lub antonimu. Można go określić jako zorientowany semantycznie słownik języka angielskiego. Jest importowany za pomocą następującego polecenia:
from nltk.corpus import wordnet as guru
Statystyki pokazują, że angielski WordNet zawiera 155287 słów i 117659 zestawów synonimów .
Różne metody dostępne w WordNet można znaleźć wpisując dir (guru)
['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class__', '__delat_form', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class__', '__delat_form,' ___dict ',' __delat_form, '___dict' __ge__ ',' __getattr__ ',' __getattribute__ ',' __gt__ ',' __hash__ ',' __init__ ',' __le__ ',' __lt__ ',' __module__ ',' __name__ ',' __ne__ ',' __init__ ',' __le__ ',' __lt__ ',' __module__ ',' __name__ ',' __ne__ ',' __newred__ ', , '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_unload', 'subdir', 'unicode_repr']
Pozwól nam zrozumieć niektóre funkcje dostępne w wordnet:
Zestaw synonimów : jest również nazywany zestawem synonimów lub zbiorem słów synonimów. Zobaczmy przykład
from nltk.corpus import wordnetsyns = wordnet.synsets("dog")print(syns)
Wynik:
[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')]
Relacje leksykalne : są to relacje semantyczne, które są odwzajemnione. Jeśli istnieje związek między {x1, x2,… xn} a {y1, y2,… yn}, to istnieje również związek między {y1, y2,… yn} a {x1, x2,… xn}. Na przykład synonim jest przeciwieństwem antonimu lub hiperonimów, a hiponim to rodzaj pojęcia leksykalnego.
Napiszmy program używający Pythona do znajdowania synonimu i antonimu słowa „aktywny” za pomocą Wordnetu.
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))
Wyjście kodu:
{'dynamiczny', 'walczący', 'gotowy do walki', 'głos_aktywny', 'aktywny_agent', 'uczestniczący', 'żywy', 'aktywny'} - synonim
{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} - antonim
Wyjaśnienie kodu
- Wordnet jest korpusem, więc jest importowany z ntlk.corpus
- Lista synonimów i antonimów jest pusta, która zostanie użyta do dołączenia
- Synonimy słowa „aktywny” są wyszukiwane w zestawieniach modułów i dołączane do listy synonimów. Ten sam proces powtarza się przy drugim.
- Wydruk jest wydrukowany
Wniosek:
WordNet to leksykalna baza danych używana przez dużą wyszukiwarkę. Z WordNet można obliczyć informacje o danym słowie lub frazie, np
- synonim (słowa o tym samym znaczeniu)
- hypernyms (ogólny termin używany do określenia klasy specyfików (tj. posiłek to śniadanie), hiponimy (ryż to posiłek)
- holonimy (białka, węglowodany są częścią posiłku)
- meronimy (posiłek jest częścią dziennego spożycia pokarmu)
WordNet dostarcza również informacji o terminach współrzędnych, pochodnych, zmysłach i nie tylko. Służy do znajdowania podobieństw między dowolnymi dwoma słowami. Zawiera również informacje o wynikach pokrewnego słowa. Krótko mówiąc, można go traktować jako słownik lub tezaurus. Idąc głębiej w wordnet, jest on podzielony na cztery całkowite podsieci, takie jak
- Rzeczownik
- Czasownik
- Przymiotnik
- Przysłówek
Może być stosowany w obszarze sztucznej inteligencji do analizy tekstu. Z pomocą Wordnetu możesz stworzyć swój korpus do sprawdzania pisowni, tłumaczenia językowego, wykrywania spamu i wielu innych.
W ten sam sposób możesz użyć tego korpusu i uformować go do pracy z pewną dynamiczną funkcjonalnością. To jest jak gotowy korpus dla Ciebie. Możesz to wykorzystać na swój sposób.