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

10

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

它使用从大量相关文本文档中收集的ngram序列。通过考虑前N-1个单词,它建议按概率降序显示五个最可能的“下一个单词”,使用Katz后退模型

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

例如,考虑输入the cat

在这种情况下,我们想预测像the cat in the hat这样的内容,但不是the cat inthe cat in the

enter image description here

假设:

  • 我们无法访问过去的搜索统计数据

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

通常如何进行这些多单词预测? 我们尝试了较长短语的乘法和加法加权,但是我们的权重是任意的,并且过度拟合于我们的测试。

1个回答

5
对于这个问题,你需要定义什么是一个有效的完成 -- 然后就可以想出一个解决方案。
在你给出的例子中,“戴帽子的猫”比“戴帽子的猫在...”要好得多。我可以理解为“它应该以名词结尾”或者“它不应该以过于常见的词语结尾”。
你已经限制了“标记文本数据”的使用,但是你可以使用预训练模型(如NLTK、Spacy和StanfordNLP)猜测词性,并尝试将预测限制为只有完整的名词短语(或以名词结尾的序列)。请注意,您不一定需要对输入模型的所有文档进行标记,而只需要对您保留在自动完成数据库中的那些短语进行标记。
或者,您可以避免以停用词(或非常高频的词)结束的完成。 "in"和"the"是几乎所有英语文档中都出现的词语,因此您可以实验性地找到一个频率截止值(不能以出现在超过50%文档中的词语结尾),以帮助您进行筛选。您还可以查看短语--如果短语的结尾作为更短的短语显著更常见,则没有意义将其标记在上面,因为用户可以自己想出它。
最终,您可以创建一个标记良好和不良实例的标签集,并尝试基于单词特征创建监督式重新排名器--上述两个想法都可以作为监督模型中的强特征(文档频率= 2,pos标记= 1)。这通常是带有数据的搜索引擎如何处理的。请注意,您不需要搜索统计信息或用户来完成此操作,只需要愿意为几百个查询标记前5个完成即可。构建一个正式的评估(可以以自动化的方式运行)可能有助于在未来改进系统时使用。每当观察到错误完成时,您可以将其添加到数据库中并进行一些标记--随着时间的推移,监督方法会变得更好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接