NLTK动词网给错误的班级

时间:2018-10-10 18:08:39

标签: python nltk

我正在尝试了解nltk Verbnet API。 具体来说,请考虑:

from nltk.corpus import verbnet
verbnet.classids(lemma='add')

最后一条命令打印:['mix-22.1-2']。 方法classids应该“仅返回包含该引理作为成员的类的VerbNet类标识符”。

现在,如果继续the official verbnet project page并搜索动词“ add”,我将得到以下信息: search result for verb add on verbnet page 也就是说,动词addmixmultiplysayaddictillustrate的成员。而verbnet类实际上是addict

问题:我如何使用nltk获取与动词add(及其他)有关的实际类?

似乎有些概念没有很明确地定义(并且我可能不太理解),它们相互冲突。感谢您的帮助! :D

1 个答案:

答案 0 :(得分:1)

结果之间不一致的原因是由于当前版本的Verbnet 2.1使用的是NLTK,而不是更新的Verbnet 3.3。

尽管尚未得到正式支持,但可以用NLTK加载最新版本的Verbnet。为此:

首先,转到this NLTK Github page并下载文件verbnet3.zip

第二,将文件解压缩到NLTK文件夹数据的corpora文件夹中,通常类似于:Users/username/nltk_data/corpora/your_unzip_here。解压缩该文件时,应该在verbnet3文件夹中有一个名为corpora的文件夹。这是nltk在其中寻找数据的地方;

第三,使用以下命令在Python中加载Verbnet3:

import nltk
vnet3 = nltk.corpus.util.LazyCorpusLoader('verbnet3', nltk.corpus.reader.verbnet.VerbnetCorpusReader,r'(?!\.).*\.xml')

然后,您可以使用vnet3.classids('add')来正确恢复类mixmultiplysay