作者:龙心尘 &&寒小阳

时间:2016年1月。

出处:

http://blog.csdn.net/longxinchen_ml/article/details/50543337,

http://blog.csdn.net/han_xiaoyang/article/details/50545650

声明:版权全部。转载请联系作者并注明出处

1. 假设让你破译“三体”人文字你会怎么办?

我们试着开一下脑洞:假如你有一个优盘,里面存了大量“三体”人(刘慈欣小说中的高智能外星人)的网络文本信息。你会如何通过这些信息去了解外星文明并从中获取有价值的技术情报?当然。“三体”人的文字都长这样儿:

“全是乱码,根本摸不着头脑!

好吧,的确是这样。

事实上在计算机的眼中。人类的语言跟外星人的语言也没什么两样。

让计算机“理解”人类语言中的种种信息。甚至像人类一样做出反应。这些是自然语言处理的主要内容。

那我们怎么分析呢?首先,我们尝试找出最小观察对象。发现外星人文字好像是一块一块的方块字。每个方块字能够作为我们的一个分析的基本语言单位。

我们对这些方块字做一些主要的统计。大致就能知道“三体”人语言的基本词汇量、经常使用词、罕见词、经常使用固定搭配等等。

可见统计方法是一个比較实用的利器。

并且,我们发现,有些方块字直接由一个空格将其隔开。因此将方块字区分成不同的区域。每个区域能否够理解成一句话?这个工作就是“断句”,也是自然语言处理其中的一个典型问题。

然后空行能够作为分段

依照人类语言的经验。可能段首第一句话会包括很多其它的信息。

还能继续分析吗?似乎比較难了。可是后来你发现,这个优盘中的外星人语料库有些是“标记”了的。

比方有些信息是像在豆瓣站点中那样被组织的。里面每段话都有一些相似“好评”“差评”的标记。基于这些标记,你能够统计出某些词在好评中出现的概率比差评的更高。这些词可能就是“褒义词”。相似的,你也能够统计出一些“贬义词”。

基于这些褒、贬义词,能够去推断其它文本的褒贬性。

这就是自然语言处理中的“褒贬分析”过程。

……

由此可见。当面对一种一无所知的语言的时候。似乎最直接的方法就是掌握大量的语料库,并且这些语料最好是经过各种方式标注了的。然后对其进行各种各样的统计。发掘一些有价值的信息。这是传说中自然语言处理的经验主义视角

2. 自然语言处理要解决的问题:

事实上,自然语言处理的应用非常广泛,如:

  • 垃圾邮件识别

    通过自己主动分析邮件中的文本内容,推断该邮件是否垃圾邮件。

  • 中文输入法

    通过识别输入的拼音字符串。识别用户希望输入的汉字。

  • 机器翻译

    将文本从一种语言转成还有一种语言,如中英文机器翻译。

  • 自己主动问答、客服机器人

    用文本输入一个问题,再返回一段文本作为问题的答案。

    ……

这里简单罗列了一些NLP的常见领域:分词,词性标注,命名实体识别,句法分析,语义识别,垃圾邮件识别,拼写纠错,词义消歧。语音识别。音字转换,机器翻译,自己主动问答……

假设对自然语言处理的应用场景不太了解,能够去腾讯的中文语义平台简单玩几个样例就熟悉了。

3. 自然语言处理的发展现状

依据stafford教授Dan Jurafsky的介绍:

  • 有些问题得到了基本解决。如:词性标注、命名实体识别、垃圾邮件识别。

  • 有些问题取得长足进展。如:情感分析、共指消解、词义消歧、句法分析、机器翻译、信息抽取。

  • 有些问题依旧充满挑战,如:自己主动问答、复述、文摘提取、会话机器人等。

4. 用算法统摄问题

大家可能感受到了,自然语言处理的问题非常庞杂。一时还真不太好系统地梳理。

然而,从我们的学习自然语言处理的经验来看。通过机器学习的基本思路,能够将非常多问题都抽象成相同的算法和模型来处理,这样会清晰非常多。

比方,词性标注,垃圾邮件识别,褒贬分析。拼写纠错等问题都能够归结成简单的分类问题

这就好用我们之前掌握的机器学习分类方法去非常好地处理。

又比方,对于机器翻译,语音识别。音字转换等等领域,都能够抽象成运用隐马尔科夫模型去处理,而这本身是一个更加复杂的分类问题。

因此本系列文章尽量从算法原理的角度去梳理自然语言处理的问题,把这些原理在详细场景的不同变换方式给展示出来

5. 文本处理基础

5.1 正則表達式

对于英文等字符串类型的自然语言,正則表達式能够非常好地做一些简单的处理工作。如词干提取。大写和小写转换等。

如今主流的编程语言对正則表達式都有较好的支持,如Grep、Awk、Sed、Python、Perl、Java、C/C++。能够通过简单的编程完毕一些基本任务。

5.2 分词

对于英文,分词比較直观。一般被空格区分开来的就是不同的词。可是有些不同的词汇表达须要我们细心推断

这须要我们依据不同的条件做一些简单的推断规则

这样的方法对英语这样的包括固定分隔符的语言行之有效。但对于汉语、日语、德语以及我们上面的“三体文”等文本则不再适用,须要有专门的分词技术。我们将在之后的文章中进行探讨。

  • 莎拉波娃如今居住在美国东南部的佛罗里达。

  • 莎拉波娃 如今 居住 在 美国 东南部 的 佛罗里达

5.3 编辑距离

编辑距离(Minimum Edit Distance。MED)。又称Levenshtein距离,是指两个字符串之间。由一个转成还有一个所须要的最少编辑操作次数。

同意的编辑操作包括:

  • 将一个字符替换成还有一个字符(substitution。s)
  • 插入一个字符(insert。i)
  • 删除一个字符(delete。d)

一个简单的示意图例如以下:

我们能够使用动态规划算法解最小编辑距离。其形式化定义例如以下:

通过这样的方法,给字符串之间定义了一个量化的“距离”的概念,并且非常有解释力。

在机器学习中,有了“距离”就能够做非常多事情。

比方推断两个字符串的相似性。做一些分类、聚类的工作。

在project上。编辑距离能够用来提供用于拼写纠错的侯选单词。

比方我用英文输入法输入一个“girlfriand”的单词。可是词库中没有“girlfriand”这个词。则能够寻找与“girlfriand”编辑距离为1或2的其它字符串,如“girlfriend”、“girlfriends”,作为纠正拼写错误的候选词。

剩下的问题就是推断哪个侯选词的作为纠正词的概率更高而已。

6. 分类问题基础

由于自然语言处理中相当一部分都能够抽象成分类问题去处理。我们在这里补充一些分类问题的基本知识,方便以后探讨。

6.1 分类问题的多种类型

  1. 二分类:推断题

    1.1 褒贬分析:推断一段文本是“褒”还是“贬”。

    1.2 垃圾邮件识别:推断一封邮件是“正常邮件”还是“垃圾邮件”。

  2. 多分类:单选题

    2.1 词性标注:推断一个词语是名词、动词、形容词、副词等等。

    2.2 拼写纠错:推断多个侯选词中的哪个词能够作为终于的纠正词。

    2.3 中文分词:从多种分词序列中挑选最优序列。

    2.4 机器翻译:从多个备选翻译句子中。推断出最优翻译语句。

  3. 类重叠分类:多选题

    3.1 主题分析:推断一个新闻同一时候包括哪几类主题(美食、食品安全、健康等)

有时候管多选题叫做软分类。单选题叫硬分类。

6.2 多分类的评估指标

对于一般二分类,我们评估的指标有召回率、准确度和F值

对于多分类我们也有相似的评价标准。

假设cij为有多少篇ci的文档被自己主动分类到cj类别下,则有:

7. 小结

本文主要是讲了一些自然语言处理的浅层内容。我们从从破译外星人文字导出自然语言处理过程中的经验主义视角。由于业务场景十分繁杂。我们打算从机器学习算法的角度去观察这些业务场景。以便有个清晰的认识。文本处理的一些基础内容,如正則表達式、分词断句等是自然语言预处理过程中的经常使用手段。编辑距离是衡量两个字符串相似性的尺度。

了解这些基础之后,就能够进行一些典型的自然语言处理问题了,比方文本分类。我们将在接下来的文章中一一介绍。

