自然语言处理之N-gram模型

自然语言处理之N-gram模型

该模型的核心思想是我们每个人想说的下一个字都基于之前我们所说的话得到一个条件分布,在这个条件概率中最大的那个字作为我们想要说的下一个字。比如我说举头望明月,低头思故。然后就从所有的汉字里面以这九个字作为条件,之后哪个字出现的概率是最大的,那就是相对应的那个字。
N-gram模型基于这样一个假设,第n个词的出现只与前面n-1个词相关,而与其他词都不相关。整句话的概率就是各个词出现概率的乘积。它是一个语言模型(language model),一个基于概率的判别模型,输入一句话,输出的是这句话出现的概率,也就是这些词的联合概率。

N-gram模型常见的有Uni-gram,Bi-gram,Tri-gram。其中

Uni-gram:假设不考虑任何的条件概率
在这里插入图片描述
Bi-gram:后一个词的出现只依赖于前一个词
在这里插入图片描述
Tri-gram:后一个词的出现依赖于前两个词
在这里插入图片描述
举个栗子:

以Bi-gram为例,假如我们有这样一个语料库
在这里插入图片描述
在上面的语料库中不难发现 “I”出现了3次,“I am"出现了1次,因此可以计算概率:
p(am|I)=1/3

如果我们想要计算出I am sunny这句话出现的概率,则需要计算
p(I|)=2/3,p(am|I)=1/3,p(sunny|am)=1/3,p(|sunny)=2/3

p(I am sunny)=1/3x2/3x1/3x1/3x2/3=4/243

该模型的优缺点:

其中常用的就是Bi-gram,Tri-gram模型,而且效果还不错,但是高于四元的就用的很难少了,因为训练它需要很庞大的语料,而且数据稀疏严重,时间复杂度高,精度却没有提升多少。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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
发出的红包

打赏作者

纵有千堆雪与长街

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值