现在要做的项目里也会有问答模块,所以参考了一下百度知道,发现它有个“
其他类似问题”,不明白百度是通过什么算法来找出类似问题的,求思路……
接楼上 提取关键字 可以用盘古分词 使用也比较简单 园里有好多关于Lucene.Net和盘古分词的文章
百度是通过什么算法实现的,这个估计得问百度的人了。如果你做的不是很大型公共问答系统,无非就是让提问者对自己的问题选择分类以及确定不同关键词。然后你要找出类似的问题,当然就在同样分类下有类似关键字的问题中模糊查询。如果要做到更细腻。那还得有正则或者其他什么算法,筛选出问题文本内容匹配程度较高的问题。一层一层下来降低搜索范围。最后确定一些类似问题。当然这个没法完全准确的。你看百度知道也没做到完全准确的,有时候出来的类似的问题基本和提问者的问题没关系。
这只是个狠狠简单的思路罢了,很多细节做起来也不是那么容易。仅供参考
一楼说得对。其实还是根据你的问题,判断问题的分类。搜索该分类下的与你提问的关键字吻合的问题。
具体的,百度工程师吧
我经常问问题,回答问题。
对于百度的这个查看其他类似问题这个功能,和你输入标题后自动分类的功能我觉得做的挺好的
有时候我输入的问题很是模糊,也没有什么技术名词。但是百度就是能给我分到软件下,虽然语言不会对。但是就这点就觉得很厉害。
说下我的思路吧
1 提问通常都是会分类,所以第一次就可以大致确定,所提出的问题属于哪一类,
2 提取问题关键字 比如 "C#如何使用反射" 通过算法去除不相关字段“如何” "使用",最后只留下 "C# 反射" 再根据这个关键词去已有题库中去匹配这样得到的结果都是与提出的问题相关的贴子了。 这里有难度的就是提取关键字的算法了。
分词工具,然后通过这些工具计算出命中率。。
对的 使用分词,搜索引擎
分词后,对问题库中的问题进行匹配度分析,找出最高的几条匹配度数据进行展示~