爱着 ……………………………………………..
着你 ……………………………………………..
你啊 ……………………………………………..
在这里,分出来的结果比第一种要好很多了,起码有一些有用词语了(如:伟大,祖国)。事实上,许多外国人做的搜索引擎就是这样处理中文的。
(3)分词法的改进——忽略没用的词
现在可以介绍分词法的第一步改进,就是忽略“没用的词”,美国人把它们称为“stopword”。进行了这种改进之后,单字分词法中的“着”、“啊”等语气词和使用频率特别高的词就要删除了。这样就减小了索引量。但是,很显然,这种状况的分词法,是无法让人满意的。读者可以看到,“国啊”,“啊我”这些都不是常规词汇(注意:笔者用的是“常规”两个字,后面会有解释)。
(4)分词法的改进——词库
笔者曾让一个六岁的小孩子做分词,同样分前面这句话,他分出的结果是:
伟大、祖国
笔者也让一个研究生做分词,同样也是分前面这句话。他分出的结果是:
伟大、祖国、深爱、爱着你
如果让读者来分,会分出什么样的结果呢?也许与他们都不同。为什么会这样呢?为什么不同的人往往有不同的分词结果呢?
六岁的小孩子知道的词汇少,研究生知道的词汇多,所以六岁的小孩分出了两个词,研究生分出了四个词。抽象地来讲,这两个人所拥有的词库不同,当这个句子进入人脑之后,人脑对它进行分词处理,读取记忆词库,从而得出结果。
这样,我们得到了分词优化的第二条要义:词库。如果可以在分词的时候,加入一个词库,那么计算机就可以把词语分出来。
比如,现在有一个词库,如下:
美丽、女孩、头发
结合这个词库来分词,要处理的句子是“美丽的女子从天而降,有着乌黑亮丽的长发”,分出来的结果是什么?
答案是:“美丽”。
读者可能在想,为什么没有把“女子”分出来?原因是“女子”在你的大脑词库里,而不是在这个词库中。计算机是没有思维能力的,它只能按照人的指令去做事情。现代人工智能技术在研究让计算机去“主动”学习,这仍然也是基于人工写成的程序,并不是给计算机思想和灵魂。感兴趣的读者,可以看看“模式识别”和“机器学习”方面的书籍,大略了解一下即可,这方面的发展速度还很慢,但有助于自己进一步作研究。
了解了词汇的概念之后,读者一定知道词库有多么重要了。不妨做下面这个练习,看一看你分词的结果是什么?
及至秦王,续六世之余烈,振长策而御宇内,吞二周而亡诸侯,履至尊而制六合这段话,来自《史记·秦始皇本纪》,是古文,如果读者完全不懂古文,肯定搞不清楚这是什么意思,更不要谈分词了。如果读者粗通古文,就能看出一些熟悉的词,但是又搞不清整体的含义。如果读者精通古文,既知道如何分词,也知道这句话的含义,可惜,与别人分出来的结果都不一样。古人说,圣贤皆是寂寞,信夫。
这段话的分词结果是:
秦王、六世、余烈、长策、宇内、二周、诸侯、尊、六合
显然,如果给计算机提供的词库是“美丽女孩头发”,那么计算机看到这句话,就一个词也分不出来。现在有许多垂直搜索引擎(在第1章讲过),它们的词库和普通的搜索引擎词库不同,基于专业知识,开发专业词库,才能使计算机读懂专业的文献。前面这句话结合“古文词库”就可以正确地实现分词。
(5)分词法的改进——语义
仅仅依靠词库去进行分词还是不够的,为什么呢?请看下面的例子。
使用词库“如何计算计算机机器人学习效果”来分解“如何计算机器人的学习效果?”,得到的结果是:
如何、计算、计算机、机器人、学习、效果
专业地评价,这个分词结果已经算是不错了。但是,这里有一个问题,如果让读者来分词,读者会把“计算机”这个词分出来吗?
也许会,但不应该。在这个句子中,其实并没有“计算机”这个词。这里面并没有关于“计04做自己的搜索引擎——搜索引擎精解案例教程算机”这个概念的陈述。“计算”是一个词,“机器人”是另一个词,如果读者把“机器”也分出来了,那就更错了。这句话里只有“机器人”,没有“机器”。
试想一下,我们在搜索引擎中搜索“计算机”,希望得到对计算机的相关介绍。结果,得到的几个结果都是“计算机器人的效率”,“计算机动车的磨损”之类的网页,我们是否会认为这个搜索引擎做得很成功?
“成功”这个词用得有一点大,至少,这个搜索引擎还有明显可改进的地方。
在这个例子中,读者可以发现,影响到分词结果的不是词库问题,而是语义问题。如何让计算机像人一样读懂句子是问题的关键。这个例子的正确结果是:
如何、计算、机器人、学习、效果
关于语义分析和语法分析的理论,目前还很不成熟。因为人类语言本身就是有歧义的,人自己去理解尚且容易出错,让计算机去理解又谈何容易?不过,已经有人做出了常用词库并在词库的基础上做语法和语义分析,并且能够应用于实际,占领了产品市场。当然,这个市场前景还是非常广阔的。“第一个天才如果做不到占领,就只能做后来蠢货的奴仆”。
许多人看到机器人可以和人对话会感到很惊讶,可是稍微动脑思考一下,就可以让正在说话的机器人变得短路、重启动、语无伦次,摸不清你在说什么。人类想要对付机器人,只需记住它没有思想,只是程序即可。
2.3.5中文分词
1.中文分词技术的基本算法
在英文的书写中,单词之间是以空格作为自然分界符的,如“I am a good man”,很容易分词成为“I,good,man”,但中文的“我是好人”,想把它分开就必须有词库了。要分好,还需要有语法和语义分析。不只中文如此,许多亚洲文字都是这样的。因此,中文分词(或者说亚洲文字分词)是一项专门的技术。中文分词技术比英文要复杂得多、困难得多。
中国是世界四大文明古国之一。拥有世界上最古老的文字,拥有世界最多的人、悠久的历史和灿烂的文化。外国人想了解中国文化,中国人要共享知识,在网络平台上,都要用到搜索,因此中文分词的意义巨大。
全文检索技术和搜索引擎都是外国人发明的,但是外国的搜索引擎之所以没有在中国市场上占到最大份额,技术上的一个重要原因就是他们对中国的文化不熟悉。现在各大搜索引擎公司都在抢占中国市场,中文分词是他们面临的重要问题。
前一节谈了分词技术,这里再稍微具体地说一下中文分词技术。大体上是一样的,局部有一些细致描述。
中文分词技术属于自然语言处理技术范畴,对于一句话,人可以通过自己的知识来明白哪些是词,哪些不是词,但如何让计算机也能理解?分词算法是其关键。
现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。
(1)基于字符串匹配的分词方法
这种方法又称为机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械分词方法有:正向最大匹配法(由左到右的方向),逆向最大匹配法(由右到左的方向),最少切分(使每一句中切出的词数最小)。
还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1169,单纯使用逆向最大匹配的错误率为1245。但这种精度还远远不能满足实际的需要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其他的语言信息来进一步提高切分的准确率。
一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。另一种方法是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。
对于机械分词方法,可以建立一个一般性的模型,这里不做详细论述。