天然语言处理又称计算语言学,其目标是让计算机处理或"理解"天然语言,以完成有意义的任务。python
天然语言的难度
将天然语言与编程语言对比,直观的的体会天然语言的复杂程度。算法
- 天然语言词汇量大
- 天然语言是非结构化的,编程语言是结构化的
- 天然语言含有大量歧义
- 容错性
- 易变性
- 简略性-人类常常省略大量背景知识或尝试说话
天然语言处理的层次

- 天然语言处理的输入源有3个:语音、图像和文本。
前二者分别须要经过语音识别和光学字符识别(OCR)转化为最后的文本内容。一旦转化为文本,就能够开始NLP任务,对文本的处理才是NLP的关键。
- 词法分析:一般是后续高级任务的基础
主要分为三个任务:中文分词,词性标注,命名实体识别
中文分词:将文本分为有意义的词语
词性标注:肯定每一个词语的类别和浅层的歧义消除
命名实体识别:识别出一些较长的专有名词
- 句法分析:侧重于分析句子的语法
- 语义分析与篇章分析:侧重于分析句子的语义
主要分为词义消歧,语义角色标注乃至于语义依存分析。属于较为高级的课题
- 信息抽取:词义分析后对部分结构化的文本抽取想要的关键短语乃至句子
- 文本分类和聚类
- 其余高级任务:
上述的属于“工具类”任务,比较基础。自动问答、自动摘要、机器翻译等就是综合性的任务
注:通常认为信息检索(IR)是区别与天然语言处理的独立学科。由于IR的目标是查询信息,NLP的目标是理解语言。编程
天然语言处理的流派
- 基于规则的专家系统:尝试用编程语言制定一系列的规则来表示人类语言。可是难以拓展。
- 基于统计的学习方法:运用统计模型和语料库让计算机本身学习
机器学习
上面的基于统计的学习方法就是以机器学习的方法。机器学习指的是计算机经过某项任务的经验数据提升了在该项任务的能力。网络
简而言之,机器学习就是让机器学会算法的算法。前面的算法就是想要获得的用来完成指定任务的算法,后面的算法一般称为模型。架构
- 模型由假设函数和一系列参数构成
- 特征提取和特征模版
- 神经网络也就是深度学习,属于机器学习的一种
- 数据集(在NLP中称为语料库)
- 监督学习:数据集中样本由标注
- 无监督学习:数据集中样本无标注。通常用于聚类和降维
- 半监督学习:将多个模型预测相同的无标注样本做为新的训练样本扩充训练集
语料库
语料库就是NLP中的数据集,根据咱们想要教机器干什么,分为不一样的语料库:中文分词语料库、词性标注语料库等。机器学习
开源工具
HanLP是由一系列模型与算法组成的Java工具包,目标是普及天然
语言处理在生产环境中的应用。HanLP具有功能完善、性能高效、架构
清晰、语料时新、可自定义的特色。
功能:中文分词 词性标注 命名实体识别 依存句法分析 关键词提取
新词发现 短语提取 自动摘要 文本分类 拼音简繁编程语言
HanLP:函数
pip install pyhanlp
hanlp #第一次运行时会下载HanLP的jar包和数据包
#安装完成后
hanlp -v #检查一下
在 python中调用HanLP的经常使用接口:工具
from pyhanlp import *