无论是否有两个实体的路径依赖关系

2024-10-02 22:37:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究一个nlp问题,给定一个有两个实体的句子,我需要为每个单词生成布尔值,如果它位于这些实体之间的依赖路径上。在

例如:

'A misty < e1 >ridge< /e1 > uprises from the < e2 >surge< /e2 >'

我想迭代每个单词并判断它是否在e1和e2之间的依赖路径上

两个重要注意事项:

-如果您想帮助我(首先谢谢),请不要费心考虑使用<;e1>;和<;e2>;的xml标记,我真的很感兴趣,如何找到一个单词是否在任意两个给定单词之间的依赖路径上,我自己来处理哪些单词

-由于我不是nlp专家,我有点搞不清“在依赖路径上”的含义,如果不够清楚,我很抱歉(这些是我的导师使用的词)

提前谢谢


Tags: thefromltgt路径实体nlp单词
2条回答

所以我的解决方案是用that post找到的

有一个答案专门针对空间

我的在给定句子中查找两个单词之间的依赖路径的实现

import networkx as nx
import spacy
enter code here
doc = nlp("Ships carrying equipment for US troops are already waiting off the Turkish coast")

def shortest_dependency_path(doc, e1=None, e2=None):
    edges = []
    for token in doc:
        for child in token.children:
            edges.append(('{0}'.format(token),
                          '{0}'.format(child)))
    graph = nx.Graph(edges)
    try:
        shortest_path = nx.shortest_path(graph, source=e1, target=e2)
    except nx.NetworkXNoPath:
        shortest_path = []
    return shortest_path

print(shortest_dependency_path(doc,'Ships','troops'))

输出:

^{pr2}$

它实际做的是先为单词为节点,单词之间的依赖关系为边的句子建立一个无向图,然后找出两个节点之间的最短路径

为了我的需要,我只需检查每个单词是否在生成的依赖路径(最短路径)上

依赖路径是一种描述子句如何在句子中构建的方法。斯帕西在他们的文档here中有一个很好的例子,句子Apple is looking at buying U.K. startup for $1 billion.

请原谅我在这里没有很好的视觉效果,但是要通过你的例子:

A misty ridge uprises from the surge.

在spaCy中,我们按照他们的例子来获得依赖关系:

import spacy
nlp = spacy.load('en_core_web_lg')
doc = nlp("A misty ridge uprises from the surge.")
for chunk in doc.noun_chunks:
    print(chunk.text, chunk.root.text, chunk.root.dep_, chunk.root.head.text)

这将得到组成句子的“从句”。您的输出如下所示:

^{pr2}$

chunk.text是构成依赖从句的文本(注意,根据句子结构可能会有重叠)。root.text给出依赖树的根(或头)。树的head是一个spaCy token对象,并且有子对象,您可以迭代这些子对象来检查依赖树上是否有其他标记。在

^{3}$

代码不是最漂亮的,但这是一种获取元组列表的方法,其中包含要检查的单词和相关的父标记。希望这对你有帮助

编辑:

为了更适合您的用例(并极大地简化了我最初的答案是什么):

# This will give you 'word':<spaCy doc object> key value lookup capability
tokens_lookup = {tok.text:tok for tok in doc}

if "misty" in tokens_lookup.get("ridge").children:
    # Extra logic here

相关问题 更多 >