gpt4 book ai didi

python - SyntaxNet 创建树到根动词

转载 作者:太空狗 更新时间:2023-10-29 21:49:01 26 4
gpt4 key购买 nike

我是 Python 和 NLP 世界的新手。 Google 最近发布的 Syntaxnet 引起了我的兴趣。但是,我在理解有关 syntaxnet 和相关工具(nltk 等)的文档时遇到了很多问题

我的目标:给定一个输入,例如“Wilbur kicked the ball”,我想提取词根动词 (kicked) 及其与“the ball”相关的宾语。

我偶然发现了“spacy.io”和this visualization似乎封装了我想要完成的事情:POS 标记一个字符串,并将其加载到某种树结构中,这样我就可以从根动词开始并遍历句子。

我尝试使用 syntaxnet/demo.sh,并按照 this thread 中的建议进行操作注释掉最后几行以获得 conll 输出。

然后我将此输入加载到 python 脚本中(我自己拼凑在一起,可能不正确):

import nltk
from nltk.corpus import ConllCorpusReader
columntypes = ['ignore', 'words', 'ignore', 'ignore', 'pos']
corp = ConllCorpusReader('/Users/dgourlay/development/nlp','input.conll', columntypes)

我看到我可以访问 corp.tagged_words(),但单词之间没有关系。现在我卡住了!如何将这个语料库加载到树型结构中?

非常感谢任何帮助!

最佳答案

这作为评论可能更好,但我还没有所需的声誉。

我之前没有使用过 ConllCorpusreader(你会考虑将你正在加载的文件上传到一个要点并提供一个链接吗?这会更容易测试),但我写了一篇博客文章可能对树有帮助解析方面:here .

特别是,您可能希望对每个句子进行分 block 。 Chapter 7 of the NLTK book有更多关于此的信息,但这是我博客中的示例:

# This grammar is described in the paper by S. N. Kim,
# T. Baldwin, and M.-Y. Kan.
# Evaluating n-gram based evaluation metrics for automatic
# keyphrase extraction.
# Technical report, University of Melbourne, Melbourne 2010.
grammar = r"""
NBAR:
# Nouns and Adjectives, terminated with Nouns
{<NN.*|JJ>*<NN.*>}

NP:
{<NBAR>}
# Above, connected with in/of/etc...
{<NBAR><IN><NBAR>}
"""

chunker = nltk.RegexpParser(grammar)
tree = chunker.parse(postoks)

注意:您还可以使用上下文无关语法(在 Chapter 8 中介绍)。

每个分 block (或解析)的句子(或本例中的名词短语,根据上面的语法)将是一个子树。要访问这些子树,我们可以使用这个函数:

def leaves(tree):
"""Finds NP (nounphrase) leaf nodes of a chunk tree."""
for subtree in tree.subtrees(filter = lambda t: t.node=='NP'):
yield subtree.leaves()

每个生成的对象都是一个词标签对列表。从那里你可以找到动词。

接下来,您可以使用上面的语法或解析器。动词拆分名词短语(参见 this diagram in Chapter 7 ),因此您可以在 VBD 之后访问第一个 NP

很抱歉,该解决方案并非针对您的问题,但希望它是一个有用的起点。如果你上传文件,我会再拍一张:)

关于python - SyntaxNet 创建树到根动词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37270999/

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