【问题标题】:Predicting phrases instead of just next word预测短语而不是下一个单词
【发布时间】:2017-03-22 20:46:15
【问题描述】:

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

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

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

例如,考虑输入the cat

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

假设:

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

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

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

【问题讨论】:

    标签: algorithm autocomplete n-gram phrases


    【解决方案1】:

    对于这个问题,你需要定义什么是你认为是有效的完成——然后应该有可能想出一个解决方案。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-04
      • 2022-01-23
      • 1970-01-01
      • 2016-02-19
      相关资源
      最近更新 更多