使用图上的波束搜索生成得分最高的句子

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

我正在处理从一篇长文章中提取的图形。有向加权图实际上只不过是一个字典,它包含作为顶点的头词,这些词通过边连接到文章中该词之后的每个词(尾词)。因此,如果“黄色”一词在文章中出现了3次,并且其后紧跟着“砖头”,“砖头”和“潜艇”两个词,则“黄色”条目将像图中一样表示:] >

{"yellow": ["brick", "brick", "submarine"]}

[此图是使用我写的名为ExtractedGraph的python类生成的,除了__init__方法可以完成图的生成之外,该类还具有getProb(self, head_word, tail_word)方法,该方法将标题词和尾词并输出首词将跟随尾词的概率,尾概率是连接首词节点和尾词节点的边的权重。因此,如果我们输入“ yellow”和“ brick”,则输出将为2/3。

我的问题是,如何对该图进行波束搜索以找到得分最高的句子。具体来说,如果波束搜索功能的输入是prefix_words字符串,beam_width int和sen_length int(句子的最大单词长度),该怎么办。该算法看起来如何?在在线阅读了Beam Search算法并观看了许多教程之后,我不确定Beam Search功能在这种特定情况下如何真正发挥作用。

我正在处理从一篇长文章中提取的图形。有向加权图实际上只是一个字典,它包含作为顶点的头词,这些词通过...

python search graph nlp artificial-intelligence
1个回答
0
投票

假设graph_nodes是字典,每个句子都必须以<s>符号开头,概率为1.0,所有句子都必须以特殊符号</s>结尾。为避免对假设进行排序,我将它们放在堆中,因此添加元素是恒定的。

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