搜索引擎优化百度分词算法分析
浅谈站长如何利用百度的搜索引擎分词技巧进行优化

浅谈站长如何利用百度的搜索引擎分词技巧进行优化浅谈站长如何利用百度的搜索引擎分词技巧进行优转动1、运用百度快照机制来优化网站当我们浏览网站时,我们经常无法打开或打开网页太慢的网站。
很多真丝用户会选择使用百度快照打开相应页面,但网站上相应的图片、音频和视频一般无法打开。
而且,一旦网站无法正常打开,该快照的缓存时间会更长,导致网站排名持续下降。
因此,在网站建设之前,我们应该找到办法做好网站空间建设,保证网站空间的稳定,为网站的发展打下良好的基础。
2.从百度蜘蛛的气质做起做好网站内页优化很多seo从业者在网站的优化过程中,非常希望能够让百度尽量多的浏览自己的网站,尽可能多的抓取更多的网站内容,可是当这些网站出现大量的死链接之后,百度蜘蛛即使来了,也很容易迷路,更容易撞到南墙而不自知,最终导致对该网站的反感,所以对于网站优化来说,光光做好网站外部优化,提升网站排名还是不行的,还需要做好基本功,把自己的网站内页优化好,比如要设置44页面,告知百度蜘蛛在遇到死链接之后,要及时的回头,不至于让百度蜘蛛困在网站里面,从而让百度蜘蛛更好的抓取你的网页。
3、学会利用百度的搜索引擎分词技巧进行优化每个搜索引擎都有自己的优势。
对于中文搜索引擎来说,分词技术无疑是核心技术。
学习分析百度等搜索引擎的分析技术,将其应用于网站优化,必须事半功倍。
这些分词技术往往可以作为长尾关键词分析的利器,因为分词技术主要依赖于根据用户的关键词使用双引号或书名号确匹配,也可以模糊匹配,而这种模糊匹配正是长尾关键词的优势!所以在选择长尾词优化的时候,一定要充分考虑搜索引擎的分词技术。
4、利用搜索引擎提供相关性搜索,为网站带来流量目前,百度、谷歌等主流搜索引擎几乎都有记忆功能。
当搜索词的搜索量较大时,搜索关键字时,搜索框会弹出关联词。
同时,搜索引擎还提供了语言纠错功能。
这些功能不仅提高了用户的搜索体验,还帮助我们优化网站,学会运用这些技巧,善于分析用户喜欢使用的长尾关键词。
中文搜索引擎技术

一.如何获得用户的查询信息 可对搜索引擎用户查询日志(LOG)文件做查询归类。 二.如何选择提示词 对于用户查询进行分词,然后对于分词后的结果来进行相似 性计算。
Info.Retrieval
“娱乐新闻报道”和“新闻娱乐报道”的相关提示完全一样。
三.如何计算相似性并排序输出
第八章 中文搜索引擎技术
第一节 中文分词技术 分词技术简述 分词技术 分词中的难题与发展 第二节 拼写检查错误提示 第三节相关提示功能分析 第四节 CACHE结构 CACHE的实现原理 三级CACHE的设计
Info.Retrieval
一.什么是中文分词 把中文的汉字序列切分成有意义的词。 例:我/是/一个/学生 二.分词技术简述 1.基于字符串匹配的分词方法 按照一定的策略将待分析的汉字串与一个机器词库中的词条 进行匹配。 常用分词方法: 正向最大匹配法(由左到右的方向) 例:我 /有意/ 见/ 分歧 反向最大匹配法 例:我 /有/意见/分歧
Info.Retrieval
娱乐,新闻,报道
娱乐,报道
Info.Retrieval
新闻,报道
研究表明用户的查询有30%-40%是重复的。 一.一级Cache的设计 1.的一级Cache 提交一个古怪的查询,
只要是两次提交同样的查询,第二次返回时间总是0.001秒, 证明Cache的存在。
Info.Retrieval三.分词技术分析 1.最大分词词 长:
小于等于 3个中文字不切割 对于大于等于 4个汉字的词将被分词 。
Info.Retrieval
2.分词算法: 查询:“工地方向导” 正向最大匹配: 工地/方向/导 反向最大匹配: 工/地方/向导
数据结构与搜索引擎算法的优化