NLP系列(1)_从破译外星人文字浅谈自然语言处理的基础的更多相关文章

  1. NLP系列(1)_从破译外星人文字浅谈自然语言处理基础

    作者:龙心尘 &&寒小阳 时间:2016年1月. 出处: http://blog.csdn.net/longxinchen_ml/article/details/50543337 ht ...

  2. NLP系列(5)_从朴素贝叶斯到N-gram语言模型

    作者: 龙心尘 && 寒小阳 时间:2016年2月. 出处: http://blog.csdn.net/longxinchen_ml/article/details/50646528 ...

  3. NLP系列(2)_用朴素贝叶斯进行文本分类(上)

    作者:龙心尘 && 寒小阳 时间:2016年1月. 出处: http://blog.csdn.net/longxinchen_ml/article/details/50597149 h ...

  4. NLP系列(4)_朴素贝叶斯实战与进阶

    作者: 寒小阳 && 龙心尘 时间:2016年2月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/50629608 htt ...

  5. NLP系列(4)_朴素贝叶斯实战与进阶(转)

    http://blog.csdn.net/han_xiaoyang/article/details/50629608 作者: 寒小阳 && 龙心尘 时间:2016年2月. 出处:htt ...

  6. NLP系列(3)_用朴素贝叶斯进行文本分类(下)

    作者: 龙心尘 && 寒小阳 时间:2016年2月. 出处: http://blog.csdn.net/longxinchen_ml/article/details/50629110 ...

  7. OO_JAVA_JML系列作业_单元总结

    OO_JAVA_JML系列作业_单元总结 (1)梳理JML语言的理论基础.应用工具链情况 简单梳理 以下三者是jml规格里的核心,对一个方法功能和属性的限制: requires子句:规定方法的前置条件 ...

  8. 安卓开发_浅谈ListView(SimpleAdapter数组适配器)

    安卓开发_浅谈ListView(ArrayAdapter数组适配器) 学习使用ListView组件和SimapleAdapter适配器实现一个带图标的ListView列表 总共3部分 一.MainAc ...

  9. 【公众号系列】浅谈SAP项目管理的技能

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[[公众号系列]浅谈SAP项目管理的技能   写 ...

随机推荐

  1. 酉矩阵(unitary matrix)

    复方阵 U 称为酉矩阵,如果满足: U∗U=UU∗=I 换句话说,矩阵 U 的共轭转置 U∗ 就是 U 的逆矩阵. U∗=U−1 1. unitary matrix 保持内积不变 ⟨Ux,Uy⟩=⟨x ...

  2. Cisco交换机SPAN&RSPAN调试实录

    Cisco交换机SPAN&RSPAN设置实录   本文出自 "李晨光原创技术博客" 博客,请务必保留此出处http://chenguang.blog.51cto.com/3 ...

  3. Kinect 开发 —— 面部追踪

    SDK1.5中新增了人脸识别类库:Microsoft.Kinect.Toolkit.FaceTracking使得在Kinect中进行人脸识别变得简单,该类库的源代码也在Developer Toolki ...

  4. java(内部类)

    内部类: 一个类定义在另外一个类的内部就称作为内部类. 内部类的类别: 1.成员内部类: 2.局部内部类: 1.成员内部类: 成员内部类的访问方式: 方式一:在成员内部类的外侧提供一个方法创建内部类的 ...

  5. MD基本语法介绍

    Markdown基本语法介绍 前言 文本编辑器一般用的有富文本编辑器(也就是Word)和md了,但是wold太过于花里胡哨很多功能都用不上,所以就选择md了,简单实用,一对于我来说一般就用标题和列表就 ...

  6. mv---移动文件或目录

    mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中.source表示源文件或目录,target表示目标文件或目录.如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆 ...

  7. 洛谷——P2093 零件分组

    https://www.luogu.org/problem/show?pid=2093 题目描述 某工厂生产一批棍状零件,每个零件都有一定的长度(Li)和重量(Wi).现在为了加工需要,要将它们分成若 ...

  8. 洛谷 P3505 [POI2010]TEL-Teleportation

    P3505 [POI2010]TEL-Teleportation 题目描述 King Byteasar is the ruler of the whole solar system that cont ...

  9. POJ--2516--Minimum Cost【最小费用最大流】

    链接:http://poj.org/problem?id=2516 题意:有k种货物,n个客户对每种货物有一定需求量,有m个仓库.每一个仓库里有一定数量的k种货物.然后k个n*m的矩阵,告诉从各个仓库 ...

  10. js17---创建对象:构造函数式和原型组合模式、动态原型模式、稳妥构造函数式

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...