nlp入门笔记

nlp入门学习

概述

基础理论

自动机 形式逻辑 统计机器学习汉语语言学 形式语法理论

语言资源

语料库 词典

关键技术

汉字编码词法分析 句法分析 语义分析 文本生成 语音识别

应用系统

文本分类和聚类 信息检索和过滤 信息抽取问答系统拼音汉字转换系统 机器翻译 新信息检测

技术

数据稀疏与平滑技术

大规模数据统计方法与有限的训练语料之间必然产生数据稀疏问题,导致零概率问题,符合经典的zip’f定律。如IBM, Brown:366M英语语料训练trigram,在测试语料中,有14.7%的trigram和2.2%的bigram在训练语料中未出现。

数据稀疏问题定义:“The problem of data sparseness, alsoknown as the zero-frequency problem ariseswhen analyses contain configurations thatnever occurred in the training corpus. Then it isnot possible to estimate probabilities from observedfrequencies, and some other estimation schemethat can generalize (that configurations) from thetraining data has to be used. —— Dagan”。

人们为理论模型实用化而进行了众多尝试与努力,诞生了一系列经典的平滑技术,它们的基本思想是“降低已出现n-gram条件概率分布,以使未出现的n-gram条件概率分布非零”,且经数据平滑后一定保证概率和为1,详细如下:

Add-one(Laplace) Smoothing

加一平滑法,又称拉普拉斯定律,其保证每个n-gram在训练语料中至少出现1次,以bigram为例,公式如图:


其中,V是所有bigram的个数。

Good-Turing Smoothing

其基本思想是利用频率的类别信息对频率进行平滑。调整出现频率为c的n-gram频率为c*:
直接的改进策略就是“对出现次数超过某个阈值的gram,不进行平滑,阈值一般取8~10”,其他方法请参见“Simple Good-Turing”。

InterpolationSmoothing


不管是Add-one,还是Good Turing平滑技术,对于未出现的n-gram都一视同仁,难免存在不合理(事件发生概率存在差别),所以这里再介绍一种线性插值平滑技术,其基本思想是将高阶模型和低阶模型作线性组合,利用低元n-gram模型对高元n-gram模型进行线性插值。因为在没有足够的数据对高元n-gram模型进行概率估计时,低元n-gram模型通常可以提供有用的信息。公式如下如下

扩展方式(上下文相关)为如右图

λs可以通过EM算法来估计,具体步骤如下:

首先,确定三种数据:Training data、Held-out data和Test data;
然后,根据Training data构造初始的语言模型,并确定初始的λs(如均为1);
最后,基于EM算法迭代地优化λs,使得Held-out data概率(如下式)最大化。

处理工具

OpenNLP

OpenNLP是一个基于Java机器学习工具包,用于处理自然语言文本。支持大多数常用的 NLP 任务,例如:标识化、句子切分、部分词性标注、名称抽取、组块、解析等。

FudanNLP

FudanNLP主要是为中文自然语言处理而开发的工具包,也包含为实现这些任务的机器学习算法和数据集。本工具包及其包含数据集使用LGPL3.0许可证。开发语言为Java。
功能:

  1. 文本分类 新闻聚类
  2. 中文分词 词性标注 实体名识别 关键词抽取 依存句法分析 时间短语识别
  3. 结构化学习 在线学习 层次分类 聚类 精确推理

    语言技术平台(LTP)

语言技术平台(Language Technology Platform,LTP)是哈工大社会计算与信息检索研究中心历时十年开发的一整套中文语言处理系统。LTP制定了基于XML的语言处理结果表示,并在此基础上提供了一整套自底向上的丰富而且高效的中文语言处理模块(包括词法、句法、语义等6项中文处理核心技术),以及基于动态链接库(Dynamic Link Library, DLL)的应用程序接口,可视化工具,并且能够以网络服务(Web Service)的形式进行使用。

自然语言处理技术难点

单词 的边界界定

在口语中,词与词之间通常是连贯的,而界定字词边界通常使用的办法是取用能让给定的上下文最为通顺且在文法上无误的一种最佳组合。在书写上,汉语也没有词与词之间的边界。
词义的消歧

许多字词不单只有一个意思,因而我们必须选出使句意最为通顺的解释。

句法 的模糊性

自然语言的文法通常是模棱两可的,针对一个句子通常可能会剖析(Parse)出多棵剖析树(Parse Tree),而我们必须要仰赖语意及前后文的信息才能在其中选择一棵最为适合的剖析树。
有瑕疵的或不规范的输入

例如语音处理时遇到外国口音或地方口音,或者在文本的处理中处理拼写,语法或者光学字符识别(OCR)的错误。

语言行为与计划

句子常常并不只是字面上的意思;例如,“你能把盐递过来吗”,一个好的回答应当是把盐递过去;在大多数上下文环境中,“能”将是糟糕的回答,虽说回答“不”或者“太远了我拿不到”也是可以接受的。再者,如果一门课程上一年没开设,对于提问“这门课程去年有多少学生没通过?”回答“去年没开这门课”要比回答“没人没通过”好。