递归遍历语法树

问题描述 投票:0回答:2

我有一个在语法上已解析]的句子>。例如,“我妈妈想做饭”。解析为[[('My',1),('mom',2),('wants',-1),('to',2),('cook',3)]。数字表示单词所依赖的项的索引:“妈妈”取决于“ wants”,“ wants”是数组的第二个元素(通常从零开始)。 “想要”具有“ -1”,因为这是句子的核心,它不依赖于其他任何内容。 我需要在这里获取“我妈妈”的主题。如何做到这一点?

至此,我仅尝试编写循环,但并非在每种情况下都有效。问题是主题可能由两个以上的单词组成,并且该数字是不确定的。像这样的东西...

'值'是[('My',1),('mom',2),('wants',-1),('to',2),('cook',3)]

for indx, value in enumerate(values):
    m = morph.parse(value[0])
    if isinstance(m, list):
        m = m[0]
    if 'NOUN' in m.tag:
        if value[1] == str(index[0]): #it checks if the word (part of the subject) depends on the verb
            terms.append([value[0], indx])

if len(terms) > 0:
    term = terms[0][0]
    t = []
    for indx, value in enumerate(values):
        if value[1] == str(terms[0][1]): #it checks if the word depend on the found part of the subject
            m = morph.parse(value[0])
            if isinstance(m, list):
                m = m[0]
            if 'NOUN' in m.tag:
                t.append([value[0], terms[0][0]])

该算法应像这样工作:遍历整个数组,并在找到给定单词的所有依赖关系以及这些依赖关系的所有依赖关系时停止

。 (在示例中,'mom'的所有依赖项)。请帮助!

我有一个经过句法分析的句子。例如,“我妈妈想做饭”。解析为[('My',1),('mom',2),('wants',-1),('to',2),('cook',3)]。数字表示项目的索引...

python python-3.x syntax tree xml-parsing
2个回答
0
投票

对不起,我花了很长时间才回覆您。


0
投票

鉴于您准备好的数组,这很容易:

© www.soinside.com 2019 - 2024. All rights reserved.