数据结构与搜索引擎算法的优化在当今信息化时代,搜索引擎在我们的生活中扮演着重要的角色。
而搜索引擎背后的数据结构和优化算法则是其高效运行的关键。
本文将探讨数据结构与搜索引擎算法的优化,并分析其对搜索引擎性能的影响。
一、数据结构的选择与搜索引擎性能搜索引擎需要处理大量的数据,如何高效地组织和存储这些数据成为一个关键问题。
数据结构的选择直接影响到搜索引擎的性能。
1.哈希表哈希表是一种常见的数据结构,其通过将关键字映射为索引来实现数据的快速访问。
在搜索引擎中,哈希表可用于存储网页的URL和相关信息,以便用户快速检索。
然而,哈希表在处理冲突和扩容时可能会带来较大的开销,需要进行优化。
2.倒排索引倒排索引是搜索引擎中常用的一种数据结构,用于实现关键字与文档之间的映射。
通过倒排索引,搜索引擎可以快速从大量的文档中找到包含用户查询关键字的文档。
倒排索引的构建需要对文档进行预处理、分词和排序等操作,提高了搜索效率。
3.红黑树红黑树是一种自平衡二叉搜索树,用于在搜索引擎中快速存储和检索数据。
红黑树的插入和删除操作比较高效,并且可以保持树的平衡。
在搜索引擎中,红黑树可用于存储关键字与对应网页的相关信息,提高搜索的效率。
二、搜索引擎算法的优化除了选择合适的数据结构,搜索引擎还需要通过算法的优化来提高搜索的效率和准确性。
1.排名算法排名算法是搜索引擎中最重要的算法之一,它决定了搜索结果的排序方式。
目前,常用的排名算法包括PageRank算法、TF-IDF 算法和BM25算法等。
这些算法通过分析页面的链接结构、关键字出现频率和相关性等指标,对网页进行排序,使用户能够获得最相关的搜索结果。
2.索引算法索引算法用于构建和更新搜索引擎的索引,以便用户能够快速找到相关的网页。
常见的索引算法包括倒排索引和B树索引等。
倒排索引基于关键字的出现频率和位置信息,快速定位到包含关键字的文档;而B树索引通过有序存储关键字,提高了搜索的效率。
3.查询优化算法查询优化算法用于对用户查询进行优化,提高搜索结果的准确性和响应速度。
搜索引擎的分词机制

搜索引擎的分词机制(木木长官)〃長官"(4651130) 14:57:53今天我来给大家讲下搜索引擎的分词机制〃長官"(4651130) 14:57:58准备下马上就开始〃長官"(4651130) 15:00:36在搜索引擎中用户提交的搜索内容会被后台提交到数据库与数据库中的数据来对比,从中调出相应的数据。
(这些东西做程序的可能了解)与普通网站的站内搜索类似〃長官"(4651130) 15:01:38下面举例:比如你想要搜索的是“京珠高速的火车出轨并且无一人伤亡天上也掉下冰雹”这个语句的时候〃長官"(4651130) 15:02:40如果搜索引擎直接用你段话与数据库中的数据来对比。
肯定搜索不出来任何数据。
因为这个是我自己随便写的。
〃長官"(4651130) 15:03:26但是搜索引擎又不能叫客户搜索不到东西,所以他们用到了中文分词和英文分词〃長官"(4651130) 15:03:42今天主要说中文英文以后在说〃長官"(4651130) 15:04:50当它用了分词后,用过动易CMS系统的朋友,应该知道。
他们采集后的数据,会把标题分割成2个字一组的关键词。
〃長官"(4651130) 15:04:58比如:京珠高速的火车出轨并且无一人伤亡天上也掉下冰雹〃長官"(4651130) 15:05:55这个标题动易的分词机制是这么分:京珠|珠高|高速|速的|的火|火车|车出|出轨|轨并|并且|且无|无一|一人|人伤|伤亡|亡天|天上|上也|也掉|掉下|下冰|冰雹它把每个字前一个和后一个自动组合,虽然不合理,但是有一定的技术含量在里面。
〃長官"(4651130) 15:06:39之所以把词拆分开,就是为了与数据库中的相应数据来对比〃長官"(4651130) 15:08:10搜索引擎可以这样做分词(前提是因为数据库中有相应的数据库,还有临时数据库!这些后面有介绍)〃長官"(4651130) 15:09:03京珠|高速|的|火车|出轨|并且|无一人|伤亡|天上|也掉|下|冰雹〃長官"(4651130) 15:09:35也可以这样分〃長官"(4651130) 15:10:42京珠高速|的|火车出轨|并且|无一人|伤亡|天上|也|掉下|冰雹〃長官"(4651130) 15:11:51怎么个分词方法是根据搜索引擎的数据库与算发有直接的关系〃長官"(4651130) 15:12:22比如百度搜索引擎〃長官"(4651130) 15:13:23这样可以简单的看出他是怎么分的〃長官"(4651130) 15:13:27〃長官"(4651130) 15:14:45京珠高速|的|火车出轨|并且无一|人伤亡|天上|也掉下冰雹〃長官"(4651130) 15:16:02京|珠|高速|的|火车|出轨|并且|无|一人|伤亡|天上|也掉下冰雹〃長官"(4651130) 15:17:22下面来看看百度搜索引擎中的分词的理解与实践〃長官"(4651130) 15:17:48〃長官"(4651130) 15:18:15大家可以看到这个是百度中的分法(不能一概而论)〃長官"(4651130) 15:19:07可以看出我在上面所规划出的词〃長官"(4651130) 15:19:10〃長官"(4651130) 15:16:02京|珠|高速|的|火车|出轨|并且|无|一人|伤亡|天上|也掉下冰雹〃長官"(4651130) 15:19:13这个来`〃長官"(4651130) 15:19:41〃長官"(4651130) 15:20:01而第二个呢〃長官"(4651130) 15:20:08就与上面有些出入了〃長官"(4651130) 15:21:08这些就是在数据库中所存的数据也可以说是字典〃長官"(4651130) 15:21:17/s?wd=%BE%A9%D6%E9%B8%DF%CB%D9%B5%C4%BB%F0%B3%B5%B3%F6%B9%EC%B2%A2% C7%D2%CE%DE%D2%BB%C8%CB%C9%CB%CD%F6+%CC%EC%C9%CF%D2%B2%B5%F4%CF%C2%B1%F9%B1%A2&cl=3〃長官"(4651130) 15:21:26大家可以打开这个地址看一下〃長官"(4651130) 15:21:28一会在看哦〃長官"(4651130) 15:23:20当这站上的某个页面上出现了我刚才搜索的语句,搜索引擎把他分词,当查寻不到的时候,引擎中还会在把分过的词,或者原句在从新的分词〃長官"(4651130) 15:23:54也就是相当于比如搜索的是某个成语〃長官"(4651130) 15:24:37胸有成竹东山再起〃長官"(4651130) 15:25:02刚刚我用的是只能ABC打出来的〃長官"(4651130) 15:25:49直接拼音出来胸有成竹东山再起这两个就能直接打出来。
搜索引擎的分词机制

搜索引擎的分词机制
引擎的分词机制是指将用户输入的查询内容进行分词,将其拆分成多
个独立的词语或短语,然后根据这些词语或短语来匹配和检索相关的网页
或文档。
引擎的分词机制通常包括以下几个步骤:
1.词法分析:将查询内容进行词法分析,将其划分为单个的词语或短语。
这一步骤通常使用词法分析器来实现。
2.去除停用词:停用词是指在引擎中被忽略的常见词语,例如“的”、“是”、“在”等。
去除停用词可以减小索引的大小并提高效率。
3.同义词处理:引擎可能会对查询词进行同义词处理,将输入的词语
转换为与之相关或等价的词语。
这样可以扩展的范围,提高结果的准确性。
4.扩展词处理:引擎还可能对查询词进行扩展,添加相关的词语或短
语以扩大检索的范围。
这可以通过基于词汇和语义的算法来实现。
5.短语匹配:对于多个查询词组成的短语,引擎会进行短语匹配,确
保结果中包含完整的短语而不是单个词语的组合。
6.倒排索引:分词后,引擎会将文档中的每个词语和其所出现的位置
建立倒排索引。
这样可以根据用户查询的词语快速定位到相关文档。
总的来说,引擎的分词机制是将用户查询内容进行分词,并对分词结
果进行处理和匹配,从而实现精确、快速地检索相关网页或文档的过程。
搜索引擎的分词机制

搜索引擎的分词机制(木木长官)〃長官" 14:57:53今天我来给大家讲下搜索引擎的分词机制〃長官" 14:57:58准备下马上就开始〃長官" 15:00:36在搜索引擎中用户提交的搜索内容会被后台提交到数据库与数据库中的数据来对比,从中调出相应的数据。
(这些东西做程序的可能了解)与普通网站的站内搜索类似〃長官" 15:01:38下面举例:比如你想要搜索的是“京珠高速的火车出轨并且无一人伤亡天上也掉下冰雹”这个语句的时候〃長官" 15:02:40如果搜索引擎直接用你段话与数据库中的数据来对比。
肯定搜索不出来任何数据。
因为这个是我自己随便写的。
〃長官" 15:03:26但是搜索引擎又不能叫客户搜索不到东西,所以他们用到了中文分词和英文分词〃長官" 15:03:42今天主要说中文英文以后在说〃長官" 15:04:50当它用了分词后,用过动易CMS系统的朋友,应该知道。
他们采集后的数据,会把标题分割成2个字一组的关键词。
〃長官" 15:04:58比如:京珠高速的火车出轨并且无一人伤亡天上也掉下冰雹〃長官" 15:05:55这个标题动易的分词机制是这么分:京珠|珠高|高速|速的|的火|火车|车出|出轨|轨并|并且|且无|无一|一人|人伤|伤亡|亡天|天上|上也|也掉|掉下|下冰|冰雹它把每个字前一个和后一个自动组合,虽然不合理,但是有一定的技术含量在里面。
〃長官" 15:06:39之所以把词拆分开,就是为了与数据库中的相应数据来对比〃長官" 15:08:10搜索引擎可以这样做分词(前提是因为数据库中有相应的数据库,还有临时数据库!这些后面有介绍)〃長官" 15:09:03京珠|高速|的|火车|出轨|并且|无一人|伤亡|天上|也掉|下|冰雹〃長官" 15:09:35也可以这样分〃長官" 15:10:42京珠高速|的|火车出轨|并且|无一人|伤亡|天上|也|掉下|冰雹〃長官" 15:11:51怎么个分词方法是根据搜索引擎的数据库与算发有直接的关系〃長官" 15:12:22比如百度搜索引擎〃長官" 15:13:23这样可以简单的看出他是怎么分的〃長官" 15:13:27〃長官" 15:14:45京珠高速|的|火车出轨|并且无一|人伤亡|天上|也掉下冰雹〃長官" 15:16:02京|珠|高速|的|火车|出轨|并且|无|一人|伤亡|天上|也掉下冰雹〃長官" 15:17:22下面来看看百度搜索引擎中的分词的理解与实践〃長官" 15:17:48〃長官" 15:18:15大家可以看到这个是百度中的分法(不能一概而论)〃長官" 15:19:07可以看出我在上面所规划出的词〃長官" 15:19:10〃長官" 15:16:02京|珠|高速|的|火车|出轨|并且|无|一人|伤亡|天上|也掉下冰雹〃長官" 15:19:13这个来`〃長官" 15:19:41〃長官" 15:20:01而第二个呢〃長官" 15:20:08就与上面有些出入了〃長官" 15:21:08这些就是在数据库中所存的数据也可以说是字典〃長官" 15:21:17/s?wd=%BE%A9%D6%E9%B8%DF%CB%D9%B5%C4%BB%F0%B3%B5%B3%F6%B9%EC%B2%A2% C7%D2%CE%DE%D2%BB%C8%CB%C9%CB%CD%F6+%CC%EC%C9%CF%D2%B2%B5%F4%CF%C2%B1%F9%B1%A2&cl=3〃長官" 15:21:26大家可以打开这个地址看一下〃長官" 15:21:28一会在看哦〃長官" 15:23:20当这站上的某个页面上出现了我刚才搜索的语句,搜索引擎把他分词,当查寻不到的时候,引擎中还会在把分过的词,或者原句在从新的分词〃長官" 15:23:54也就是相当于比如搜索的是某个成语〃長官" 15:24:37胸有成竹东山再起〃長官" 15:25:02刚刚我用的是只能ABC打出来的〃長官" 15:25:49直接拼音出来胸有成竹东山再起这两个就能直接打出来。
搜索引擎的排序算法分析与优化建议

