我能够在NLTK中使用来自斯坦福的通用依赖解析器,但有没有办法在NLTK中使用通用依赖,增强?如下所示Stanford Parser
由于
答案 0 :(得分:0)
我的方法是绕过所提供的NLTK接口,直接查看其实现。
找到源代码./nltk/parse/corenlp.py
。
在GenericCoreNLPParser
类中,有一个称为api_call
的方法。当您构造依赖项解析器对象时。您可以调用此方法来获取原始的JSON对象。
您将获得一个具有以下键的JSON对象:basic dependencies
,enhancedDependencies
,enhancedPlusPlusDependencies
,tokens
。得到结果时。我们可以编写一个简单的函数来将结果解析为与调用其接口相同的格式。
以下是一些摘要
def parse_sentence(self, sentence: str) -> object:
"""
Parse a sentence for given sentence and with user-defined properties
:type properties: object
:type sentence: str
The pizza is overpriced
return : Json Object from the NLP server.
"""
return self.get_parser().api_call(sentence)["sentences"][0]
一旦得到结果。
def create_parsing_tuples(self, response: object, parse_type: str) -> list:
"""
According to raw parse result, create dependency tuples by parse_type.
parse_type options: basicDependencies , enhancedDependencies, enhancedPlusPlusDependencies
:param response:
:param parse_type:
:return:
"""
tuple_list = []
for dependency in response[parse_type]:
if dependency['dep'] == 'ROOT':
continue
governor = (dependency['governorGloss'], response['tokens'][dependency['governor'] - 1]['pos'])
relation = dependency['dep']
dependent = (dependency['dependentGloss'], response['tokens'][dependency['dependent'] - 1]['pos'])
tuple_list.append((governor, relation, dependent))
return [tuple_list]
在他们的源代码中,他们将JSON对象转换为树结构,这在大多数情况下更为通用。
希望我的帖子会有所帮助。