如何从一个句子中构建多个语法树?

2024-10-01 09:23:19 发布

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

我正在开发一个基于上下文无关语法的俄语语法分析器,我想为每个句子构建语法树。有证据表明,每句话都可能有几棵树

我不确定建造所有这些树的有效方法是什么

我所做的:

1)经过一些处理后,我有一个句子,每个单词都有几个标记 2) 然后我建一棵树,树叶是单词,然后我把单词简化成更一般的短语(根据语法);每个减少-新节点。 3) 完成所有还原后,尝试使用“S->;NP[sbj]VP“规则。只有当两方达成一致意见时,才会发生这种情况

结果是所有存在根的树

parser.parse(sent)
[['я', "NP[case='nomn']", ['NPRO', 'sing', '1per', None, 'nomn', None, None]]]

[['хочу', 'V[tran]', ['VERB', 'sing', '1per', None, None, 'tran', 'pres']]]

[['писать', 'VP', ['INFN', None, None, None, None, 'tran', None]], ['писать', 'VP', ['INFN', None, None, None, None, 'intr', None]]]

[['письмо', "NP[case='accs']", ['NOUN', 'sing', None, 'neut', 'accs', None, None]], ['письмо', "NP[case='nomn']", ['NOUN', 'sing', None, 'neut', 'nomn', None, None]]]

[['другу', "NP[case='datv']", ['NOUN', 'sing', None, None, 'datv', None, None]]]

# it is simple example, usually, each word has 3-4 tags.

最天真的方法是把所有可能的单词组合起来,试着用它们来做树。这种方法的复杂性非常大。我怎样才能更有效地完成这项任务


Tags: 方法nonenp语法单词句子nouncase