许多nltk软件包方法/工具不起作用

时间:2019-02-28 16:59:08

标签: python nltk natural-language-processing

1)我尝试了有关名为/ Natural Language Processing的nltk软件包的官方书中的代码,但它给出了错误

dt = nltk.DiscourseTester(['A student dances', 'Every student is a person'])
print(dt.readings())

我收到错误

  

NLTK无法找到mace4文件!   使用软件特定的配置参数或设置PROVER9环境变量。

2)我尝试使用本书中的其他代码:

from nltk import load_parser
parser = load_parser('drt.fcfg', logic_parser=nltk.DrtParser())
trees = parser.parse('Angus owns a dog'.split())
print(trees[0].node['sem'].simplify())

我遇到了错误

  

AttributeError:模块'nltk'没有属性'DrtParser'

3)我尝试了以下代码:

    from nltk.sem import cooper_storage as cs
sentence = 'every girl chases a dog'
trees = cs.parse_with_bindops(sentence, grammar='storage.fcfg')
semrep = trees[0].label()
cs_semrep = cs.CooperStore(semrep)
print(cs_semrep.core)

for bo in cs_semrep.store:
    print(bo)
cs_semrep.s_retrieve(trace=True)
for reading in cs_semrep.readings:
    print(reading)

它有效,但仍然出现以下错误:

  

AttributeError:“ CooperStore”对象没有属性“ core”

4)我尝试了本书中的另一个代码:

from nltk import load_parser
parser = load_parser('simple-sem.fcfg', trace=0)
sentence = 'Angus gives a bone to every dog'
tokens = sentence.split()
trees = parser.parse(tokens)
for tree in trees:
    print(tree.node['SEM'])

我遇到以下错误:

  

NotImplementedError:使用label()访问节点标签。

请让我知道该怎么办?这些功能是否已弃用,因为我听说nltk的许多功能都是。请为上述所有功能提出解决方案。

1 个答案:

答案 0 :(得分:0)

我找到了答案,实际上我是在遵循本书中的代码,而不是NLTK的在线书更新版本。因此,按照更新的版本解决了问题。