第四章:谈谈分词
- 分词问题不单单只有中文有这个问题,许多亚洲语言都有,甚至在英语法语等拼音也有相关的问题,比如找短词。
- 必须对句子进行分词,才能进一步的自然语言处理。
- 最简单的分词方法就是查字典,看到字典里面有的词就划分为一个词,遇到复合词就最长匹配,虽然简单但是已经能解决七八成的问题了,但是遇到二义性的词就容易分错,比如发展中国家按照最长匹配会变成“发展-中国-家”。
- 歧义性困扰了语言学者们上千年,曾经试图用语法来解决二义性,但是都不是很成功。
- 1990年前后,郭进博士利用统计语言模型成功解决了二义性的问题,使分词准确性提高了一个数量级。
- 那最好的分词方法,应该是分完词之后,这个句子出现的概率最大。也就是P(S)最大。
- 利用维特比算法能快速找到最佳分词。
- 分词问题是已经解决的问题了,再花更多的精力去做研究,提升空间也有限。
- 虽然英语和多数西方语言都有空格作为分界线,但是在空格不明显的地方(比如手写体),也需要用到分词技术。
- 衡量分词的结果是靠人去分词的,但是人的标准也是不一致的,所以判定一个分词器的好坏还需要和人做对比。
- 分词的粒度大小需要根据具体应用需求来定,分词的字典和模型也需要随着时间的发展而不停添加新词和新模型。
第五章 隐含马尔科夫模型
- 语言本质上也是通讯的工具,通讯的本质是一个编解码和传输的过程。如果把自然语言处理的努力集中在语法,语义和知识表述上,就会离本质越来越远,离答案越来越远。
- 雅各布森提出的通讯六要素,发送者,信道,接受者,信息,上下文,和编码。
- 为了推测出贯彻信号o1,o2,o3...来推测信号源发出的 真正信息s1,s2,s3...呢,就需要所有的源信号模型里面,找到最有可能匹配的信息,即,P(s1,s2,s3...|o1,o2,o3...)最大。根据贝叶斯公式可以变为
- P(o1,o2,o3...)|P(s1,s2,s3...)表示信号s1,s2,s3...传输后变成o1,o2,o3...的概率,P(s1,s2,s3...)表示是一个合乎情理的句子的概率,P(o1,o2,o3...)表示产生信号是P(o1,o2,o3...)的概率。然后信息一旦产生,P(o1,o2,o3...)就确定了,所以,可以简化成P(o1,o2,o3...)|P(s1,s2,s3...)*P(s1,s2,s3...)
- 隐含马尔科夫模型并不是19世纪俄罗斯数学家马尔科夫发明的,而是美国数学家鲍姆等人在20世纪六七十年代发表的一系列论文提出的,但是以他的名字命名。
- 隐含马尔科夫模型是针对随机过程的研究模型,在任何一个时刻t,对应的状态s(t)都是随机的,但是他们又有相关联。为了简化这个问题,提出了一个简化的假设,即随机过程中的各个状态的s(t)的概率分布,只和他的前一个状态s(t-1)有关,这个假设被称为马尔科夫假设。
- 隐含马尔科夫模型的最早的成功应用是语音识别,贝克夫妇利用该模型来识别语音,语音识别的错误率相比人工智能和模式匹配等方法 减低了2/3,李开复用隐含马尔科夫模型研发了世界上第一个大词汇量连续语音识别系统Sphinx。之后还用于机器翻译,拼写纠错,手写体识别,图像处理,基因序列分析 等很多it领域。近二十年来,还应用预测股票。
- 我们可以利用人工标注的方式去训练隐含马尔科夫模型,但是有时候是用不了人工标记的,比如声学模型训练,人是没办法确定某个语音的状态序列的,于是也没办法标注训练模型,有些时候虽然能用,但是成本非常高。
- 此外有一种无监督的训练方法,主要使用鲍姆韦尔奇算法。算法如此,先找到一组能够产生输出序列的O模型参数,然后根据这个初始的模型,不停地去优化,直到无法再优化为止。详细过程后面会讲。 第六章 信息的度量和作用
- 在以前,我们对信息的概念多少都是有些抽象,信息多少都是一个模糊的表达,直到1948年,香农在“通信的数学原理”中突出信息熵的概念,来量化信息。
- 信息的信息量与其不确定性有着直接的关系。如果我们要搞清楚一件完全不了解的事情,就需要大量的信息,反正,我们很清楚的事情,就需要一点信息就能彻底明白。
- 比如32只球队,冠军队伍是哪一只,根据二分需要提问5次,那么这个信息值就是5,如果是64只,信息值是6,所以信息量的大小与对数函数log有关。但是事实上,每个队伍获得冠军的可能性是不一定的,有的队伍强,夺冠可能性高,所以信息值,还跟每支队伍本身的夺冠概率有关。
- 信息熵定义如下。[图片上传失败...(image-752777-1592188386128)] 信息的概率乘以信息概率的log相加取负。
- 信息是消除系统不确定性的唯一办法。
- 当获取的信息和要研究的事物有关系时,这些信息才能帮助我们消除不确定性,如何描述这种相关性呢,香农提出了“互信息”的概念来量化信息。
- 互信息的概念如下:
image-20200408140348506 就是在我们了解了其中的一个Y的前提下,对消除另一个X的不确定性说提供的信息量。
- 布什和克里也可翻译成灌木丛和小母牛,如何确定在什么时候应该是什么翻译呢,丘奇等人利用找到与总统名字互信息最大的一些词比如总统,美国,国会,华盛顿等,再用同样的方法找到灌木丛互信息最大的词,在翻译布什的时候,看看上下文哪类相关的次最多就可以了。
- 利用相对熵能够查看两个函数的差异性。
image-20200408141622339
- 不必关注公式本身,需要记录以下三个结论:1.对弈两个完全相同的函数,他们的相对熵等于0。2.相对熵越大,两个函数差异更大,反之,相对熵越小,两个函数差异越小。3.对于概率分布或者概率密度函数,如果取值均大于零,相对熵可以度量两个随机分布的差异性。
- 利用相对熵,可以比对信号,如果相对熵越小,说明两个信号越接近,否则信号差异越大。后来研究信息处理的学者也用它来衡量两段信息的相似程度。
第七章 贾里尼克和现代语言处理
- 现代语音识别和自然语言处理是和贾里尼克这个名字紧密联系在一起的。
- 他的幼年生活并不是很幸福,但是他苦涩的童年缺让他确立了坚韧的意识和远大的理想。
- 他的成功不仅是依靠自己的努力,还依靠周围的一流人士的影响。
- 之后贾里尼克到IBM工作,在IBM的支持下,利用统计的思想奠定了今天自然语言处理的基础。
- 他自己是一个极其严格又十分严谨的人。他对于他的每个学生要求十分高,但是也毫不吝惜自己的赞赏,为人 公正。
- 他比起跟别人说什么方法好,更经常跟别人说什么东西不好,因为他丰富的经验吃过亏。至于什么方法好,他相信他的学生比他自己强。
第八章 简单之美 布尔代数和搜索引擎
- 具体做事方法是术,做事的原理和原则是道,追求术的人一辈子工作都会很辛苦,掌握本质和精髓的道才能游刃有余。
- 真正做好一件事情没有捷径,离不开一万个小时的专业训练和努力。没有一个算法或者模型能一劳永逸。
- 搜索需要做好这三件事,自动下载尽可能多的网页,建立快速有效的索引,对网页进行公平的排序。
- 布尔是19世纪英国的意味中学数学老师。1854年,布尔的《思维规律》出版,展示了如何用数学的方法解决逻辑问题。
- 利用布尔代数可以实现一个位图实现快速索引。但是互联网的数据太多了,利用分布式服务器和使用频次区分对待来优化索引的查找和更新。
第九章 图论和网络爬虫
- 一般认为图论概念是从欧拉证明哥尼斯堡的七座桥问题是不可能的论文开始。
- 深度优先搜索和广度优先搜索是遍历整个图的经常两种搜索方式。
- 关于爬虫的编写,爬虫应该是在相对短的时间内,下载更多的有用的网址。而有用的网址一般在首页,所以方法上倾向于广度优先,但是广度优先会降低搜索速度,牵扯到建立链接的过程。
- 有些网页内容并不是纯粹的html,而是需要运行一段脚本之后才能看到结果。所以需要模拟浏览器执行脚本来爬取到我们需要的数据。
- 记录已经爬取过的网址可以用hash表,但是hash表集中在一个服务器中会成为性能瓶颈,这时候可以通过一些调度明确每台服务器的分工,并且批量操作,减少通讯的次数。