NLP-语料库
一.语料库—语言数据的采样
1.语料库:经过整理,具有既定的格式与标记的大量文本组成的数据库。是现实中出现过的真实的语言材料组成。
2.语料库的种类:
(1)共时语料库和历时语料库。
下面解释一下共时和历时。共时,指的是站在某一相同时刻的角度上看待问题,历时指的是在不同时间的角度下看待问题。
(2)通用语料库与专用语料库:
只采集了某一特定领域,特定地区,特定时间,特定类型的语料构成的语料库--专用语料库。
抽样时,仔细考虑各个方面,平衡各个方面形成的语料库--通用语料库。
3.语料库加工—文本处理:
(1)垃圾格式问题:
语料库内容来源复杂,存在杂志(页眉,分隔符,排版代码,图,表....)
ORC(从图片识别文字)得到的预料还存在识别错误。这时候我们需要用过滤器来过滤掉这些杂质。
(2)大小写问题
语料库的大小写问题也属于语料库的格式问题中的一项。常用的方法是将其全部转化成大写或是小写字母,这种方法虽然简便但有很多弊端:例如无法区分人名,例如结构显得更加混乱, 不易还原。
一种启发式方法:句子开头的大写字母转化为小写,标题或是副标题可用一连串的大小字母,剩下的大写字母就全部是被认作了人名。也有一些不足:有些比如像NLP类似这样的大写字母缩写到标的是一些科目,机构组织等的名称,也会与任命混淆。
(3)标记化问题:
表计划也就是我们俗称的切词,将一个文本切分成一个词,一个数字,或是一个标点符号。这个是有专门的算法的。
(4)词的定义问题:
定义会有很多,这里给出了某一对于英语语种的词的定义:前后有空格的连续的字母组成的字符串,可以包含连字符和省略符。但是不能包含其他标点符号。
举几个例子:比如说:apple,E-mail, 而像:etc.等的就不是一个词。
(5)句点识别问题:
首先我们需要明确的一点是,赐予的前后不总是存在空格;尿垫富豪也经常跟在一个词语的尾处(尤以逗号,句点,分号最为嚣张)。单纯的去掉句点常常会产生很多的错误:
虽然大多数句点是用以表示一个句子的终结,但也有很多是用来表示某种缩写,这些所写中的句点也是这个词语的一部份,他们是一体的。而有一种很槽单的语法是:当这类据点出现在句子的末尾的时候,句尾的据点将被省略(俗称缩略),例如,etc.;所以说,不要想当然!
(6)点撇号:
对于包含了单撇号的词(I’ll, isn’t等等),切分后可以认为是两个词,不切分可以认为是一个词。
如果一S = NP VP句式切分后,预料将会出现:’s或是n’t这类的词。
(7)连字符
(8)同形异义词:
同一个词会有很多种不同含义;
或是想saw这种词:名词-锯子,同时也是see的过去分词。past 既有形容词词性, 也是pass的过去分词。
(9)词法:
词干化:常指的是将一句话的名词和动词等还原成原型。
当性能评价指标是查询平均值的时候,词干化对于经典的IR系统的性能提高没有任何帮助。这时,你输入一个business(原型busy),返回的将是所有包含了busy的文档,显然这不是一个好结果。
词法分析将一个词次切分成几个词次,把密切相关的信息组合到一起,虽然减少了词汇量,但实践中常把很多词组看成一个特殊的词次,正将改善系统的性能。
(10)句子定义:
启发式算法:
• 在 . ? ! (和可能的 ; :)出现位置之后加一个假设的句子边界
• 如果假设边界后面有引号,那么把假设边界移到引号后面
• 除去以下情况中句点的边界资格:
• 如果句点之前是一个不总出现在句子末尾的众所周知的缩写形式,而且通常后面会跟一个大写的名字,例如Prof.或者vs.
• 如果句点前是一个众所周知的缩写形式,但是句点后面没有大写词。这样即可正确的处理像etc.或者Jr.这样大多数缩写用法,这些缩写一般出现在句子的中间或末尾
• 如果下面条件成立,则除去?或者!的边界资格:
• 这些符号后面跟着一个小写字母(或者一个已知名字)
• 认为其他假设边界就是句子的边界
(经验式规律)
(11)句子边界的研究:
- 统计学分类树
- 前后词的词性分布+神经元网络
- 最大熵系统
一.语料库—语言数据的采样
1.语料库:经过整理,具有既定的格式与标记的大量文本组成的数据库。是现实中出现过的真实的语言材料组成。
2.语料库的种类:
(1)共时语料库和历时语料库。
下面解释一下共时和历时。共时,指的是站在某一相同时刻的角度上看待问题,历时指的是在不同时间的角度下看待问题。
(2)通用语料库与专用语料库:
只采集了某一特定领域,特定地区,特定时间,特定类型的语料构成的语料库--专用语料库。
抽样时,仔细考虑各个方面,平衡各个方面形成的语料库--通用语料库。
3.语料库加工—文本处理:
(1)垃圾格式问题:
语料库内容来源复杂,存在杂志(页眉,分隔符,排版代码,图,表....)
ORC(从图片识别文字)得到的预料还存在识别错误。这时候我们需要用过滤器来过滤掉这些杂质。
(2)大小写问题
语料库的大小写问题也属于语料库的格式问题中的一项。常用的方法是将其全部转化成大写或是小写字母,这种方法虽然简便但有很多弊端:例如无法区分人名,例如结构显得更加混乱, 不易还原。
一种启发式方法:句子开头的大写字母转化为小写,标题或是副标题可用一连串的大小字母,剩下的大写字母就全部是被认作了人名。也有一些不足:有些比如像NLP类似这样的大写字母缩写到标的是一些科目,机构组织等的名称,也会与任命混淆。
(3)标记化问题:
表计划也就是我们俗称的切词,将一个文本切分成一个词,一个数字,或是一个标点符号。这个是有专门的算法的。
(4)词的定义问题:
定义会有很多,这里给出了某一对于英语语种的词的定义:前后有空格的连续的字母组成的字符串,可以包含连字符和省略符。但是不能包含其他标点符号。
举几个例子:比如说:apple,E-mail, 而像:etc.等的就不是一个词。
(5)句点识别问题:
首先我们需要明确的一点是,赐予的前后不总是存在空格;尿垫富豪也经常跟在一个词语的尾处(尤以逗号,句点,分号最为嚣张)。单纯的去掉句点常常会产生很多的错误:
虽然大多数句点是用以表示一个句子的终结,但也有很多是用来表示某种缩写,这些所写中的句点也是这个词语的一部份,他们是一体的。而有一种很槽单的语法是:当这类据点出现在句子的末尾的时候,句尾的据点将被省略(俗称缩略),例如,etc.;所以说,不要想当然!
(6)点撇号:
对于包含了单撇号的词(I’ll, isn’t等等),切分后可以认为是两个词,不切分可以认为是一个词。
如果一S = NP VP句式切分后,预料将会出现:’s或是n’t这类的词。
(7)连字符
(8)同形异义词:
同一个词会有很多种不同含义;
或是想saw这种词:名词-锯子,同时也是see的过去分词。past 既有形容词词性, 也是pass的过去分词。
(9)词法:
词干化:常指的是将一句话的名词和动词等还原成原型。
当性能评价指标是查询平均值的时候,词干化对于经典的IR系统的性能提高没有任何帮助。这时,你输入一个business(原型busy),返回的将是所有包含了busy的文档,显然这不是一个好结果。
词法分析将一个词次切分成几个词次,把密切相关的信息组合到一起,虽然减少了词汇量,但实践中常把很多词组看成一个特殊的词次,正将改善系统的性能。
(10)句子定义:
启发式算法:
• 在 . ? ! (和可能的 ; :)出现位置之后加一个假设的句子边界
• 如果假设边界后面有引号,那么把假设边界移到引号后面
• 除去以下情况中句点的边界资格:
• 如果句点之前是一个不总出现在句子末尾的众所周知的缩写形式,而且通常后面会跟一个大写的名字,例如Prof.或者vs.
• 如果句点前是一个众所周知的缩写形式,但是句点后面没有大写词。这样即可正确的处理像etc.或者Jr.这样大多数缩写用法,这些缩写一般出现在句子的中间或末尾
• 如果下面条件成立,则除去?或者!的边界资格:
• 这些符号后面跟着一个小写字母(或者一个已知名字)
• 认为其他假设边界就是句子的边界
(经验式规律)
(11)句子边界的研究:
- 统计学分类树
- 前后词的词性分布+神经元网络
- 最大熵系统
二.语料库应用-简单统计分析:
1.Zipf法则:
这又是一条经验规律,是某位科学家发现的词汇出现次数语气排列位置之间的对应关系:e.g. 排在第50位的词出现次数大约是排在第150位的词的出现次数的3倍。这里需要提醒一句:这不是一个客观规则,而是某些实验事实中得出的一个粗糙的结论。
为了方便这一理论的数学化,规则化,更一般的排列和出现次数之间的关系公式(Mandelbort): \[ f= P(r+\rho)^{-B} \] 其中P, B , ρ都是文本的参数,他们总体平衡了文本中词汇使用的广度。如果设置参数B = 1, ρ = 0, 该公式就简化成了Zipf法则。
2.语料库加工-搭配抽取:
首先我们要理解一个词,“搭配”,他在这里指的是那些固定搭配,比如说是,regard as, New York, New Year等等。好的,可以开始了!
(1)频率方法:
- 如果两个词一起出现了很多次,那么他们很可能就是搭配。
但仅仅选择最频繁出现的二元组,结果并不是十分的理想,例如图1:
除了New York外,其他没有一个是固定搭配!
图一
- 科学家J和科学家K通过了一个词性过滤器来过滤候选短语(A代表形容词, P代表前置词, N代表名词)。具体的标记搭配见图二。
图二
得到的词汇搭配按照频率的排序见图三。
图三
(2)均值和方差方法:
基于频率的方法可以很好的解决固定搭配的识别问题,但是很多搭配上两次之间的关系很灵活,即他们并非是相邻的。比如:
- regard the boy as a monkey
- regard him as a monkey
- regard one small boy as a monkey
这是我们采用的是均值和方差方法。
比如说上面的regard as用法中:
Regard与as的平均偏移量为:
1/3 * (3+2+4) = 3
方差衡量的是单独的偏移量偏离均值的距离,可用如下公式: \[ s^2 = \frac{\sum_{i=1}^n(d_i-\bar{d})^2}{n-1} \] 则上例中regard 和 as 的距离的方差为: \[ s^2=\frac{(4-3)^2+(2-3)^2+0}{3-1}=1 \] - 如果在所有的情况下样本的偏移量都是相同的,那么方差为零
- 如果便宜量是随机分布的(在这种情况下两个词偶然出现,而不是由于特殊的关系),那么方差就会较大。
- 均值和方差特性化了两个词之间距离的分布
- 可以使用这个信息来发现搭配,具体的方法是通过寻找带有较低偏差值的词对,这意味着两个词通常会以大致相同的距离出现。