挖掘搜索日志以改进自动完成建议?

机器算法验证 相关性 聚类 数据集 数据挖掘
2022-03-22 11:51:04

我有来自自动完成表单的日志,我想利用它来增加它返回的结果的智能。

我有一个项目,围绕用户从约 15,000 个独特字符的数据库中选择歌剧字符展开。我的困难是每个字符在数据库中仅作为一个名称出现,但公众也可能以任意数量的其他通俗名称知道它。

我很幸运能够收到少量的流量,目前有大约 20,000 行我的用户输入的字符串日志以及他们最终选择的歌剧角色。

如果用户在他们的第一个字符串中没有找到他们正在搜索的字符,他们通常会尝试使用另一个名称来搜索该字符。当他们成功时,这些数据将角色的俗名与角色本身相关联。我希望利用这些数据来使我的自动完成表单与这些俗名相匹配。

不幸的是,除了有用的相关性之外,还有许多(也许更多)随机相关性。通常当用户的尝试没有返回他们正在寻找的结果时,他们不会尝试使用另一个名称的字符,而是简单地尝试(并定位)一个完全不同的字符。

我已经阅读了许多关于使用搜索日志来改进自然语言搜索查询的学术论文,但是这些方法似乎都没有在这种狭隘的情况下有太多的应用。

是否有对此应用有用的已知方法?

我的项目可以在http://fachme.com查看

3个回答

有趣的项目。我想到的技术是关联挖掘

这种技术可以自动发现这种数据中的许多模式。它经常用于零售市场研究,其中的问题是“如果购物者购买了 10 件产品,其中哪些是‘一起’购买的,哪些恰好在同一个篮子里?” 例如,如果每个人都一起购买绷带和抗生素软膏,那么我可能希望将这些产品放在商店中并排放置。

缺点是这种技术无法捕获数据中的时间信息,因为它只查看用户进行的搜索查询篮,而不是他们的订单。

我对挖掘时间数据知之甚少,但也许有人可以建议一种时间形式的关联挖掘?

这是一个基于统计显着性排序相关性的问题,并随着时间的推移生成足够的数据来定义该显着性。随着越来越多的人搜索并关联术语和字符,噪声(随机相关性)将被过滤掉。

当用户输入他们的查询时,自动完成应该返回前 n 个结果。最初,它可能显示 5 个口语相关性和 5 个随机相关性(如果 n=10)。这些相关性可能在开始时的权重相同,因为您的数据库中每个术语可能只有一个相关性(它们可能按字母顺序或随机显示给您的用户)。随着用户自然地从自动完成中选择更合适的建议,您的相关性将随着时间的推移而变得重要。发生这种情况时,不太重要的(阅读:随机)相关性将下降到底部,从而进一步加强顶部那些的重要性,因为它们对您的用户变得相对更加可见。

请记住,统计显着性没有捷径可走。从本质上讲,它首先需要足够大的样本集才能存在。

是否有可用于字符名称的相似性度量?除此之外,我觉得你在这里需要一些反馈:基本上,你需要证明或反驳你从数据中假设的每一个相关性(这里:等价性)。

假设用户输入 A' 来查找字符A,然后输入 B' 来查找字符B如果假设 A' = B',则需要证明或反驳这一点。为什么不首先向下一个搜索 B' 的用户展示字符A反之亦然,向用户展示寻找 A' B结果作为选项。这一点,加上一些机器学习/聚类技术,恐怕我不能告诉你太多,应该可以帮助你解决问题。