我正在尝试使用NLTK 3.0中的Open Multilingual Wordnet中的西班牙语Wordnet,但它似乎没有使用'omw'包下载。例如,使用如下代码:
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'包中,但是没有下载它。你知道为什么会这样吗?
答案 0 :(得分:12)
如果nltk_data
目录中的Open Multilingual WordNet中缺少某种语言,则会出现完整的错误追溯:
>>> 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并发现缺少'spa'文件夹:
alvas@ubi:~/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
复制文件。
[OUT]:
>>> from nltk.corpus import wordnet as wn
>>> wn.synsets('bank')[0].lemma_names('spa')
[u'margen', u'orilla', u'vera']
现在lemma_names()
应该适用于西班牙语,如果您正在寻找Open Multilingusl Wordnet中的其他语言,您可以在这里浏览(http://compling.hss.ntu.edu.sg/omw/),然后下载并放入相应的nltk_data目录。
长期解决方案是让NLTK和OMW项目的开发人员更新他们的NLTK API数据集。
答案 1 :(得分:5)
我们(OMW)准备了一个修复程序,并很快将其推出。
答案 2 :(得分:0)
您可以使用这个项目:https://github.com/lingeringsocket/wn-mcr-transform
然后像英语一样使用 nltk 语料库,但使用西班牙语。
基本上将使用 MCR 3.0 语料库替换 nltk 语料库中从英语到西班牙语的所有知识。
适用于: