[英]Predicting phrases instead of just next word
对于我们构建的应用程序,我们使用简单的单词预测统计模型(如Google自动填充 )来指导搜索。
它使用从大量相关文本文档中收集的一系列ngrams。 通过考虑先前的N-1个单词,它使用Katz退避建议按概率降序排列的5个最可能的“下一个单词”。
我们希望将其扩展为预测短语(多个单词)而不是单个单词。 但是,当我们预测短语时,我们宁愿不显示其前缀。
例如,考虑the cat
的输入。
在这种情况下,我们想做出像the cat in the hat
一样the cat in the hat
预测,但不是the cat in
而不是the cat in
the cat in the
。
假设:
我们无法访问过去的搜索统计信息
我们没有标记的文本数据(例如,我们不知道词性)
制作这类多字预测的典型方法是什么? 我们尝试过较长短语的乘法和加法加权,但我们的权重是任意的,适合我们的测试。
对于这个问题,您需要定义您认为有效完成的内容 - 然后应该可以提出解决方案。
在你给出的例子中,“帽子里的猫”比“猫中的猫”要好得多。 我可以将其解释为“它应该以名词结尾”或“它不应该以过于常见的词结尾”。
您已经限制了“标记文本数据”的使用,但您可以使用预训练模型(例如NLTK,spacy,StanfordNLP)来猜测词性,并尝试将预测限制为仅完成名词短语(或序列)以名词结尾)。 请注意,您不一定需要标记所有输入模型的文档,而只需标记您在自动完成数据库中保留的那些短语。
或者,您可以避免以停用词(或非常高频率的词)结尾的完成。 “in”和“the”都是几乎所有英文文档中出现的单词,因此您可以通过实验找到有助于过滤的频率截止(不能以超过50%的文档中出现的单词结尾)。 你也可以看一下短语 - 如果短语的结尾作为一个较短的短语显然更常见,那么标记它就没有意义,因为用户可以自己提出它。
最终,你可以创建一组标签好的和坏的实例,并尝试创建一个基于单词特征的监督重新排名 - 上述两个想法都可能是监督模型中的强大功能(文档频率= 2,pos标签= 1) 。 这通常是带有数据的搜索引擎可以做到的。 请注意,您不需要搜索统计信息或用户,只需要为几百个查询标记前5个完成项。 建立正式评估(可以以自动方式运行)可能有助于在将来尝试改进系统时。 任何时候你观察到一个糟糕的完成,你可以将它添加到数据库并做一些标签 - 随着时间的推移,监督的方法会变得更好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.