NLTK Python中的类型依赖性解析

时间:2015-03-14 14:22:23

标签: python nltk stanford-nlp

我有一句话

"I shot an elephant in my sleep"

句子的类型依赖是

nsubj(shot-2, I-1)
det(elephant-4, an-3)
dobj(shot-2, elephant-4)
prep(shot-2, in-5)
poss(sleep-7, my-6)
pobj(in-5, sleep-7)

如何在Python中使用NLTK(最好是anthing很好)使用Stanford Parser(或任何解析器)获取类型依赖?

注意 - 我知道它与this question非常相似。但是没有好的答案。

1 个答案:

答案 0 :(得分:2)

斯坦福解析器存在一个python包装器,你可以得到它here

它将为您提供句子的依赖树。


编辑:

我在这里假设您按照here启动了服务器。我还假设你已经安装了jsonrpclib。

以下代码将生成您想要的内容:

import json
import jsonrpclib

class StanfordNLP:
    def __init__(self, port_number=8080):
        self.server = jsonrpclib.Server("http://localhost:%d" % port_number)

    def parse(self, text):
        return json.loads(self.server.parse(text))

nlp = StanfordNLP()
sentence = 'I shot an elephant in my sleep'
result = nlp.parse(sentence)
result['sentences'][0]['indexeddependencies']

>>>
['root', 'ROOT-0', 'shot-2']
['nsubj', 'shot-2', 'I-1']
['det', 'elephant-4', 'an-3']
['dobj', 'shot-2', 'elephant-4']
['poss', 'sleep-7', 'my-6']
['prep_in', 'shot-2', 'sleep-7']

EDIT2:

现在,斯坦福大学的解析器有一个HTTP API。因此,不再需要python包装器。