﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-飞云小侠之风儿吹过-随笔分类-理论原则</title><link>http://www.blogjava.net/scud/category/3592.html</link><description>山谷里鸟语花香,溪水潺潺</description><language>zh-cn</language><lastBuildDate>Mon, 16 Aug 2010 03:15:24 GMT</lastBuildDate><pubDate>Mon, 16 Aug 2010 03:15:24 GMT</pubDate><ttl>60</ttl><item><title>对搜索引擎同义词支持的实验, 分析模拟</title><link>http://www.blogjava.net/scud/archive/2010/08/16/328950.html</link><dc:creator>Scud(飞云小侠)</dc:creator><author>Scud(飞云小侠)</author><pubDate>Mon, 16 Aug 2010 01:26:00 GMT</pubDate><guid>http://www.blogjava.net/scud/archive/2010/08/16/328950.html</guid><wfw:comment>http://www.blogjava.net/scud/comments/328950.html</wfw:comment><comments>http://www.blogjava.net/scud/archive/2010/08/16/328950.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/scud/comments/commentRss/328950.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/scud/services/trackbacks/328950.html</trackback:ping><description><![CDATA[<br />
今天偶尔看到一个同义词库, 想到这个有什么用途哪? 肯定是用来判断2句话, 2篇文章的相似性的.<br />
<br />
它对搜索引擎,对论文抄袭鉴定系统肯定有用, 于是去搜索引擎试了试, 结果大失所望失望, 貌似google,bing,baidu对同义词没有做处理, 感觉是很简单的东西, 竟然没有做相关处理.<br />
<br />
而且不仅仅是没有做同义词处理, 相关度方面也很差, 真是很奇怪的事情.<br />
<br />
<br />
我们随便找一句话: (从google的桌面工具文档里)<br />
<br />
A: "我们十分关注您的安全并为此推出了一项功能", <br />
<br />
对应样本为: <br />
<br />
B: "我们非常关注您的安全并为此推出了一项功能"<br />
<br />
<br />
我们搜索一下, 可以发现 A 可以匹配的很好, 如果改成B, 发现和A匹配的第一项不见了, 按照正常猜想即使改了一个词 相关度应该还是很高, 不知道为什么会这样.<br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/scud/search/google_search_a.jpg" height="425" width="666" /><br />
<br />
<br />
替换其中一个同义词: (发现原来的网页不在前面了, 翻了几页也没有找到)<br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/scud/search/google_search_b.jpg" height="467" width="664" /><br />
<br />
<br />
<br />
我们暂且不考虑 "大胜美国队" 和 "大败美国队"的语义分析, 但是上面的结果肯定不尽人意, 因为你可能需要考虑所有同义词, 否则可能就错过你想要的结果.<br />
<br />
<br />
<br />
下面我们做一个简单的分析和模拟来实现同义词的相关逻辑, 假设的流程如下:<br />
<ul>
    <li>
    &nbsp;&nbsp; &nbsp;首先我们要有同义词对应表(多对多,可以有权重)</li>
    <li>
    &nbsp;&nbsp; &nbsp;收录网页时把相应同义词映射到同一个词, 当然可以映射多个</li>
    <li>
    &nbsp;&nbsp; &nbsp;在搜索时先预处理用户输入的内容</li>
    <li>
    &nbsp;&nbsp; &nbsp;根据匹配算法计算</li>
</ul>
<br />
<br />
1. 同义词表结构如下<br />
<br />
一百分 --&gt;满分, 0.8<br />
十分 --&gt; 满分, 0.8<br />
<br />
十分 --&gt; 非常, 0.95<br />
特别 --&gt; 非常, 0.9<br />
格外 --&gt; 非常, 0.9<br />
<br />
关心 --&gt; 关注, 0.95<br />
注意 --&gt; 关注, 0.85<br />
<br />
......<br />
<br />
所有同义词映射到同一个词语, 并赋予一个权重. 当然还有多义词的问题, 会出现多个映射.<br />
<br />
当然同义词的整理也是个巨大的工作量, 网上也有一些词库.<br />
<br />
<br />
2. 根据同义词库的映射 <br />
<br />
&nbsp;&nbsp; &nbsp;原内容: 我们十分关注您的安全并为此推出了一项功能<br />
&nbsp;&nbsp; &nbsp;映射后: 我们 满分*0.8|非常*0.95|(十分) 关注您的安全并为此推出了一项功能<br />
<br />
&nbsp;&nbsp; &nbsp;"|"表示有多个选择, "()"表示为原内容.<br />
<br />
3. 对输入内容的分析映射<br />
<br />
&nbsp;&nbsp; &nbsp;用户输入: 我们非常关心您的安全并为此推出了一项功能&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;分析映射: 我们非常 关注*0.95|(关心) 您的安全并为此推出了一项功能<br />
<br />
4. 匹配查找<br />
&nbsp; &nbsp;<br />
&nbsp;&nbsp; 匹配查找就是搜索引擎核心的逻辑了, 当然在遇到 "满分*0.8|非常*0.95|(十分)" 需要增加同义词判断逻辑, 根据2个权重可以得出一个同义词的匹配度, 然后继续分析即可.<br />
<br />
<br />
<br />
以上只是一个非常简单的分析模拟, 和实际的搜索引擎逻辑差别非常大, 仅供参考.<br />
<br />
<img src ="http://www.blogjava.net/scud/aggbug/328950.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/scud/" target="_blank">Scud(飞云小侠)</a> 2010-08-16 09:26 <a href="http://www.blogjava.net/scud/archive/2010/08/16/328950.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>读书摘抄－－面向对象设计的11个原则</title><link>http://www.blogjava.net/scud/archive/2005/09/26/14134.html</link><dc:creator>Scud(飞云小侠)</dc:creator><author>Scud(飞云小侠)</author><pubDate>Mon, 26 Sep 2005 10:15:00 GMT</pubDate><guid>http://www.blogjava.net/scud/archive/2005/09/26/14134.html</guid><wfw:comment>http://www.blogjava.net/scud/comments/14134.html</wfw:comment><comments>http://www.blogjava.net/scud/archive/2005/09/26/14134.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/scud/comments/commentRss/14134.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/scud/services/trackbacks/14134.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 面向对象设计的11个原则&nbsp;&nbsp;<a href='http://www.blogjava.net/scud/archive/2005/09/26/14134.html'>阅读全文</a><img src ="http://www.blogjava.net/scud/aggbug/14134.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/scud/" target="_blank">Scud(飞云小侠)</a> 2005-09-26 18:15 <a href="http://www.blogjava.net/scud/archive/2005/09/26/14134.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>