搜索引擎的排序算法分析与优化建议近年来,随着互联网的快速发展,搜索引擎已成为人们获取信息的主要方式。
搜索引擎的排序算法在其中起着关键作用,它决定了用户搜索结果的排序顺序。
本文将对搜索引擎的排序算法进行分析,并提出一些建议来优化这些算法。
一、搜索引擎排序算法的分析搜索引擎的排序算法主要包括传统的PageRank算法、基于内容的排序算法和机器学习算法。
这些算法有各自的优势和局限性。
1. 传统的PageRank算法传统的PageRank算法是通过计算网页之间的链接关系来评估网页的重要性,然后根据重要性对搜索结果进行排序。
这种算法的优点是简单有效,可以很好地衡量网页的权威性。
然而,它容易被人为操纵,例如通过人工增加链接数量来提高网页的排名。
同时,该算法忽略了网页内容的质量和相关性。
2. 基于内容的排序算法基于内容的排序算法是根据用户的搜索关键词,匹配网页的内容来进行排序。
它考虑了网页的相关性和质量,可以提供更准确的搜索结果。
然而,该算法容易受到关键词的干扰,例如同义词的使用和关键词的滥用。
而且,这种算法对于新兴或少知名的网页往往无法准确判断其质量和相关性。
3. 机器学习算法机器学习算法是近年来蓬勃发展的一种算法,它通过分析用户搜索行为和网页特征,自动优化搜索结果的排序。
这种算法可以不断学习和调整,逐渐提升搜索结果的质量。
然而,机器学习算法需要大量的数据支持和运算资源,在处理大规模数据时效率较低。
二、搜索引擎排序算法的优化建议针对搜索引擎排序算法存在的问题,提出以下优化建议:1. 整合多个算法应综合利用传统的PageRank算法、基于内容的排序算法和机器学习算法的优势,构建一个综合、全面的排序算法。
通过结合不同算法的结果,可以提高搜索结果的准确性和相关性。
2. 引入用户反馈用户反馈是改进搜索引擎排序算法的重要信息源。
引入用户反馈,例如用户点击行为和搜索结果评分,可以不断优化排序算法,提供更符合用户需求的搜索结果。
百度seo优化教程

