从概率角度理解N-gram模型

概率模型

N-gram就是一个简化的概率模型,所以我们先从未简化的概率模型入手。
从统计语言模型的角度讲,判断一个句子是否合理,就是看它的可能性大小如何。
对于一个句子S,假设它是由词汇 [w1, w2,…,wn] 组成,对于 S 语句是否合理,就是看S出现的可能性大小,也就是数学上S出现的概率P(S)。
P(S) = P(w1, w2, …, wn)
由条件概率可知,上式可以写为如下表达:
P(S) = p(w1)p(w2|w1)p(w3|w2,w1)…p(wn|w1,w2,…,wn-1)
这就是模型的计算式,对于第一项p(w1)的计算很简单,第二项的计算也不难,第三项的计算就比较复杂了,涉及到 3 个变量,每个变量的可能性(可能取的值)是整个语料库的大小,所以,式子越往后,计算越复杂。而且这仅仅是一个句子。对于一个新句子,又得重新统计。

模型简化

为了解决这个问题,俄国数学家马尔可夫提出一种方法:假设一个词汇只依赖于前一个词汇,而不是依赖于前面所有的词汇,按照这种假设,计算就很简单了,实际上这被称为马尔可夫假设。那么上面的条件概率式子可以简化为下式:
P(S) = p(w1)p(w2 | w1)p(w3 | w2)…p(wn | wn-1)

我们取其中一个条件概率项具体计算一下:
p(wi | wi-1) = p(wi, wi-1) / p(wi-1)

p(wi, wi-1)的计算:统计词汇 wi 和 wi-1 在文本中相邻出现的次数 num(wi, wi-1),设文本中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
n-gram模型是一种用于自然语言处理统计语言模型,用于预测一个词语在给定前文的情况下出现的概率。在R语言中,可以使用`quanteda`包来实现n-gram模型。 首先,需要安装`quanteda`包,可以使用以下命令进行安装: ```R install.packages("quanteda") ``` 安装完成后,可以使用以下代码创建n-gram模型: ```R library(quanteda) # 创建一个文本对象 text <- c("I love coding in R", "R is a powerful language") # 创建一个corpus对象 corpus <- corpus(text) # 创建一个token对象 tokens <- tokens(corpus) # 创建一个n-gram模型 ngram_model <- tokens_ngrams(tokens, n = 2) ``` 上述代码中,我们首先创建了一个文本对象`text`,然后将其转换为corpus对象`corpus`,再将corpus对象转换为token对象`tokens`。最后,使用`tokens_ngrams`函数创建了一个n-gram模型`ngram_model`,其中`n`参数指定了n-gram的大小。 创建完n-gram模型后,可以使用以下代码获取n-gram的频率信息: ```R # 获取n-gram的频率信息 ngram_freq <- textstat_frequency(ngram_model) ``` 上述代码中,我们使用`textstat_frequency`函数获取了n-gram模型中各个n-gram的频率信息。 除了获取频率信息外,还可以使用n-gram模型进行文本生成和预测。例如,可以使用以下代码生成一个新的文本: ```R # 使用n-gram模型生成新的文本 new_text <- generate(ngram_model, n = 10) ``` 上述代码中,我们使用`generate`函数根据n-gram模型生成了一个包含10个词语的新文本。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值