从统计学看NLP之概述(1)

前言

在我看来NLP的所有思想都是基于统计学来的,不管是HMM,CRF还是说目前火热的神经网络,而目前入行NLP领域的同学可能大部分都没有接触过其中的统计学原理,所谓的神经网络没可解释性也导致大家没兴趣去研究为什么NLP的神经网络要这么去设计。

在接下来的一系列文章中,我将会给大家从统计学的角度来揭开NLP原理的神秘面纱。

温馨提示,本系列文章需要屏幕前的您对贝叶斯有一定的了解。

机器翻译

说到机器翻译,目前大部分都是采用seq2seq的模型,如果你是一个不懂ai的coder,leader需要你开发一个中英翻译系统,你会怎么做呢?

假如,我们手上已经有了一个中英词典,在不考虑语法的情况下,对于一个句子,首先对其进行分词,然后查阅词典,找到每个词对应的英文,即可翻译完成,这个模块我们成为TM(Translation Model)。

例如,我们有这样一个句子CSDN的博客有意思,分词后CSDN|的|博客|有|意思,对照词典后翻译结果为CSDN|of|the blog|intresting,我们把这种直译的结果叫做Broken English,可以看到,如果采用1-1对应的方式来进行直接翻译,那么在语序方面肯定是由问题的。

为了解决语序的问题,有一个最笨的办法,我们统计出所有词的排列方式,例如在上面的例子中,还有可能是

of|CSDN|the blog|intresting
intresting|CSDN|of|the blog
the blog|CSDN|of|intresting
...

等等,一共有24种排列方式即4!

拿到所有的排列方式后,我们需要一个工具,而这个工具呢,他能计算出所有的排列是正常语序的概率,最后我们选择出概率最高的句子作为我们的翻译结果。这里提到的工具,就是NLP的核心LM(Language Model),LM有很多包括HMM、CRF还有目前热门的BERT等等。LM我们之后再说,先回过头来继续看咋们的翻译,对于这个模型有没有什么缺点呢?很明显,在第二个阶段,时间复杂度很高,如果序列的长度是N,那么时间复杂度就是O(N!),并且还分成了两个任务,有没有什么办法能提高效率呢?这就是在NLP领域中最出名的vertbi维特比算法,这里我们简单介绍下其原理,之后还会再详细介绍。

Vertbi维特比简介

我们设c表示的是中文,e表示的是英文,那么翻译任务的目标就是最大化 p ( e ∣ c ) p(e|c) p(ec),而我们的TM主要是用来进行翻译,可以表示为 p ( c ∣ e ) p(c|e) p(ce),LM是用来判断当前的组合是不是人话,可以表示为 p ( e ) p(e) p(e),根据贝叶斯定理我们可以得到
p ( e ∣ c ) = p ( c ∣ e ) p ( e ) p ( c ) p(e|c) = \frac{p(c|e)p(e)}{p(c)} p(ec)=p(c)p(ce)p(e)
因为我们是把中文翻译成英文,所以不管是什么句子, p ( c ) p(c) p(c)都是一样的,可以看做一个常数项,因此我们可以把目标简化为最大化
p ( e ∣ c ) = p ( c ∣ e ) p ( e ) p(e|c) = p(c|e)p(e) p(ec)=p(ce)p(e)
总结一下,维特比算法就是给定TM与LM找出最优值的使得 p ( c ∣ e ) p ( e ) p(c|e)p(e) p(ce)p(e)最大,维特比算法把上面提到方法合二为一,让时间复杂度从指数级别降低到了多项式级别。

语言模型

还是以翻译为例子,一个好的语言模型,要考虑到语序问题,例如下面的两个句子,好的语言模型左边的句子概率应该要比右边大。

p(I like studing nlp) > p(I like nlp studing)

那么如何计算这个p()呢,根据联合概率我们可以计算出

p(I like studing nlp) = p(I)·p(like|I)·p(studing|I,like)·p(nlp|I,like,studing)

对于第一项p(I)很好计算,但是对于句子越后面的项p(nlp|I,like,studing)其条件概率是很难计算的,因此为了简化计算过程,NLP界的大佬们采用了markov assumption马尔科夫假设,即用以下的方式来近似表示联合概率

  • Unigram,如果我们让每个词都是相互独立的,p(I like studing nlp) = p(I)·p(like)·p(studing)·p(nlp)
  • Bigram,如果我们让每个词和它的前一个词有关系,p(I like studing nlp) = p(I)·p(like|I)·p(studing|like)·p(nlp|studing)
  • Trigram,如果我们让每个词和它的前两个词有关系,p(I like studing nlp) = p(I)·p(like|I)·p(studing|I,like)·p(nlp|like,studing)

上面的方法统称为n-gram,考虑了几个词就是几gram。

总结

本文主要给大家介绍了一个NLP常见的任务机器翻译,其中包括翻译模型与语言模型,如果我们把翻译场景改变为分词场景,只需要把翻译模型变为分词模型即可,然后用语言模型判断一下哪一种分词是最合理的,同理词性标注也是一样的道理。在下一篇文章中,我们会以分词任务再来详细介绍下维特比算法。

To be continue…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自然语言处理(Natural Language Processing,NLP)是研究如何利用计算机技术对语言问题处理和加工的一门学科。它涉及对文本进行识别、分类、提取、转换和生成等处理方法和实现技术。NLP的目标是使计算机能够自动理解和处理自然语言文本,实现对人的意图和心声的理解,以满足不同用户的需求。NLP涉及的关键技术包括基础技术、核心技术和应用技术。 基础技术包括词法分析、句法分析和语义分析等,用于对文本进行结构化的处理和解析。核心技术包括语言模型、信息检索、机器翻译和文本生成等,用于处理和理解文本的语义和语用信息。应用技术包括情感分析、文本分类、问答系统和智能对话系统等,用于实现个性化的信息服务和人机交互。 自然语言处理的项目概述可以包括以下内容: 1. 项目的背景和目标:介绍项目所针对的具体问题和目标,例如构建一个智能客服系统或开发一个文本分类模型。 2. 数据收集和预处理:描述如何收集和准备用于训练和评估的语言数据,包括文本的获取、清洗和标注等过程。 3. 特征工程和模型选择:说明如何选择合适的特征表示方法和模型结构,例如使用词袋模型或深度学习模型。 4. 模型训练和优化:介绍如何使用训练数据对模型进行训练和优化,包括参数调整和模型评估等过程。 5. 模型应用和性能评估:说明如何将训练好的模型应用于实际场景中,并评估模型的性能和效果。 6. 结果分析和改进:分析模型的输出结果并进行优化和改进,例如通过收集用户反馈和迭代优化模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值