搜索排名/相关性算法
Posted
技术标签:
【中文标题】搜索排名/相关性算法【英文标题】:Search ranking/relevance algorithms 【发布时间】:2010-09-15 17:15:48 【问题描述】:在开发知识库中的文章数据库时(例如) - 对用户问题最相关的答案进行排序和显示的最佳方法是什么?
您会根据以前的用户是否找到帮助文章来使用额外的数据,例如关键字权重,还是您认为简单的关键字匹配算法就足够了?
【问题讨论】:
【参考方案1】:也许最简单、最天真的方法会立即产生有用的结果,那就是实现*tf-idf:
tf–idf 加权方案的变体经常被搜索引擎用作在给定用户查询的情况下对文档的相关性进行评分和排名的中心工具。 tf–idf 可以成功地用于文本摘要和分类等各个学科领域的停用词过滤。
在我最近的一个相关问题中,我了解到一本关于该主题的优秀免费书籍,您可以下载或在线阅读:
An Introduction to Information Retrieval
【讨论】:
【参考方案2】:这是一个难题,Google 等公司正在努力解决这个问题。看看Google Enterprise Search Appliance 或Exalead Enterprise Search。
然后,作为个人意见,我认为与天真的关键字搜索和按文档查看次数排序相比,任何“天真的”方法都不会改善结果。
如果您有可能将您的知识库公开到网络上,那么就去做吧,让您最喜欢的搜索引擎为您处理搜索。
【讨论】:
Google 不再销售 Enterprise Search Appliance 的新许可证。【参考方案3】:我认为这里的角度不是检索本身......它是关于对检索到的信息的相关性进行评分(一种更被动和被动的方法),以后可以用来改进搜索引擎。
我猜你可以试试——
tfidf 上的 knn 用于检索信息
将这些检索到的信息手动标记为相关性分数
然后对该分数进行回归以预测未知搜索结果的分数并对其进行排序。只是一个想法......
第三点其实是基于Rocchio算法的。可以看here
【讨论】:
【参考方案4】:您的确切问题更具体一点会很好。您可以使用许多不同的技术。其中许多是由其他数据驱动的。您当然可以使用Lucene 并构建自己的索引。许多语言都有与 lucene 的绑定。向上移动还有 Solr 项目,它是 Lucene,周围有很多工具和额外的功能。这可能更符合您的要求。
意图很棘手,大多数现代搜索引擎都依赖统计意图来帮助对结果进行排序。您始终可以拥有一个本文是否有用的按钮,并存储指向有用文档的查询文本。然后,您可以在索引中添加一层信息,以提升特定的单词或短语,并帮助它们指向特定的文档。
需要考虑的一些事情...有多少文件?平均长度是多少?他们经常更新吗?用户如何处理这些文档?独特词在文档中的传播是什么样的? (更简单地说,根据共同的独特特征将查询与特定文档进行匹配很容易。)
如果它是在网络上,您总是可以创建一个只搜索您的网站的谷歌自定义搜索引擎,尽管您可能会发现由于各种原因这不是最理想的。
您始终可以从一个简单的索引开始,然后通过与用户交谈和捕获数据逐渐使其变得更加复杂。
【讨论】:
【参考方案5】:在处理问题时,关键字匹配是不够的,您需要了解意图,正如 joannes 所说的搜索中非常热门的话题
【讨论】:
以上是关于搜索排名/相关性算法的主要内容,如果未能解决你的问题,请参考以下文章