gpt4 book ai didi

python - 使用 StanfordParser 从已解析的句子中获取类型依赖项

转载 作者:太空狗 更新时间:2023-10-29 21:03:09 25 4
gpt4 key购买 nike

使用 NLTK 的 StanfordParser,我可以解析这样一个句子:

os.environ['STANFORD_PARSER'] = 'C:\jars' 
os.environ['STANFORD_MODELS'] = 'C:\jars'
os.environ['JAVAHOME'] ='C:\ProgramData\Oracle\Java\javapath'
parser = stanford.StanfordParser(model_path="C:\jars\englishPCFG.ser.gz")
sentences = parser.parse(("bring me a red ball",))
for sentence in sentences:
sentence

结果是:

Tree('ROOT', [Tree('S', [Tree('VP', [Tree('VB', ['Bring']),
Tree('NP', [Tree('DT', ['a']), Tree('NN', ['red'])]), Tree('NP',
[Tree('NN', ['ball'])])]), Tree('.', ['.'])])])

除了上图之外,我如何使用 Stanford 解析器获取类型化依赖项?像这样的东西:

  1. root(ROOT-0, bring-1)
  2. iobj(bring-1, me-2)
  3. det(ball-5, a-3)
  4. amod(ball-5, red-4)
  5. dobj(bring-1, ball-5)

最佳答案

NLTK 的 StanfordParser 模块(目前)没有将树包装到 Stanford Dependencies 转换代码。你可以使用我的图书馆 PyStanfordDependencies ,它包装了依赖转换器。

如果 nltk_tree 是问题代码片段中的 sentence,那么这行得通:

#!/usr/bin/python3
import StanfordDependencies

# Use str() to convert the NLTK tree to Penn Treebank format
penn_treebank_tree = str(nltk_tree)

sd = StanfordDependencies.get_instance(jar_filename='point to Stanford Parser JAR file')
converted_tree = sd.convert_tree(penn_treebank_tree)

# Print Typed Dependencies
for node in converted_tree:
print('{}({}-{},{}-{})'.format(
node.deprel,
converted_tree[node.head - 1].form if node.head != 0 else 'ROOT',
node.head,
node.form,
node.index))

关于python - 使用 StanfordParser 从已解析的句子中获取类型依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29603056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com