预测短语而不仅仅是下一个单词

Jed*_*edi 9 algorithm autocomplete phrases n-gram

对于我们构建的应用程序,我们使用简单的单词预测统计模型(如Google自动填充)来指导搜索.

它使用从大量相关文本文档中收集的一系列ngrams.通过考虑之前的N-1个单词,它使用Katz退避建议按概率降序排列的5个最可能的"下一个单词" .

我们希望将其扩展为预测短语(多个单词)而不是单个单词.但是,当我们预测短语时,我们宁愿不显示其前缀.

例如,考虑输入the cat.

在这种情况下,我们希望做出预测the cat in the hat,但the cat in不是the cat in the.

在此输入图像描述

假设:

  • 我们无法访问过去的搜索统计信息

  • 我们没有标记的文本数据(例如,我们不知道词性)

制作这类多字预测的典型方法是什么?我们尝试过较长短语的乘法和加法加权,但我们的权重是任意的,适合我们的测试.

小智 5

对于这个问题,您需要定义什么是您认为有效的完成-那么应该有可能提出解决方案。

在您给出的示例中,“戴帽子的猫”比“戴帽子的猫”要好得多。我可以将其解释为“它应该以一个名词结尾”或“它不应该以过于普通的词结尾”。

  1. 您已经限制使用“标记文本数据”,但是可以使用预先训练的模型(例如NLTK,spacy,StanfordNLP)来猜测语音部分,并尝试将预测限制为仅完整的名词短语(或序列)以名词结尾)。请注意,您不一定需要标记所有送入模型的文档,而只需标记要保留在自动完成数据库中的短语。

  2. 或者,您可以避免以停用词(或非常高频的词)结尾的补全。“ in”和“ the”都是几乎所有英文文档中都出现的单词,因此您可以实验性地找到一个频率截止点(不能以超过50%的文档中出现的单词结尾)来帮助您进行过滤。您还可以查看短语-如果短语的结尾作为较短的短语而更加普遍,则对其进行标记是没有意义的,因为用户可以自己提出。

  3. 最终,您可以创建带有标签的好事和坏事集,并尝试基于单词特征创建一个有监督的重新排名功能-上面的两个想法在受监督的模型中都可能是强项(文档频率= 2,pos标签= 1) 。具有数据的搜索引擎通常就是这样做的。请注意,您不需要为此的搜索统计信息或用户,只需愿意为几百个查询标记前5名完成。建立正式评估(可以以自动化方式运行)可能会在将来尝试改进系统时有所帮助。每当观察到不良的完成时,都可以将其添加到数据库中并做一些标记-随着时间的流逝,有监督的方法会变得更好。