之前在写小论文的时候,想着研究情感分析之类的东西,被导师否决了,原因是因为需要对数据进行自然语言分析处理,而难以应对语言中模糊语义以及歧义问题。
后来被要求研究网络安全领域。
主攻学习贝叶斯网络和隐马尔可夫模型,这两个都是出名的复杂的概率模型。
最近思考了很多关于学习方面的问题,也用隐马尔可夫做了一些分词方面的实验,也尝试了结巴分词,听说结巴分词的底层是隐马尔可夫模型完成的,感觉效果也还好。
那么这个时候,才是我萌生既然我主攻是概率模型,我应该好好地学习一下自然语言处理的东西。其一,因为自然语言处理是当前人工智能的热门,其二,其中最难攻克的HMM之前我有过涉及,那么想必学起来应该不至于那么费劲。所以,我决定好好地看看NLP。
我选用的教材是统计自然语言处理基础。
----绪论
自然语言处理要解决的问题不是去判断一句话到底符合或不符合语法规则,而是语言中通常出现的形式是什么。
用来识别这些模式的主要工具是计数,就是通常所说的统计方法。
研究的重点是应当去思考:语言表达的意思和语言书写的形式之间的关系。也面临着这样的问题,应当选择什么样的先验知识。
经验主义方法认为可以通过一个适当的语言模型学习复杂和广泛的语言结构,通过把统计学、模式识别和机器学习的方法应用到大规模的语言使用的例子中,可以得到模型参数的数值。
通常,在统计自然语言处理中实际上不可能研究观测到大规模的语言实例。所以人们简单地使用文本当做替代,并把文本中的上下文关系作为现实世界中语言的上下文关系的替代品。我们把一个文本集合称为语料库(corpus),corpus是一个拉丁文简称,当有几个这样的文本集合的时候,我们称之为语料库集合。
我们在统计自然语言处理中的研究方法源自香农的工作,研究目的是为语言事件指定概率,使我们可以说那些句子是经常使用的和不经常使用的。
语言学应当回答的基本两个问题:
1. 人们说的话是什么?
2. 人们说/问/要求的事物相应于现实事件的什么?
把概率作为理解语言的一种科学方法的最基本论点认为,人类的认知是随机的,因此语言也必须是随机的,因为它是认知的一个完整部分。
在自然语言处理中的大部分现有工作都重点关注低层次的语法处理,但是人们有时也会提出这样一个疑问,统计方法是否可以处理语言所表达的意思。回答是这要取决于对这个意思形式的定义,比如把英语翻译成一种SQL语言。
-------语言中的歧义问题是自然语言难以处理的原因
也就是说当我们遇到了长一些的句子和复杂一些的语法的时候,歧义问题会导致分析结果成倍地增加。
因此,一个实用的自然语言处理系统必须具有良好的消除歧义功能,它主要解决词义、词类别、语法结构和语义范畴等歧义问题。
但是,结果歧义最小和最大化语法的作用范围这两个目标对于自然语言处理系统是矛盾的,因此把语法的作用范围扩大化会导致对于一般句子不正确的分析结果数量增加。进一步讲,使用人工智能的方法进行语法分析和消除歧义。
依赖于手工创建规则和手工调整消除歧义的策略,产生了知识获取的瓶颈问题,所以在自然语言文本的效果上很差。
----处理过程
NLP自动从语料库里学习词汇和结构偏向性信息,以此来探寻解决上述问题。不再单独使用语法的类,例如词性,来进行句法分析。我们认为存在着大量词汇之间的关系,也就是说一些单词趋向于相互组成词组。【说到这里,忍不住预留一下,写一篇Word2vec的前世今生】这些搭配知识反映更为深入的是语义关系
而且使用统计模型可以很好地解决歧义问题:统计模型具有鲁棒性和概括性,并且在含有错误的数据和新数据中性能优异。
因此,统计自然语义处理引导产生了一种新的方法,可以在分析自然文本的大规模系统中成功地消除歧义问题。此外,参数通常可以从语料中自动估计出来。
-----资料
1. 词汇
Brown语料库--LOB语料库是其英文复制版 [词汇级别歧义消除]
Susanne语料库 [标注了句子的句法结构]
Penn树库 [大规模标注句法结构]
2. 词典
wordNet(词网)英语的电子词典。词汇被组织到一个网络层次中。每个节点由相近意思的词集组成。在词汇之间还定义了一些其他的关系,例如分裂或部分-总体的关系。
3. 词的计数
假设文本都被表示成为单词序列。
首先有一些明显的问题需要解决。文本中最常用的词是什么?可以知道占统治地位的少数英语单词具有重要的语法作用,并且它们