2014-10-20 2 views
4

Я пытаюсь использовать испанский Wordnet из открытого многоязычного Wordnet в NLTK 3.0, но кажется, что он не был загружен с пакетом «omw». Например, с помощью кода, как следующее:Отсутствует испанский wordnet от NLTK

from nltk.corpus import wordnet as wn 

print [el.lemma_names('spa') for el in wn.synsets('bank')] 

Я получаю следующее сообщение об ошибке:

IOError: No such file or directory: u'***/nltk_data/corpora/omw/spa/wn-data-spa.tab' 

Согласно documentation, испанский должны быть включены в «OMW» пакет, но это не был загружен с ним. Вы знаете, почему это может произойти?

+1

Что дает вам 'wn.langs()'? Кроме того, какая версия NLTK и Python? –

+0

BTW, полезная ссылка при возникновении проблем с установкой NLTK на Ubuntu: http://askubuntu.com/a/527408/93794 –

ответ

11

Вот полный отслеживающий ошибки, если язык отсутствует в открытом многоязычного 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.

+0

Не исправлена ​​проблема: https://github.com/nltk/nltk_data/issues/9 – alvas

5

Мы (OMW) подготовили исправление и вскоре выталкиваем его.

+0

Добро пожаловать в StackOverflow Francis ! Мой шанс дать лучшие ответы на вопросы в wordnet теперь ушел ;-) –

Смежные вопросы