对搜索引擎同义词支持的实验, 分析模拟


今天偶尔看到一个同义词库, 想到这个有什么用途哪? 肯定是用来判断2句话, 2篇文章的相似性的.

它对搜索引擎,对论文抄袭鉴定系统肯定有用, 于是去搜索引擎试了试, 结果大失所望失望, 貌似google,bing,baidu对同义词没有做处理, 感觉是很简单的东西, 竟然没有做相关处理.

而且不仅仅是没有做同义词处理, 相关度方面也很差, 真是很奇怪的事情.


我们随便找一句话: (从google的桌面工具文档里)

A: "我们十分关注您的安全并为此推出了一项功能",

对应样本为:

B: "我们非常关注您的安全并为此推出了一项功能"


我们搜索一下, 可以发现 A 可以匹配的很好, 如果改成B, 发现和A匹配的第一项不见了, 按照正常猜想即使改了一个词 相关度应该还是很高, 不知道为什么会这样.




替换其中一个同义词: (发现原来的网页不在前面了, 翻了几页也没有找到)





我们暂且不考虑 "大胜美国队" 和 "大败美国队"的语义分析, 但是上面的结果肯定不尽人意, 因为你可能需要考虑所有同义词, 否则可能就错过你想要的结果.



下面我们做一个简单的分析和模拟来实现同义词的相关逻辑, 假设的流程如下:
  •     首先我们要有同义词对应表(多对多,可以有权重)
  •     收录网页时把相应同义词映射到同一个词, 当然可以映射多个
  •     在搜索时先预处理用户输入的内容
  •     根据匹配算法计算


1. 同义词表结构如下

一百分 -->满分, 0.8
十分 --> 满分, 0.8

十分 --> 非常, 0.95
特别 --> 非常, 0.9
格外 --> 非常, 0.9

关心 --> 关注, 0.95
注意 --> 关注, 0.85

......

所有同义词映射到同一个词语, 并赋予一个权重. 当然还有多义词的问题, 会出现多个映射.

当然同义词的整理也是个巨大的工作量, 网上也有一些词库.


2. 根据同义词库的映射

    原内容: 我们十分关注您的安全并为此推出了一项功能
    映射后: 我们 满分*0.8|非常*0.95|(十分) 关注您的安全并为此推出了一项功能

    "|"表示有多个选择, "()"表示为原内容.

3. 对输入内容的分析映射

    用户输入: 我们非常关心您的安全并为此推出了一项功能    
    分析映射: 我们非常 关注*0.95|(关心) 您的安全并为此推出了一项功能

4. 匹配查找
   
   匹配查找就是搜索引擎核心的逻辑了, 当然在遇到 "满分*0.8|非常*0.95|(十分)" 需要增加同义词判断逻辑, 根据2个权重可以得出一个同义词的匹配度, 然后继续分析即可.



以上只是一个非常简单的分析模拟, 和实际的搜索引擎逻辑差别非常大, 仅供参考.

posted on 2010-08-16 09:26 Scud(飞云小侠) 阅读(2618) 评论(1)  编辑  收藏 所属分类: Java理论原则

评论

# re: 对搜索引擎同义词支持的实验, 分析模拟 2010-08-16 10:02 bbmonkey62笨笨猴

目前所有的搜索引擎都只是按关键词查找内容,最多也只是做了一些很简单的处理,比如搜索:武大,可能会把武汉大学也搜索出来,但像你这篇文章中提到的,现在还没有搜索引擎能做到。
以后的搜索引擎可能会在智能程度提高,但难度也是非常大的。  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2010年8月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

公告

文章发布许可
创造共用协议:署名,非商业,保持一致

我的邮件
cnscud # gmail


常用链接

留言簿(15)

随笔分类(113)

随笔档案(103)

相册

友情链接

技术网站

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