在NLTK中,如何与Boxer接口?

时间:2013-01-26 17:35:27

标签: nltk semantic-analysis

我希望能够将Boxer用作NLTK中的语义提取器。

我正在使用以下代码进行测试:

#!/bin/env python
import nltk
x = nltk.sem.boxer.Boxer()
x.interpret("The capital of Spain is Madrid .")

失败如下:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
    File "/usr/lib/python2.7/site-packages/nltk/sem/boxer.py", line 83, in interpret
        d, = self.batch_interpret_multisentence([[input]], discourse_ids, question, verbose)
      File "/usr/lib/python2.7/site-packages/nltk/sem/boxer.py", line 140, in batch_interpret_multisentence
          drs_dict = self._parse_to_drs_dict(boxer_out, use_disc_id)
            File "/usr/lib/python2.7/site-packages/nltk/sem/boxer.py", line 241, in _parse_to_drs_dict
                line = lines[i]
                IndexError: list index out of range

从nltk代码中,我在http://nltk.org/_modules/nltk/sem/boxer.html#Boxer发现在_parse_to_drs_dict(self,boxer_out,use_disc_id)函数中,它执行了i += 4我无法理解的内容。

我是不是给拳击手喂了一些坏事?

有没有人设法让它发挥作用?

手动调试一步一步,NLTK实际上从candc和boxer获得输出。

1 个答案:

答案 0 :(得分:1)

似乎GitHub中提供的新版本无缝运行。

在2.0.4代码中,i += 4行可能是一个错误。

为了让NLTK正常工作,请从GitHub和python setup.py install下载源代码。

请务必将CANDCHOME变量设置为bin/candc工具的boxer目录,以及上一个文件夹中的模型(路径应为{{ 1}})。