为了账号安全,请及时绑定邮箱和手机立即绑定

您如何实现“您的意思”?

您如何实现“您的意思”?

小唯快跑啊 2019-11-22 10:54:37
假设您的网站中已经有一个搜索系统。<spell_checked_word>像Google在某些搜索查询中一样,您如何实现“您的意思是:” ?
查看完整描述

3 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

实际上,Google所做的工作非常重要,而且乍一看是违反直觉的。他们没有像检查字典那样做任何事情,但是他们利用统计信息来识别返回比您的查询更多结果的“相似”查询,确切的算法当然是未知的。


这里有不同的子问题需要解决,作为所有自然语言处理统计数据的基础,必须有一本书:统计自然语言处理基础。


具体来说,为了解决单词/查询相似性的问题,我使用Edit Distance取得了很好的效果,Edit Distance是一种字符串相似性的数学度量,效果出乎意料。我曾经使用Levenshtein,但其他人可能值得研究。


根据我的经验,Soundex很糟糕。


实际上有效地存储和搜索大的拼写错误的词典,并且具有亚秒级的检索功能也是不容易的,最好的选择是利用现有的全文索引和检索引擎(即不是数据库的那个),Lucene当前是其中的一种最好的之一,巧合地移植到许多平台上。


查看完整回答
反对 回复 2019-11-22
?
慕标5832272

TA贡献1966条经验 获得超4个赞

有人问到如何为搜索引擎创建最先进的拼写建议系统,我感到非常惊讶。我在一家搜索引擎公司从事这一主题的工作已经一年多了,我可以指出有关该主题的公共领域信息。


如前一篇文章所述,Google(以及Microsoft和Yahoo!)既不使用任何预定义的字典,也不使用成群的语言学家来思考可能的拼写错误的查询。由于问题的严重性,这将是不可能的,而且还因为不清楚人们是否可以正确识别查询的时间和是否拼错。


相反,有一个简单而有效的原则也适用于所有欧洲语言。假设参考查询是计数最高的查询,请在搜索日志中获取所有唯一查询,并计算所有查询对之间的编辑距离。


这个简单的算法非常适合许多类型的查询。如果您想将其提高到一个新的水平,那么我建议您阅读Microsoft Research关于该主题的论文。你可以在这里找到


本文有很好的介绍,但之后您将需要了解诸如隐马尔可夫模型的概念。


查看完整回答
反对 回复 2019-11-22
  • 3 回答
  • 0 关注
  • 385 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信