百度seo优化教程百度SEO优化教程百度SEO(Search Engine Optimization)即百度搜索引擎优化,是指通过一系列的技术手段,提升网站在百度搜索结果中的排序和曝光量,以提高网站的流量、用户体验和品牌影响力。
本篇教程将介绍百度SEO的基本概念、工作原理和优化方法,帮助网站管理员和运营人员更好地进行百度SEO优化。
一、概念和原理1. 百度SEO的目标:百度SEO的最终目标是提升网站在百度搜索结果中的排名,使其在搜索用户关键词查询时能够出现在前几页的位置,从而提高网站的曝光和点击率。
2. 百度SEO的原理:百度搜索引擎通过算法对各个网页进行评分和排序,然后按照评分高低展示在搜索结果页面上。
百度SEO的优化就是通过优化网页结构、内容和外部链接等因素,提高网页的评分和搜索排名。
二、关键词优化1. 关键词研究:通过分析用户需求、竞争对手网站和百度指数等工具,确定适合网站的关键词,选择具有一定搜索量和商业价值的关键词。
同时通过观察搜索结果页面,了解用户对不同关键词的搜索意图和结果的多样性。
2. 标题优化:网页标题是百度搜索结果中最重要的元素之一。
优化标题应包含主要关键词,同时吸引用户点击。
保持标题简短、准确,同时增加一些吸引眼球的词语或表述。
3. 内容优化:网页的内容应针对关键词进行优化,包括文字、图片和视频等。
关键词密度应适中,避免过度堆砌。
同时提供有价值、原创和高质量的内容,满足用户需求。
三、网站结构优化1. 网站布局:清晰的网站结构能够帮助搜索引擎更好地索引和理解网站内容。
合理设置导航、面包屑导航和网站地图等元素,提供便捷的用户导航和搜索引擎抓取。
2. URL优化:URL是用户和搜索引擎进入网站的入口之一。
优化URL结构,使其简短、且包含关键词。
避免使用无意义的数字和符号,提高可读性和用户友好性。
3. 链接建设:外部链接是百度SEO优化的关键。
通过建设高质量的外部链接,增加网站的权威性和流量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
搜索引擎优化百度分词算法分析查询处理以及分词技术随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能、技术和日流量。
作为企业,会根据搜索引擎的知名度以及日流量来选择是否要投放丿告等;作为普通网民,会根据搜索引擎的性能和技术来选择自己喜欢的引擎查找资料;作为技术人员,会把有代表性的搜索引擎作为研究对象。
搜索引擎经济的崛起,又一次向人们证明了网络所蕴藏的巨大商机。
网络离开了搜索将只剩下空洞杂乱的数据,以及大量等待去费力挖掘的金矿。
但是,如何设计一个高效的搜索引擎?我们可以以百度所采取的技术手段来探讨如何设计一个实用的搜索引擎。
搜索引擎涉及到许多技术点,比如查询处理,排序算法,页面抓取算法,CACH机制,ANTI-SPAM等等。
这些技术细节,作为商业公司的搜索引擎服务提供商比如百度,GOOGL等是不会公之于众的。
我们可以将现有的搜索引擎看作一个黑盒,通过向黑盒提交输入,判断黑盒返回的输出大致判断黑盒里面不为人知的技术细节。
查询处理与分词是一个中文搜索引擎必不可少的工作,而百度作为一个典型的中文搜索引擎一直强调其"中文处理"方面具有其它搜索引擎所不具有的关键技术和优势。
那么我们就来看看百度到底采用了哪些所谓的核心技术。
我们分两个部分来讲述:查询处理/中文分词。
一、查询处理用户向搜索引擎提交查询,搜索引擎一般在接受到用户查询后要做一些处理,然后在索引数据库里面提取相关的信息。
那么百度在接受到用户查询后做了些什么工作呢?1、假设用户提交了不只一个查询串,比如"信息检索理论工具"。
那么搜索引擎首先做的是根据分隔符比如空格,标点符号,将查询串分割成若干子查询串,比如上面的查询就会被解析为:信息检索,理论,工具三个子字符串;这个道理简单,我们接着往下看。
2、假设提交的查询有重复的内容,搜索引擎怎么处理呢?比如查询"理论工具理论",百度是将重复的字符串当作只出现过一次,也就是处理成等价的"理论工具",而GOOGL显然是没有进行归并,而是将重复查询子串的权重增大进行处理。
那么是如何得出这个结论的呢?我们可以将"理论工具"提交给百度,返回341,000篇文档,大致看看第一页的返回内容。
OK继续,我们提交查询"理论工具理论",在看看返回结果,仍然是那么多返回文档,当然这个不能说明太多问题,那看看第一页返回结果的排序,看出来了吗?顺序完全没有变化,而GOOGL E排序有些变动,这说明百度是将重复的查询归并成一个处理的,而且字符串之间的先后出现顺序基本不予考虑(GOOGL是考虑了这个顺序关系的)。
3、假设提交的中文查询包含英文单词,搜索引擎是怎么处理的?比如查询" 电影BT下载",百度的方法是将中文字符串中的英文当作一个整体保留,并以此为断点将中文切分开,这样上述的查询就切为电影,BT,下载,不论中间的英文是否一个字典里能查到的单词也好,还是随机的字符也好,都会当作一个整体来对待。
至于为什么,你用查询"电影dfdfdf下载"看看结果就知道了。
当然如果查询中包含数字,也是如此办理。
到目前为止,一切很简单,也很清楚,百度怎么处理用户查询的呢?归纳如下:首先根据分割符号将查询分开,然后看看是否有重复的字符串,如果有,就抛弃多余的,只保留一个,接着判断是否有英文或者数字,如果有的话,把英文或者数字当作一个整体保留并把前后的中文切开。
接着该干什么呢?该考虑分词的问题了。
二、中文分词首先,讲讲百度的分词时机或者条件问题,是否是个中文字符串百度就拿来切一下呢?非也,要想被百度的分词程序荣幸的切割一下也是要讲条件的,哪能是个字符串就切割啊?你当百度是卖锯条的么?那么什么样的字符串才满足被切割的条件呢?简单说来,如果字符串只包含小于等于3个中文字符的话,那就保留不动,当字符串长度大于4个中文字符的时候,百度的分词程序才出马大干快上,把这个字符串肢解掉。
怎么证明呢?我们向百度提交"电影下载",看看返回结果中标为红字的地方,不难看出来,查询已经被切割成电影,下载两个单词了,说明分词程序已经开工了,如果是比4个中文字符更长的字符串,那分词程序就更不客气了,一定大卸八块而后快。
我们来看看三个字符的情况,提交查询"当然择",看起来这个查询不伦不类,那是因为我希望看到这个字符串被切分为当然,择,返回结果365篇相关页面,翻到最后一页,发现标红的关键字都是"当然择"连续出现的情况,好像没有切分,但是还不确定,那么再提交人工分好的查询"当然择"看看,返回结果1, 090, 000篇,基本上可以确定没有进行分词了,当然另外一种解释是:对于三个字符先切分,然后将切分后的结果当作一个短语查询,这样看到的效果和没有切分是相似的。
但是我倾向于判断百度对于少于3个字符的串没有切分,奥卡姆不是说了么"如无必要,勿增实体",干吗做无用功呢。
那么如果没有切分,会有一个随之而来的问题,怎么从索引库里面提取未切分的字符串呢?这牵扯到索引的问题, 我觉得百度应该采取了两套索引机制,一种是按照单词索引,一种是按照N-GRA索引,至于索引的具体问题,以后在详细论述。
下面我们看看百度是采取的何种分词算法,现在分词算法已经算是比较成熟了,有简单的有复杂的,比如正向最大匹配,反向最大匹配,双向最大匹配,语言模型方法,最短路径算法等等,有兴趣的可以用GOOGL去搜索一下以增加理解。
这里就不展开说了。
但是要记住一点的是:判断一个分词系统好不好,关键看两点,一个是消除歧义能力;一个是词典未登录词的识别比如人名,地名,机构名等。
那么百度用的是什么方法?我的判断是用双向最大匹配算法。
至于怎么推理得出的,让我们一步步来看。
当然,这里首先有个假设,百度不会采取比较复杂的算法,因为考虑到速度问题。
我们提交一个查询"北京华烟云",又一个不知所云的查询,尽管不知所云但是自有它的道理,我想看看百度的分词是如何消歧以及是否有词典未登录词的识别的功能,如果是正向最大匹配算法的话,那么输出应该是:"/北京/华/烟云",如果是反向最大匹配算法的话,那么输出应该是:"毛/泽/东北/京华烟云",我们看看百度的分词结果:"/北/京华烟云",一个很奇怪的输出,跟我们的期望相差较多,但是从中我们可以获得如下信息:百度分词可以识别人名,也可以识别"京华烟云",这说明有词典未登录词的识别的功能,我们可以假设分词过程分为两个阶段:第一阶段,先查找一个特殊词典,这个词典包含一些人名,部分地名以及一些普通词典没有的新词,这样首先将""解析出来,剩下了字符串"北京华烟云",而"北/京华烟云",可以看作是反向最大匹配的分词结果。
这样基本说得通。
为了证明这一点,我们提交查询"发北",我们期望两种分词结果,一个是正向最大匹配发毛,泽,东北,一个是上述假设的结果发,北,事实上百度输出是第二种情况,这样基本能确定百度分词采取了至少两个词典,一个是普通词典,一个是专用词典(人名等)。
而且是专用词典先切分,然后将剩余的片断交由普通词典来切分。
继续测验,提交查询"古巴比伦理",如果是正向最大匹配,那么结果应该是古巴比伦,理,如果是反向最大匹配,那么结果应该是古巴,比,伦理,事实上百度的分词结果是古巴比伦,理,从这个例子看,好像用了正向最大匹配算法;此外还有一些例子表明好像是使用正向最大匹配的;但是且慢,我们看这个查询"北京华烟云",正向最大匹配期望的结果是北京,华,烟云,而反向最大匹配期望的结果是北,京华烟云,事实上百度输出的是后者,这说明可能采用的反向最大匹配;从这点我们可以猜测百度采用的是双向最大匹配分词算法,如果正向和反向匹配分词结果一致当然好办,直接输出即可;但是如果两者不一致,正向匹配一种结果,反向匹配一种结果,此时该如何是好呢?从上面两个例子看,在这种情况下,百度采取最短路径方法,也就是切分的片断越少越好,比如古巴,比,伦理和古巴比伦,理相比选择后者,北京,华,烟云和北,京华烟云相比选择后者。
还有类似的一些例子,这样基本可以解释这些输出结果。
但是仍然遗留的问题是:如果正向反向分词不一致,而且最短路径也相同,那怎么办?输出正向的还是反向的结果?我们再来看一个例子。
提交查询"遥远古古巴比伦",这个查询被百度切分为遥远,古古,巴比伦,说明词典里面有"巴比伦",但是是否有"古巴比伦"这个词汇不确定,此时看不出是正向切分还是反向切分得出的结果,换查询为"遥远古巴比伦",此时被切分为"遥远/古巴比伦",这说明词典里面有"古巴比伦" 这个词汇,这说明了"遥远古古巴比伦"是正向最大匹配的结果。
那为什么"遥远古古巴比伦"不会被反向切分为"遥/远古/古巴比伦"呢,百度的可能选择是这种情况下选择单字少的那组切分结果。
当然还可以继续追问:如果切分后单字也一样多,那怎么办?最后看一个例子,查询"王强大小:",百度将其切分为"王/强大/小",是正向切分的结果,如果是反向的会被切分为"王/强/大小",这说明有歧义而且单字也相同则选择正向切分结果。
OK看到这里可能头已经有些晕了,最后总结一下百度的分词算法,当然里面还是有猜测的成分,算法如下:首先查询专用词典(人名,部分地名等),将专有名称切出,剩下的部分采取双向分词策略,如果两者切分结果相同,说明没有歧义,直接输出分词结果如果不一致,贝U输出最短路径的那个结果,如果长度相同,贝诞择单字词少的那一组切分结果。
如果单字也相同,则选择正向分词结果。
百度一直宣传自己在中文处理方面的优势,从上面看,分词算法并无特殊之处,消歧效果并不理想,即使百度采取比上述分词算法复杂些的算法也难以说成是优势,如果说百度有优势的话,唯一的优势就是那个很大的专用词典,这个专用词典登录了人名(比如大长今),称谓(比如老太太),部分地名(比如阿联酋等),估计百度采用学术界公布的比较新的命名实体识别算法从语料库里面不断识别出词典未登录词,逐渐扩充这个专门词典。
如果这就是优势的话,那么这个优势能够保持多久就是个很明显的问题。