《自然语言处理入门》--何晗

  • 1.1自然语言与编程语言
  • 1.2自然语言处理的层次
  • 1.3自然语言处理的流派
  • 1.4机器学习
  • 1.5语料库
  • 1.6开源工具
  • 1.7总结 summarization


1.1自然语言与编程语言

让计算机学会处理人类语言、乃至理解并运用人类语言或人工智能  
	当然人工智能不止是自然语言处理, 还有计算机视觉和语音识别。***这个星球上有许多生物拥有超过人类的视觉系统,但只有人类才拥有这么高级的语言***。完美的语言理解等价于实现人工智能。
	拿自然语言和人工语言来做一番比较。看计算机理解我们的语言是多么的困难。
  1. 词汇量
    自然语言中词汇量比编程语言中关键词丰富。除此之外我们还可以随时的创造各种类型的新词。
  2. 结构化
    自然语言是非结构化的,编程语言是结构化的
  3. 歧义性
    自然语言含有大量的歧义性,根据语境的不同表现为不同的形式。如汉语中多义词,只有在特定的上下文中才能确定其含义。
    如:

他说:“她这个人挺有意思。”她说:“他这人挺有意思。”于是有人传言:他和她有了意思,要赶快意思意思。他发火了,说:“你们这样瞎说是什么意思。”传言者有点不好意思,便解释说:仅仅是开开玩笑而矣,绝对没有别的意思。“事后,有人说:”真有意思。“也有人说:”真没意思。”

在编程语言中 此问题则不会出现不存在歧义性,若程序员编写了有歧义的代码则会编译失败。

  1. 容错性
    书刊中的语言即使经过多次校对也无法完全避免错误。 编程语言中程序员必须保证绝对正确、语法绝对规范,否则仍然是无法编译通过。如何处理不规范的社交媒体文本也成为了一个新的课题
  2. 易变性
    任何语言都是不断发展变化的,相比较而言,编程语言变化温和缓慢的多。自然语言变化的迅速嘈杂一些。
    每个人都可以自由地创造和传播新词汇新语法,不停的赋予旧词汇以新含义。这些变化是连续的,每时每刻都在进行着,给自然语言的处理带来了不小的挑战性
  3. 简略性
    相比较于说话速度听话速度书写和阅读速度 ,人类语言往往更加简练。如老地方见,省略大量的背景知识和常识。 这些省略的常识是交流双方共同拥有而计算机不一定拥有的所以也给自然语言处理带来个障碍。

1.2自然语言处理的层次

  1. 语音、图像和文本:
    自然语言处理的输入源有三个 :语音、图像和文本。 前两种形式经过识别后转换为文本。
  2. 中文分词、词性标注和命名实体识别:
    这3个任务都是围绕词语进行的分析,统称为词法分析。
    分割有意义的词语(中文分词)、确定词语类别并进行浅层次的歧义消除(词性标注)、识别一些较长的专有名词(命名实体识别)。词法分析是后续高级任务的基础。基本已达到工业使用的水准
  3. 信息抽取:
    词法分析之后,文本已经呈现出部分结构化的趋势,至少,计算机看到的不再是一个超长的字符串,而是有意义的单词列表。每个单词还附有自己的词性以及其他的标签。根据这些单词和标签 我们可以抽取出一部分有用的信息,抽取出关键的句子以及文本,更大颗粒度对用户更加友好。
  4. 文本分类与文本聚类:
    将文本拆分为一系列词语后,可以在文章级别做一系列分析。
    分门类别整理 分类
    不关心具体的类别 聚类
    看似相同其实是两种截然不同的流派
  5. 句法分析:
    词法分析只能分析零散的词汇信息,不知道词语之间的关系。
    在一些问答系统中,需要得到主谓宾的关系,不仅是问答系统搜索引擎 还常用于基于短语的机器翻译
  6. 语义分析和篇章分析:
    相较于句法分析 ,语义分析更侧重于语义而非语法。包括词意消歧(确定一个词在特定语境下的含义) 语义角色标注 乃至语义依存关系(分析句子中词语之间的语义关系
    属于较为高级的课程,即便最前沿的研究,尚未达到能够实用的精确程度。

了解自然语言处理的整个宏观图景有助于开拓视野,找准定位和方向

1.3自然语言处理的流派

  1. 基于规则的专家系统
  2. 基于统计的学习方法

1.4机器学习

模型 + 特征 + 数据集(在NLP中成为语料库)

1.5语料库

  1. 中文分词语料库
  2. 词性标注语料库
  3. 命名实体识别语料库
  4. 句法分析语料库
  5. 文本分类语料库

1.6开源工具

  1. 教学常用的NLTK
  2. 斯坦福大学开发的CoreNLP
  3. 哈工大开发的LTP
  4. 何晗开发的HanLP

1.7总结 summarization

**在第一章 HanLP在java中配置上遇到许多问题 **

  1. 在cmd控制台中install pyhanlp 和在conda中install jpype1 jpype1 是在python中调用java的常用工具
  2. 以及配置java接口遇到的问题 在IDEA重新安装时遇到的激活码注册 设置jdk版本 setting问题 还有导入hanlp.jar包的问题处理 一一记录下来 以便于在日后翻阅回顾。 2020/3/11