我正在处理从一篇长文章中提取的图形。有向加权图实际上只不过是一个字典,它包含作为顶点的头词,这些词通过边连接到文章中该词之后的每个词(尾词)。因此,如果“黄色”一词在文章中出现了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功能在这种特定情况下如何真正发挥作用。
我正在处理从一篇长文章中提取的图形。有向加权图实际上只是一个字典,它包含作为顶点的头词,这些词通过...
假设graph_nodes
是字典,每个句子都必须以<s>
符号开头,概率为1.0,所有句子都必须以特殊符号</s>
结尾。为避免对假设进行排序,我将它们放在堆中,因此添加元素是恒定的。