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. 机器翻译

2.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)

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

  根据贝叶斯概率公式可知:
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)}

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

2.2 总结


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

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

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

发布了178 篇原创文章 · 获赞 389 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/herosunly/article/details/104837490
今日推荐