python自然语言处理入门-新手上路

Posted 诗雨时

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python自然语言处理入门-新手上路相关的知识,希望对你有一定的参考价值。

新手上路

博主微信公众号(左)、Python+智能大数据+AI学习交流群(右):欢迎关注和加群,大家一起学习交流,共同进步!

目录

摘要

1. 自然语言与编程语言

2. 自然语言处理的层次

2.1 语音、图像和文本

2.2 中文分词、词性标注和命名实体识别

2.3 信息抽取

2.4 文本分类和文本聚类

2.5 句法分析

2.6 语义分析和篇章分析

2.7 其他高级任务


摘要

自然语言处理(Natural Language Processing,NLP)是一门融合了计算机科学、人工智能以及语言学的交叉学科。它们的关系如图 1-1 所示。这门学科研究的是如何通过机器学习等技术,让计算机学会处理人类语言,乃至实现终极目标——理解人类语言或人工智能。

图 1-1    自然语言处理与计算机科学、人工智能以及语言学的关系

1. 自然语言与编程语言

 自然语言自然语言示例编程语言编程语言示例
词汇量词汇丰富,无穷无尽,几乎没有意义完全相同的词语。

 《现代汉语常用词表(草案)》一共收录了 56008 个词条。

除此之外,我们还可以随时创造各种类型的新词,而不仅限于名词。

关键词数量是有限且确定的。

C 语言一共有 32 个关键字;

Java 语言一共有 50 个关键字。

结构化非结构化

给定一句话 “苹果的创始人是乔布斯,它的 logo 是苹果”,计算机需要分析出如下结论:

  • 这句汉语转换为单词序列后,应该是 “苹果 的 创始人 是 乔布斯,它 的 logo 是 苹果”;    # 中文分词
  • 第一个 “苹果” 指的是苹果公司,而第二个 “苹果” 指的是带缺口的苹果 logo;   # 命名实体识别
  • “乔布斯” 是一个人名;    # 命名实体识别
  • “它” 指代的是苹果公司;    # 指代消解
  • 苹果公司与乔布斯之间的关系是 “的创始人是”,与带缺口的苹果 logo 之间的关系为 “的 logo 是”。    # 关系抽取
结构化编程语言中的类与成员、数据库中的表与字段,都可以通过明确的机制来读写。
歧义性含有大量歧义汉语中的多义词,只有在特定的上下文中才能确定其含义。不存在歧义性如果程序员无意中写了有歧义的代码,比如两个函数的签名一样,则会触发编译错误。
容错性容错性强一句话中错别字、病句、不规范的标点符号等错误的存在,人们还是可以猜出它想表达的意思。容错性弱必须保证拼写绝对正确、语法绝对规范,否则要么出现编译器的错误警告,要么造成潜在的 bug。
易变性不断变化发展的,变化相对迅速嘈杂

自然语言不是由某个个人或组织发明或指定标准的。

我们每个人都可以自由创造和传播新词汇和新用法,也在不停地赋予旧词汇以新含义,导致古代汉语和现在汉语相差巨大。

汉语不断吸收英语和日语等外语中的词汇,并且也在输出 niubility 等中式英语。

变化缓慢温和编程语言由某个个人或组织发明并且负责维护。语言标准的变化通常以年或季度为单位的迁越过程,且新版本大致做到了对旧版的兼容,只有少数废弃掉的特性。
简略性简洁、干练

“老地方见”,不必指出 “老地方” 在哪里。

使用 “工行”、“地税局” 等简称。

如果上文提出一个对象作为话题,则下文经常使用代词。

复杂、冗余需要写很多很复杂的代码,才能完成一个功能项。

2. 自然语言处理的层次

图 1-2    自然语言处理的层次

2.1 语音、图像和文本

    自然语言处理系统的输入源一共有 3 个,即语音、图像与文本。将语音和图像经过识别后转化为文本,就可以进行后续的 NLP 任务。

    语音识别(Speech Recognition):将语音经过识别处理后转化为文本,再进行接下来的处理的过程,称为语音识别(Speech Recognition)。

    图像识别(Optical Character Recognition):将图像经过识别处理后转化为文本,再进行接下来的处理的过程,称为图像识别(Optical Character Recognition)。

2.2 中文分词、词性标注和命名实体识别

    中文分词:将文本分割为有意义的词语。

    词性标注:确定每个词语的类别和浅层的歧义消除。

    命名实体识别:识别出一些较长的专有名词。

    词法分析:中文分词、词性标注、命名实体识别 3 个任务都是围绕词语进行的,统称为词法分析。词法分析的主要任务是将文本分割为有意义的词语(中文分词),确定每个词语的类别和浅层的歧义消除(词性标注),并且识别出一些较长的专有名词(命名实体识别)。

2.3 信息抽取

    词法分析之后,文本已经呈现出部分结构化的趋势,根据分析出来的单词列表和附有自己词性及其他标签的单词,抽取出一部分有用的信息(高频词、关键词、公司名词、专业术语等),也可以根据词语之间的统计学信息抽取出更大颗粒度的文本(关键短语、句子)。

2.4 文本分类和文本聚类

    文本分类:把许多文档分门别类地整理出来(知道一段话是褒义还是贬义的;判断一封邮件是否是垃圾邮件),此时的 NLP 任务称为文本分类

    文本聚类:把相似的文本归档到一起,或者排除重复的文档,而不关心具体类别,此时的 NLP 任务称作文本聚类

2.5 句法分析

    以 “查询刘医生主治的内科病人” 这句话为例,句法分析结果如图 1-3 所示。

    n:名词;nr:人名;v:动词;vn:;

    句法分析应用场景:问答系统、搜索引擎、基于短语的机器翻译,给译文的词语重新排序(中文 “我吃苹果” 翻译为日文则是 “私は(我)りんごを(苹果)食べる(吃)”)。

图 1-3    句法分析结果

2.6 语义分析和篇章分析

    词义消歧:确定一个词在语境中的含义,而不是简单的词性。

    语义角色标注:标注句子中的谓语与其他成分的关系。

    语义依存分析:分析句子中词语之间的语义关系。

    相较于句法分析,语义分析侧重语义而非语法。它包含词义消歧(确定一个词在语境中的含义,而不是简单的词性)、语义角色标注(标注句子中的谓语与其他成分的关系)、语义依存分析(分析句子中词语之间的语义关系)。

2.7 其他高级任务

  • 自动问答,根据知识库或文本中的信息直接回答一个问题,比如微软的 Cortana 和苹果的 Siri。
  • 自动摘要,为一篇长文档生成简短的摘要。
  • 机器翻译,将一句话从一种语言翻译到另一种语言。

以上是关于python自然语言处理入门-新手上路的主要内容,如果未能解决你的问题,请参考以下文章

[Python入门到精通系列]新手接触Python第一步之基础语法

[Python入门到精通系列]新手接触Python第一步之基础语法

新手学C和Python哪个更容易?

新手学Python一定很疑惑自学Python入门要买什么书容易上手?

新手入门:Python和C语言哪个更难?零基础学哪个好?

Python学习笔记(新手入门)