9

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

它使用从大量相关文本文档中收集的一系列 ngram。通过考虑前面的 N-1 个单词,它使用Katz back-off按概率降序建议 5 个最有可能的“下一个单词” 。

我们希望将其扩展到预测短语(多个单词)而不是单个单词。然而,当我们预测一个短语时,我们不希望显示它的前缀。

例如,考虑输入the cat

在这种情况下,我们希望做出类似的预测the cat in the hat,但不是the cat in& not the cat in the

在此处输入图像描述

假设:

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

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

进行此类多词预测的典型方法是什么?我们已经尝试对较长的短语进行乘法和加法加权,但我们的权重是任意的,并且对我们的测试过度拟合。

4

1 回答 1

5

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

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

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

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

  3. 最终,您可以创建一组标记好的和坏的实例,并尝试基于单词特征创建一个有监督的重新排序——以上两个想法都可能是监督模型中的强特征(文档频率 = 2,pos tag = 1) . 这通常是具有数据的搜索引擎可以做到的。请注意,您不需要搜索统计数据或用户,只需愿意为几百个查询标记前 5 个完成。建立正式的评估(可以以自动化方式运行)可能会在将来尝试改进系统时有所帮助。任何时候你观察到一个糟糕的完成,你可以将它添加到数据库中并做一些标签——随着时间的推移,有监督的方法会变得更好。

于 2017-04-03T20:07:07.297 回答