python英文分词统计词频,python词频统计前十个

  python英文分词统计词频,python词频统计前十个

  引导词

  本文主要探讨分词技术中的统计分词方法。首先介绍了统计分词方法及其一般步骤,然后介绍了语言模型,最后介绍了实现统计分词的常用统计算法(ggddy算法)。以下是文章的结构。这篇文章的内容全是晾衣架。(阅读全文大概需要20分钟)内容总结

  统计分词

  1.统计分词方法

  基于统计的分词算法的主要核心是词的稳定组合,因此相邻词在上下文中同时出现的次数越多,成词的可能性就越高。因此,相邻词的概率和频率可以很好地反映词的可靠性。可以统计训练文本中相邻词组合的频率,计算它们之间的共现信息。信息反映了汉字之间联结关系的紧密程度。当密度高于一定阈值时,词群就可能形成一个词。这种方法也叫无词典分词。

  第二步

  1.需要建立语言模型。

  2.对句子进行切分,用统计的方法计算切分结果的概率,得到概率最高的分词方法。(隐马尔可夫模型HMM,条件随机场CRF等统计方法)

  统计语言模型

  1.概念

  怕黑的自然处理专家Aries教授说,一个句子是否合理,取决于它的可能性。统计语言模型(Statistical Language Model)是一种用来描述词、句乃至整个文档等不同语法单位的概率分布,衡量一个句子或语序所在的语言环境中人们的日常写作风格是否恰当的模型。

  一个好的统计语言模型依赖于大量的训练数据。在20世纪70年代,模型表达的质量基本上取决于该领域数据的丰富程度。IBM做过信息检索评测,发现Bi-gram需要上亿字才能达到最优表示,而TriGram需要数十亿字才能达到饱和。

  本世纪初,最流行的统计语言模型是N-gram,这是一种典型的基于稀疏表示的语言模型。近年来,随着深度学习的爆发和兴起,以单词嵌入为代表的分布式表示语言模型取得了较好的效果,自然语言处理领域的其他模型也随之而来。

  此外,Ronald Rosenfeld[7]还涉及了决策树模型、最大熵模型和基于决策树的自适应模型。语言模型

  2.n元语言模型

  s表示有意义的句子,由一系列w1、w2和wn按特定顺序组成,n是句子的长度。我们想知道s出现在文中的可能性,也就是s出现的概率p(s),如果可能的话,统计一下人类有史以来说的话,你就知道那个词出现的可能性了。但是,这种方法是不可行的,所以需要一个模型进行估算。标记

  通过扩展p(s)获得:

  p(s )=p ) w1,w2.wn))))).

  根据条件概率公式:

  p(W1,W2.wn )=P ) W1 ) p ) w2W1 ) p ) W3W1,w2 )P ) WNW1,w1.wn-1)))

  这里,p(w1)表示第一个单词w1的概率,p) P(w2w1)是当第一个单词已知时第二个单词的概率。wn出现的概率取决于它之前的所有单词。

  在计算中,第一个词的概率p(w1)容易计算,渐渐的最后一个p) P(wnw1,w1.wn-1)的估计难度就太高了。这里以俄罗斯数学家安德烈马尔科夫(Andrey Markov)为例,将任意一个词wi的概率只与前一个词wi-1相关的假设称为马尔科夫假设。

  p(s)=p)w1)p)w2 w1)p)w3 w2)p)wi w-1)p)wn wn-1))

  统计语言模型是一个二元模型。

  下面具体分析一下如何获得p(s)。

  p(wiwi-1 )=p(wi-1,wi )=p(wi-1))))))))))))).

  其中联合概率p(wi-1,wi)和边际概率p(wi-1,wi)被估计,

  如果有语料库,只需统计wi-1和wi在文本c(wi-1,wi)中相邻出现的次数,

  计算wi-1在同一文本中出现的次数C (wi-1),除以语料库规模C,从而计算出相对频率:

  f(wi-1,wi )=c ) wi-1,wi )/c

  f(f(wi-1 )=c ) wi-1 )/c

  根据大数定律,如果数据量足够大,相对频率就等于概率,所以:

  p(wi-1,wi ) c ) wi-1,wi )/c

  p (p (wi-1 ) wi-1 )/c

  获取:

  p(wiwi-1 )=c(wi-1,wi)=c(wi-1))))))))p(wi wi-1)))))p)65

  前面提到的词只和前面的词相关,形成二元模型;但在现实生活中,一个词的出现可能与之前的一些词有关。因此,假设文本中的每个单词wi都与前面的N-1个单词相关。

  p(wiw1,w2.wi-1 )=p ) wiwi-n1,wi-N 2.wi-1 ) ) ) ) ) ) ) ) ) ) 652)

  p这种假设叫做N-1马尔可夫假设,语言模型叫做N-Gram模型。在实践中,N=3的三元模型是应用最广泛的模型。一般来说,n的值相对较小,因为n的值越大,所需的计算能力就越大。

  3python代码实现

  以下是基于词典的分词方法。使用unigram语言模型,在P(S),p (w1),p (w2),p (w3),p (wi),p (wn)的计算过程中,如果存在某个P(wi)=0,那么P(S)=0,计算结果与实际相同。因此,在计算p (w1)、p (w2)、p (w3)、p (wi)、p (wn)时,变形为

  -(logP(w1)logP(w2)logP(w3)logP(wi)logP(wn))

  那么概率小的词不会导致P(S)为0。

  4种其他语言模型

  其他语言模型包括神经网络语言模型(如word2vec)、递归神经网络语言模型、基于决策树的语言模型、最大熵模型和自适应语言模型。

  HMM和ggddy算法

  1.嗯(表示踌躇等)

  隐马尔可夫模型(HMM)是一种关于时间序列的统计模型和概率模型。它描述了由参数未知的马氏链生成的不可观测状态随机序列生成可观测随机序列的过程。(这里不解释HMM,我会在另一篇文章里详细解释马尔可夫链。)不了解HMM的可以先学习这篇文章:一文掌握jzdyb和隐马尔可夫模型。

  2.ggddy算法

  Ggddy算法(维特比算法)是一种动态规划算法。GGY算法由Andrew ggddy于1967年提出,用于数字通信链路中的反卷积,以消除噪声。该算法广泛应用于CDMA和GSM数字蜂窝网络、拨号调制解调器、卫星、深空通信和802.11无线网络中的解卷积码。如今,它常用于语音识别、关键词识别、计算语言学和生物信息学。例如,在语音(语音识别)中,声音信号被视为观察到的事件序列,而文本串被视为声音信号的隐含原因。因此,可以将ggddy算法应用于声音信号,以找到最可能的文本串。

  3 .求解HMM问题的ggddy算法

  用Ggddy算法解决HMM三大问题中的解码问题(给定模型和观测序列,如何找到与这个观测序列最匹配的状态序列)。问题描述如下:首先我们已经知道状态序列X会产生观测序列O:HMM隐状态序列和可观测序列。

  但是状态序列X生成的观测序列有很多种可能,每种都有一个概率,如下图。比如wo可能有三种可能:Oh,I,Wo跃迁概率。

  实际上问题变成了最大概率问题,最大概率被理解为最短路径问题,转化为求解最短路径问题:(为方便标记,标记为下图中的字母)标记为字母。

  算法求解:接下来用ggddy算法求解最短路径,本质上是一种动态规划,把大问题变成小问题:第一步,A-B:图A到b

  第二步:A-B-C:活动图片:活动图片A到C

  拆卸:插图A至C

  3.步骤A-B-C-D:

  移动图: (可以确定A-C的3条最短路径)移动图A到d。

  拆卸:插图A至D

  第四步:A-B-C-D-E:

  移动图:(可以确定A-D的两条最短路径)移动图A到e

  拆卸:插图A至E

  最后得出A-E的最短路径A-B1-C2-D2-E1。至此,找到与我爱中国对应概率最高的汉字组合为:我爱中国。结果

  4.ggddy算法和分词

  使用ggddy算法进行分词,类似于使用最短路径Dijkstra算法进行分词,也是最短路径的分词方法:

  如下,假设每个点之间的权重是1:

  ggddy算法过程是:

  所以最短路径是1-6-8-9-11,分词结果是【计算语言学,课程,存在,意义】

  5.python代码实现

  以下是基于unigram语言模型和ggddy算法的分词python代码实现:

  原作者,未经授权请勿转载。

  想了解更多关于算法或者NLP的知识,可以关注微信官方账号:白话NLP。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: