当前位置:   article > 正文

NLP定义和机器翻译_nlp机器翻译

nlp机器翻译

1. NLP定义

  NLP(自然语言处理)= NLU(自然语言理解)+ NLG(自然语言生成)。

  自然语言理解(Natural Language Understanding)是使计算机理解自然语言(人类语言文字)等,重在理解(难道NLG就不需要理解语言了吗?)。具体来说,就是理解语言、文本等,提取出有用的信息(很像是数据挖掘),用于下游的任务。它可以是使自然语言结构化,比如分词、词性标注、句法分析等;也可以是表征学习,字、词、句子的向量表示(Embedding),构建文本表示的文本分类;还可以是信息提取,如信息检索(包括个性化搜索和语义搜索,文本匹配等),又如信息抽取(命名实体提取、关系抽取、事件抽取等)。

  自然语言生成(Natural Language Generation): 提供结构化的数据、文本、图表、音频、视频等,生成人类可以理解的自然语言形式的文本(输入又是什么呢?如果是所述的seq to seq,是容易理解的,但是假设我想生成一篇新闻稿,那需要的输入又是什么呢?。NLG又可以分为三大类,文本到文本(text-to-text),如翻译、摘要等、文本到其他(text-to-other),如文本生成图片、其他到文本(other-to-text),如视频生成文本。

  NLP面临很多的挑战,其中比较显著的两个问题是:相同的意思具有不同的表达方式、一词多义(需要根据上下文判断具体的含义)。

2. NLP的任务

  自然语言处理的任务包括基础自然语言任务、信息抽取任务、文本生成任务和其他应用任务。

  基础自然语言任务包括:

  • Computational Linguistics(计算机语言学)
  • Phonology(音韵学)
  • Morphology(形态划分)
  • Syntax(句法)
  • Semantics(语义)
  • Discourse(篇章)
  • Pragmatics(语用学)

2.1 语法任务:以词为基本单元

  • 形态划分
  • 分词
  • 词性标注
    在这里插入图片描述
    形态划分指的是提取出词根(stem)和词缀(prefix+suffix)。

2.2 语法任务:以句子为基本单元

在这里插入图片描述

2.2.1 成分句法分析

  通过层次化的短语结构来表达一句话,通过算法自动的找到句子里面的层次短语结构
在这里插入图片描述

2.2.2 依存句法分析

  这个句法框架是通过两个词之间的关系来组成一句话的结构,这种关系包含主语、宾语、 修饰语等等的关系。那么每一个词都修饰一句话中唯一的另一个词,而这句话里面有一个词不修饰任何词,并称作为这句话的跟节点就是root节点。以上两个特点呢,就决定了一句话的依存句法结构一定是一棵树结构。

  • head words
  • dependent words
    在这里插入图片描述

2.2.3 组合范畴语法

  组合范畴语法是高度词汇化的句法。一个词上都带有一个句法信息很丰富的标签。比如bought这个词,它是一个及物动词,它的标签是(S\NP)/NP,S代表一个句子,NP代表名词短语。

  这个复杂的句法标签的第一次是先朝右边去寻找一个名词短语作为它的宾语。组合之后得到s左边分p的结构,然后这个结构再朝左边找一个名词短语就得到了一句话。

  book实际上和右边book which Mary likes先组合得到了宾语即为NP,然后又和左边的Tom结合。大家可以看到如果每一个词上都得到了复杂的词汇化标签的话,那么这个句法结构的分析就相对比较简单了。因为标签和标签之间的组合呢具有很强的限制性。
在这里插入图片描述
  在组合范畴句法分析里面,每个词打标签的步骤,叫做Supertagging,为什么叫tagging,而不是tending呢?就是因为每一个句法标签,它的含义非常丰富,所以给每个词标记了这个标签,几乎就形成了句法分析。所以Supertagging的这个任务也被化归为浅层句法分析任务。和成分句法相关的一个浅层句法分析任务,是Syntactic chunking。它是把一句话切成比较大的短语块,比如在这句话里,包括名词短语He、动词短语made、名词短语a request、介词短语for、动词短语cutting down、名词短语the operation buget。
在这里插入图片描述

3. 机器翻译

  参考链接:https://towardsdatascience.com/machine-translation-a-short-overview-91343ff39c9f

3.1 主要内容

  最简单的方法就是把机器翻译的sequence to sequence问题经过分词后转换成word to word的问题。如果用最简单的方式来实现的话,就是使用哈希表来做。但这样一来,虽然效率很高,但是每个词只能指定一种意思(如频率出现最高的词),而且也可能翻译出来的句子语法不通顺。那我们能否在以上系统的基础上进行改进,从而使得语法变得通顺。

  我们以中翻英为例,假设要翻译的句子为今晚的课程有意思,经过分词后则为:今晚 / 的 / 课程 / 有意思。通过逐词的翻译得到:tonight,of,course,interesting(翻译模型)。

在这里插入图片描述
  由于逐词翻译忽略了语法,所以如果要想让翻译结果变得通顺,可以对翻译结果进行排列枚举,求出概率最大的排列(语言模型),具体排列如下所示:

  • tonight,the course,interesting,of
  • tonight,interesting,of,the course
  • of,the course,tonight,interesting
  • of,tonight,interesting,the course
  • of,interesting,the course,tonight
  • the course,of,interesting,tonight
  • the course,of,tonight,interesting 概率最大
  • the course,tonight,of,interesting
  • the course,interesting,tonight,of
  • the course,interesting,of,tonight

  如果有n个单词,排列总个数为n!,时间复杂度为O(2^n)(NP hard的问题)。

  如果把上述提到的Translation Model和Language Model结合到一起,也称作是Decoding Algorithm(Vertible Algorithm,主要采用了DP算法),即能直接求出 P ( c ∣ e ) ∗ P ( e ) P(c|e)*P(e) P(ce)P(e)

  中翻英的数学描述是:把中文记为 C C C,把英文记为 E E E,翻译的目标就是求在给定中文 C C C的条件下,求出英文 E E E的最大概率对应的序列:
E = arg max ⁡ e P ( e ∣ c ) E=\argmax \limits _{e} P(e∣c) E=eargmaxP(ec)

  根据贝叶斯概率公式可知:
E = arg max ⁡ e P ( e ∣ c ) = arg max ⁡ e P ( c ∣ e ) ∗ P ( e ) P ( c ) E=\argmax \limits _{e} P(e∣c) = \argmax \limits _{e} \frac{P(c|e) *P(e)}{P(c)} E=eargmaxP(ec)=eargmaxP(c)P(ce)P(e)

  对于给定的 c c c来说, P ( c ) P(c) P(c)是个常量,所以可以不予考虑。则 E = arg max ⁡ e P ( c ∣ e ) ∗ P ( e ) E= \argmax \limits _{e} P(c|e) *P(e) E=eargmaxP(ce)P(e)

3.2 总结


  其中维特比算法是把时间复杂度从 O ( 2 n ) O(2^n) O(2n)降低到 O ( n p ) O(n^p) O(np)。其中上图有一些错误。

  最让人疑惑的点在于,为什么翻译模型对应的是 P ( c ∣ e ) P(c|e) P(ce),不是给定中文翻译成英文单词吗?

https://www.quora.com/What-are-the-major-open-problems-in-natural-language-understanding

3.3 机器翻译的评价指标

  机器翻译中常用的自动评价指标是 BLEU 算法,另外,在其他 seq2seq 任务中也会使用该评价指标,例如问答系统。

  假设人工翻译后的文章为reference,而机器翻译后的文章为candidate。并假设candidate和reference如下所示:

  • candinate: the the the the the the the
  • reference: the cat is on the mat

3.3.1 最原始的BLEU

  最原始的BLEU的计算公式为:

BLEU = sum([i in reference for i in candidate])  \  len(candidate)
  • 1

  显而易见的是此时BLEU=1。

3.3.2 改进的BLEU算法 — 分子截断计数

  由于分子计算式不合理,对其进行修改后变为:
C o u n t w i c l i p = m i n ( C o u n t w i , R e f _ C o u n t w i ) Count^{clip}_{w_i}=min(Count_{w_i},Ref\_Count_{w_i}) Countwiclip=min(Countwi,Ref_Countwi)
C o u n t c l i p = ∑ C o u n t w i c l i p Count^{clip}=\sum Count_{w_i}^{clip} Countclip=Countwiclip

  其中 w i w_i wi对应一个单词, C o u n t w i Count_{w_i} Countwi指的是 w i w_i wi出现在candidate的次数,而 R e f _ C o u n t w i Ref\_Count_{w_i} Ref_Countwi指的是 w i w_i wi出现在reference的次数。

  那么就来讨论一下上述举的例子,由于在candidate中就只包含一个单词,所以:
C o u n t c l i p = C o u n t w 1 c l i p = 2 Count^{clip}=Count_{w_1}^{clip}=2 Countclip=Countw1clip=2

B L E U = 2 7 BLEU=\frac{2}{7} BLEU=72

  此前讲的例子都是单个reference,那么如果是多个reference呢?

C o u n t w i c l i p = m a x ( C o u n t w i , j c l i p ) , j = 1 , 2 , 3...... Count^{clip}_{w_i}=max(Count^{clip}_{w_{i,j}}),j=1,2,3...... Countwiclip=max(Countwi,jclip),j=1,2,3......

  之前讨论的更多是单个词,而忽略了词与词之间的顺序。所以只需将上述的单个词换成n-gram即可。

4. 关系抽取

  根据文本的长度我们可以将关系抽取任务划分为三类:句子级别(Sentence level),句袋级别(Bag level)和文档级别(Document level)。句子级别是指三元组的两个实体在同一个句子中共现,句袋级别是指三元组的两个实体在一个句子集合中共现,文档级别则是在一个完整文档内进行关系抽取。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/345368
推荐阅读
相关标签
  

闽ICP备14008679号