zoukankan      html  css  js  c++  java
  • 自然语言处理要解决的问题

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

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

    • 垃圾邮件识别

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

    • 中文输入法

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

    • 机器翻译

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

    • 自动问答、客服机器人

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

      ……

    这里简单罗列了一些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)

    一个简单的示意图如下:


    编辑距离

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


    动态规划

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

    在机器学习中,有了“距离”就可以做很多事情。比如判断两个字符串的相似性,做一些分类、聚类的工作。

    在工程上,编辑距离可以用来提供用于拼写纠错的侯选单词。比如我用英文输入法输入一个“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. 小结

    本文主要是讲了一些自然语言处理的浅层内容。我们从从破译外星人文字导出自然语言处理过程中的经验主义视角。因为业务场景十分繁杂,我们打算从机器学习算法的角度去观察这些业务场景,以便有个清晰的认识。文本处理的一些基础内容,如正则表达式、分词断句等是自然语言预处理过程中的常用手段。编辑距离是衡量两个字符串相似性的尺度。了解这些基础之后,就可以进行一些典型的自然语言处理问题了,比如文本分类。我们将在接下来的文章中一一介绍。

    zhuan:hanxiaoyang

  • 相关阅读:
    9、Spring Boot 2.x 集成 Thymeleaf
    【专题】Spring Boot 2.x 面试题
    8、Spring Boot 2.x 服务器部署
    7、Spring Boot 2.x 集成 Redis
    6、Spring Boot 2.x 集成 MyBatis
    5、Spring Boot 2.x 启动原理解析
    4、Spring Boot 2.x 自动配置原理
    3、Spring Boot 2.x 核心技术
    2、Spring Boot 2.x 快速入门
    centOS下安装JDK1.8.60,glassfish4.1.1以及MySQL
  • 原文地址:https://www.cnblogs.com/csj007523/p/8005024.html
Copyright © 2011-2022 走看看