Вот полный отслеживающий ошибки, если язык отсутствует в открытом многоязычного WordNet в вашем nltk_data
каталоге:
>>> from nltk.corpus import wordnet as wn
>>> wn.synsets('bank')[0].lemma_names('spa')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/nltk/corpus/reader/wordnet.py", line 418, in lemma_names
self._wordnet_corpus_reader._load_lang_data(lang)
File "/usr/local/lib/python2.7/dist-packages/nltk/corpus/reader/wordnet.py", line 1070, in _load_lang_data
f = self._omw_reader.open('{0:}/wn-data-{0:}.tab'.format(lang))
File "/usr/local/lib/python2.7/dist-packages/nltk/corpus/reader/api.py", line 198, in open
stream = self._root.join(file).open(encoding)
File "/usr/local/lib/python2.7/dist-packages/nltk/data.py", line 309, in join
return FileSystemPathPointer(_path)
File "/usr/local/lib/python2.7/dist-packages/nltk/compat.py", line 380, in _decorator
return init_func(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/nltk/data.py", line 287, in __init__
raise IOError('No such file or directory: %r' % _path)
IOError: No such file or directory: u'/home/alvas/nltk_data/corpora/omw/spa/wn-data-spa.tab'
Так что первое, что должен проверить является ли это автоматически устанавливается:
>>> import nltk
>>> nltk.download('omw')
[nltk_data] Downloading package omw to /home/alvas/nltk_data...
[nltk_data] Package omw is already up-to-date!
Tru
Затем вы должны пойти и проверить nltk_data и обнаружить, что папка «спа» отсутствует:
[email protected]:~/nltk_data/corpora/omw$ ls
als arb cmn dan eng fas fin fra fre heb ita jpn mcr msa nor pol por README tha
Так вот краткосрочное решение:
$ wget http://compling.hss.ntu.edu.sg/omw/wns/spa.zip
$ mkdir ~/nltk_data/corpora/omw/spa
$ unzip -p spa.zip mcr/wn-data-spa.tab > ~/nltk_data/corpora/omw/spa/wn-data-spa.tab
В качестве альтернативы, вы можете просто скопировать файл из nltk_data/corpora/omw/mcr/wn-data-spa.tab
.
[выход]:
>>> from nltk.corpus import wordnet as wn
>>> wn.synsets('bank')[0].lemma_names('spa')
[u'margen', u'orilla', u'vera']
Теперь lemma_names()
должен работать на испанском языке, если вы ищете для других языков из открытого Multilingusl Wordnet, вы можете просмотреть здесь (http://compling.hss.ntu.edu.sg/omw/), а затем загрузить и поставить в соответствующий каталог nltk_data.
Долгосрочным решением было бы попросить разработчиков проекта NLTK и OMW обновить свои наборы данных для их API NLTK.
Что дает вам 'wn.langs()'? Кроме того, какая версия NLTK и Python? –
BTW, полезная ссылка при возникновении проблем с установкой NLTK на Ubuntu: http://askubuntu.com/a/527408/93794 –