Mam przesunięcie synset WordNet (na przykład id="n#05576222"
). Biorąc pod uwagę to przesunięcie, jak mogę uzyskać synset za pomocą Pythona?Jak uzyskać zestaw synchronizacji WordNet z identyfikatorem przesunięcia?
Odpowiedz
Dla NTLK 3.2.3 lub nowszego, zobacz odpowiedź donners45.
Dla starszych wersjach NLTK:
Nie ma wbudowanej metody w NLTK ale można użyć to:
from nltk.corpus import wordnet
syns = list(wordnet.all_synsets())
offsets_list = [(s.offset(), s) for s in syns]
offsets_dict = dict(offsets_list)
offsets_dict[14204095]
>>> Synset('heatstroke.n.01')
Następnie można pickle słownika i załadować go ilekroć Potrzebujesz tego.
Dla wersji NLTK przed do 3,0, wymienić linię
offsets_list = [(s.offset(), s) for s in syns]
z
offsets_list = [(s.offset, s) for s in syns]
ponieważ przed NLTK 3,0 offset
się atrybut a nie metody.
Poza używaniem NLTK, inną opcją byłoby użycie pliku .tab z Open Multilingual WordNet
http://compling.hss.ntu.edu.sg/omw/ dla WordNet Princeton. Zwykle stosowany przepis poniżej, aby uzyskać dostęp wordnet jak słownik z przesunięciem jako klucz i ;
wyznaczone ciągi jako wartości:
# Gets first instance of matching key given a value and a dictionary.
def getKey(dic, value):
return [k for k,v.split(";") in dic.items() if v in value]
# Read Open Multi WN's .tab file
def readWNfile(wnfile, option="ss"):
reader = codecs.open(wnfile, "r", "utf8").readlines()
wn = {}
for l in reader:
if l[0] == "#": continue
if option=="ss":
k = l.split("\t")[0] #ss as key
v = l.split("\t")[2][:-1] #word
else:
v = l.split("\t")[0] #ss as value
k = l.split("\t")[2][:-1] #word as key
try:
temp = wn[k]
wn[k] = temp + ";" + v
except KeyError:
wn[k] = v
return wn
princetonWN = readWNfile('wn-data-eng.tab')
offset = "n#05576222"
offset = offset.split('#')[1]+'-'+ offset.split('#')[0]
print princetonWN.split(";")
print getKey('heatstroke')
Od NLTK 3.2.3, jest to metoda publiczna na ten sposób:
wordnet.synset_from_pos_and_offset(pos, offset)
We wcześniejszych wersjach można użyć:
wordnet._synset_from_pos_and_offset(pos, offset)
zwraca synset opartą na jego POS i offest ID. Myślę, że ta metoda jest dostępna tylko w NLTK 3.0, ale nie jestem pewien.
Przykład:
from nltk.corpus import wordnet as wn
wn._synset_from_pos_and_offset('n',4543158)
>> Synset('wagon.n.01')
Można użyć of2ss()
, np
from nltk.corpus import wordnet as wn
syn = wn.of2ss('01580050a')
powróci Synset('necessary.a.01')
- 1. Jak programowo uzyskać dostęp do hierarchii WordNet?
- 2. Jak zintegrować "Domeny WordNet" w WordNet DB?
- 3. Jak uzyskać pełny zestaw wyników z SSMS
- 4. Jak używać Wordnet w SQL
- 5. Wordnet w Objective-C
- 6. Uzyskaj rzeczownik od czasownika Wordnet
- 7. Jak usunąć interwał z nieznanym identyfikatorem?
- 8. MySQL wybierz * z wyraźnym identyfikatorem
- 9. Jaka jest różnica między WordNet 3.1 a WordNet 3.0?
- 10. RedirectToAction() z identyfikatorem tabulatora
- 11. punkty rozrzutu przesunięcia ggplot2
- 12. Zestaw SDK iOS: jak uzyskać datę z UIDatePicker?
- 13. Jak uzyskać filtrowanie Zestaw wyników danych z jQuery Datatable
- 14. Backbone.js - Jak uzyskać zestaw literałów obiektowych z kolekcji?
- 15. CNContacts możliwy błąd z identyfikatorem telefonu?
- 16. Magento - pobierz identyfikator zamówienia z identyfikatorem przyrostowym
- 17. Czy WordNet ma "poziomy"? (NLP)
- 18. Html.ActionLink z określonym identyfikatorem HTML?
- 19. Otwórz aplikację z identyfikatorem pakietu
- 20. Uzyskiwanie antonimów za pomocą pakietu R Wordnet
- 21. Pomoc w formacie pliku danych WordNet
- 22. Problem synchronizacji z SVN Eclipse
- 23. włóczęga z wieloma folderami synchronizacji
- 24. Jak działa funkcja synchronizacji statycznej?
- 25. Jak rejestrować skomplikowany proces synchronizacji?
- 26. Jest - Jak znaleźć wyrenderowany komponent DOM z identyfikatorem?
- 27. Jak używać synchronizacji w Scali?
- 28. Jak uzyskać prawidłowe wartości wysokości i przesunięcia elementu podczas korzystania z polecenia ng-repeat?
- 29. Jak uzyskać dostęp do cookie klienta (z identyfikatorem sesji) utworzonym przez plik node.js Express?
- 30. Jak mogę uzyskać nazwę aplikacji Facebook z jej identyfikatorem aplikacji i sekretem?
Ciekawe, to rzuca kluczową błąd z NLTK 3,0 – duhaime
'offset' jest teraz metoda. Spróbuj zamiast tego: 'offsets_dict = {s.offset(): s dla s we wn.all_synsets()}' – Omer
* "Nie ma wbudowanej metody w NLTK" * - jest teraz! Zobacz odpowiedź donners45; ten jest przestarzały. –