NLP(Natural Language Processing),自然语言处理,是一门融合了计算机科学、人工智能以及语言学的交叉学科。
自然语言和编程语言对比
- 自然语言比编程语言的词汇量丰富
- 自然语言是非机构化的;编程语言是结构化的。结构化指的是信息具有明确的结构关系,比如编程语言中具有类和成员、数据库中的表和字段等,都可以通过明确的机制来进行读写。
- 自然语言存在大量的歧义,这些歧义根据语境的不同变现为特定的义项。
- 自然语言容错性高,编程语言中程序员必须保证拼写、语法绝对规范。
- 编程语言的变化缓慢温和点,自然语言相对迅速和嘈杂些
NLP的层次
- NLP系统的输入源有3个:语音(语音识别)、图像(光学字符识别)和文本。语音和图像最终都会转成文本。
- 词法分析
- 中文分词:将文本分割成有意义的词语
- 词性标注:确定每个词语的类别和浅层的歧义消除
- 命名实体识别:识别出较长的专有名词
- 信息抽取
- 文本分类和聚类
- 句法分析
- 语义分析和篇章分析
- 词义消歧:确定词语在语境中的含义
- 语义角色标注:标注句子中的谓语和其他成分的关系
- 语义依存分析:分子句子中的词语之间的语义关系
- 高级任务
- 自动问答
- 自动摘要
- 机器翻译
NLP流派
一、基于规则的专家系统
规则指的是由专家制定的确定性流程。
成功的案例有:波特词干算法。
二、基于统计的学习方法
降低对专家的依赖,自适应灵活的语言问题,使用统计方法让计算机能够自动学习语言。
语料库指的是人工标注的结构化文本。
三、NLP历史
- 1950年的图灵测试
- 1980年第一个自动问答系统
- 1990年统计学习方法的兴起
- 2010年神经网络的复兴
NLP术语
- 特征:事物的特点转化为的数值
- 特征模板:自动提取特征的模板
- 特征工程:如何挑选特征、如何设计特征模板。特征越多,参数就越多,模型就复杂
- 语料库:NLP领域中的数据集
- 中文语料库:由人工正确切分后的句子集合 2. 词性标注语料库:切分 为词语指定一个词性的语料库 3. 命令实体识别语料库:文本内部标注了实体名词和实体类别 4. 句法分析语料库::CTB(Chinese TreeBank):每个句子都经过了分词、词性标注和句法标注 5. 文本分类语料库:人工标注了所属分类的文章构成的语料库,比如:情感分类语料库
- 语料库建设
- 规范制定
- 人员培训
- 人工标注
开源NLP工具
HanLP初识
- 安装
pip install pyhanlp
- 验证
sduohadlp
- 交互模式
hanlp segment
- Linux重定向字符形式:
hanlp segment <<< "欢迎来到hanlp的世界"
- 禁用词性标注
hanlp segment —no-tag <<< '欢迎来到hanlp的世界'
- 文件重定向输入与输出
hanlp segment < input.txt> output.txt -a crf —no-tag
- 句法分析
hanlp parse <<< '我们是共产主义接班人'
- 在
Python
中调用hanlp
接口
from pyhanlp import *
print(HanLP.segment('你好,欢迎来到hanlp的世界'))