试验目标:对比试验百度和google的分词性能对笔误词条的勘误能力
实验方法:输入错误单词“克莱死勒” (正确应该是:克莱斯勒)
实验结果:
百度:首先告诉我你是不是输错了,应该是克莱斯勒,然后列出了克莱死勒关键字的内容,当然互联网是很大的因此大家可以看到确实有人和我一样输错了,但百度除了提示一下,并没有真正起到纠错的作用。

google:google中同样提示了,词条应该是克莱斯勒,但我们注意到google在分词算法上更先进,据我他推测他拥有的应该是字级词条和词级查询以及强大的常用词库,请大家注意第一条信息:克莱 和 死勒被拆开并分别匹配,而这个时候即使我们输错了,我们得到的信息也正确得多,至少有效信息要比百度多得多,当然有人肯定会问我就是要查那个错的词呢?当然可以!

google强制查询:依然提示,但已经按照克莱死勒来查询了,这就是google!不能不让人佩服的地方。

总结:在分词技术上,基本上有那么几种流派:
1 单字流派,由于中文的复杂度,因此在没有良好词库的情况下这种单字虽然在效率上极低(相对而言)但它依然能保证查什么得到什么,相信大多数朋友和我一样也是用这种模式比较多,他不需要后期维护,也能应付不断的发展,缺陷就是有一天会遇到效率瓶颈,无论是索引抓取还是前台查询
2 单词流派,也就是著名的两分词,缺点很简单查单字不要想了,查组合由于他的 2 2 组合 运算复杂度 是 n×n-1×n-2....应该说相比 单子的n*n*n。。。要高不少,但缺点就是不能查单字,应用比较狭窄。
3 词组合,这是目前大家流行的流派,有庖丁 中科院ices 等等,我也用过但最终都因为用户词库吸收难度非常大,而且用户库对于搜索结果影响极大,对于增量类系统(老索引都是update不删除重做)这会带来灾难性后果,词库不够时往往会产生不可预料的效果,本人曾应用过一个30万的词库索引it和生活类信息,但效果简直可以用失败来形容。但对于大型系统google百度等这样的复杂度并不难,首先baidu google的索引一定是在不断删除和增长的过程,不存在真正的老数据,第二他们可以利用索引本身记录用户输入习惯用概率算法(最简单的就是贝叶斯)实现词条的分拣,上述的词条查错应该就是这类应用,而且他们会不断修正和修改分词的基础算法,因此效果和效率上都会好过单字。但本次试验也可以看到百度和google在策略上的不同。google是单字+单词模式 baidu则是单一的单词模式。从效果上来说我个人倾向于google的模式,这种智能分词的模式和底层单字模式的设计应该是效果最好的(效率也不用担心,毕竟google多的是服务器和带宽,少的是访问量-_-)
分享到:
相关推荐
[CDATA[ ]]> 用于包含 Mybatis 的标签(如 `<if>`、`<where>`、`<choose>` 等),否则这些标签将不会被解析。 实例如下:<select id="allUserInfo" parameterType="java.util.HashMap" resultMap="userInfo1"> <!...
它包含了一些预定义的字符数组,用于转义特殊字符,如 `<`、`>`、`&`、`"` 和 `'`。通过重写writeText、startNode、endNode等方法,我们可以控制XML的生成,确保在需要的地方插入CDATA。 在处理包含特殊字符的text...
微信小程序支付JSAPI交易类型 已通过测试 返回例子如下: <xml><return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> <result_code><![CDATA[SUCCESS]]></result_code>
[CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></...
自己将数据导入到xml中的,希望有需要的朋友可以自己下载,格式为<!DOCTYPE PCAroot[ <!ELEMENT PCAroot (Province*)> <!ELEMENT Province (City*)> <!ELEMENT City (Area*)> <!ELEMENT Area (#PCDATA)> <!...
[CDATA[<p>Communication Systems of all types</p>]]></details> <testsuite name="Hand-held devices"> <details><![CDATA[]]></details> <testcase name="10G shock"> <summary><![CDATA[]]></summary> ...
[CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>0</FuncFlag> </xml...
ATTLIST 电话 类别 CDATA "移动电话"> ]> <联系人列表> <说明>&content;</说明> <联系人> <姓名>刘保文</姓名> <ID>201003101115</ID> <公司>腾飞汇通有限公司</公司> <电话 类别="移动电话">18993380967</...
<preconditions><![CDATA[1.使用udp_bi用户在PLSQL正常登陆UAT数据库<br> (UAT数据库IP: 10.0.13.178)<br> 2.数据库脚本已下载至本地环境]]></preconditions><importance><![CDATA[2]]></importance><steps> <step>
[CDATA["&fromusername&"]]></ToUserName>" &_ "<FromUserName><![CDATA["&tousername&"]]></FromUserName>" &_ "<CreateTime>"&now&"</CreateTime>" &_ "<MsgType>news</MsgType>" &_ "<ArticleCount>3</...
[CDATA[FAIL]]></return> <return><![CDATA[商户号mch_id与appid不匹配]]></return> </xml> 原因是我拿到的商户号不是这个公众号的。一定要检查是不是这个公众号的商户号。 免责声明:本站所有文章和...
2. '<':当遇到 '<' 时,状态变化到 '<',以判断是否是CDATA部分的起始。 3. '<!':继续往后读,检查是否是CDATA的开始。 4. '<![':继续,检查是否是CDATA的开始。 5. '<![C':继续,检查是否是CDATA的开始。 6. '...
例如,`<department>`标签使用`dept name`、`building`和`budget`属性来存储部门信息。同样,`<instructor>`标签使用`IID`、`name`、`dept name`和`salary`属性来描述教师。`<teaches>`标签则通过`IID`和`course id`...
**示例**:定义一个`<note>`元素,其包含`<to>`、`<from>`、`<heading>`和`<body>`四个子元素,其中`<to>`、`<from>`和`<heading>`元素仅包含文本数据,而`<body>`元素可以包含文本和子元素。 ```xml <!ELEMENT note...
</body> </note> ``` 在这个例子中,`<!DOCTYPE note [...]>`定义了文档类型为`note`,并且规定了`note`元素包含`to`、`from`、`heading`和`body`这四个子元素,每个子元素都允许包含字符数据(#PCDATA)。 外部...
在XML文档中,为了保证文档的结构正确性和语义清晰性,有一些特殊的字符需要进行特殊处理,例如"<"、">"、"&"等。这是因为这些字符在XML语法中具有特定含义,例如"<"用于标记元素的开始,"&"用于定义实体引用。如果...
</body> </note> ``` 对应的`note.dtd`文件内容与内部声明相同。 使用DTD的好处主要包括: 1. **自包含性**:每个XML文件都可以携带其格式描述,方便理解和处理。 2. **标准化**:为不同的人提供了一种共同理解数据...
- 例如,`<gbook>` 元素包含了 `<info>` 和 `<messages>` 两个子元素。 ```xml <?xml version="1.0" encoding="utf-8"?> <!ELEMENT gbook (info,messages)> <!ELEMENT info (user,home,msgtotal,pagenow,...
在本例中,我们的目标是提取XML中 `<RecordSet>` 节点包裹的数据,这些数据位于CDATA区域内。 首先,我们需要了解如何创建一个类来表示XML结构中的数据。在描述中提到的代码中,创建了一个名为`ReadXml`的类,包含...
</article> </journal> ``` 在这个例子中,`journal` 和 `article` 是元素,`This is some <a>fdsafda</a> arbitrary text!` 是文本内容。 XML 文档中的文本信息不能包含特殊字符,如 `<`,若需使用,可以使用 ...