searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

N-Gram模型全面理解(一)——原理介绍

2024-07-15 09:44:44
216
0

一、N-Gram介绍

自然语言处理(NLP)领域中,N-Gram算法是一种广泛应用于文本分析和处理的基础算法,它通过统计文本中连续n个词的序列(或称为“词组”)出现的评率,为各种NLP任务提供了有力的支持。

二、N-Gram算法原理

N-Gram算法的基本思想是将文本拆分成若干个连续的n个词的序列,并统计这些序列在文本中出现的频率,这里的n是一个正整数,表示词组中词的个数。

譬如:在句子“我喜欢学习自然语言处理”中,

  • 1-Gram是单个词,如“我”、“喜欢”等;
  • 2-Gram是相邻的两个词组成的词组,如“我喜欢”、“喜欢学习”等;
  • 3-Gram是相邻的三个词组组成的词语,如“我喜欢学习”等。

通过统计这些N-Gram的频率,我们可以得到文本中各个词组的出现概率分布,这些概率信息对后续的文本生成、语言模型构建、文本分类等任务具有重要的指导意义

三、N-Gram模型的构建步骤

  1. 文本预处理:对输入文本进行清洗,如去除标点符号、转换为小写等;
  2. 分词:将文本分割成单词序列或其他元素序列
  3. 构建N-Gram:根据选定的N值,从序列中提取N个连续元素的组合
  4. 计算概率:统计每个N-Gram在语料库中出现的次数,并计算它们的概率。可以通过N-Gram出现的次数除以文本中总的N-Gram数量得到

四、应用示例

假设我们有一下句子作为训练预料:

"I love deep learning"

如果给出I love () learning,那么空中填入deep的概率就比填入apple的概率大,假设用$w_1$表示I, 用$w_2$表示Iove, $w_3$表示deep, $w_4$表示learning,那么$p( I love deep learning) = p(w_1,w_2,w_3,w_4) = p(w_1)p(w_2|w_1)p(w_3|w_2,w_1)p(w_4|w_3,w_2,w_1)$,就是第一个词是 I 的概率,然后乘上已知第一个词是 I 第二个词是love的概率....整个下来就是这个句子的概率。直观来看,如果这个句子越常见、越自然、那么这个句子的概率就会越大,这个$p(w_2|w_1)$的概率其实就是统计你的文本数据库中有多少个 I love这个组合出现,然后除以 I 的数量, I love出现的次数越多,$p(love| I)$越大

五、模型缺点

  1. 参数空间过大,假设这个句子非常的长,那么第N个词就要基于前面N-1个词的计算概率,参数是N-1,太多了;
  2. 数据过于稀疏,简单的说就是并不是所有的词的组合都会出现,万一本文数据库中刚好有某一个组合没有出现过,那么这个组合的概率就是0,这个句子的概率因为有一个因子是0,乘起来还是0就不好了                                 

 

0条评论
0 / 1000
崔****静
2文章数
0粉丝数
崔****静
2 文章 | 0 粉丝
崔****静
2文章数
0粉丝数
崔****静
2 文章 | 0 粉丝
原创

N-Gram模型全面理解(一)——原理介绍

2024-07-15 09:44:44
216
0

一、N-Gram介绍

自然语言处理(NLP)领域中,N-Gram算法是一种广泛应用于文本分析和处理的基础算法,它通过统计文本中连续n个词的序列(或称为“词组”)出现的评率,为各种NLP任务提供了有力的支持。

二、N-Gram算法原理

N-Gram算法的基本思想是将文本拆分成若干个连续的n个词的序列,并统计这些序列在文本中出现的频率,这里的n是一个正整数,表示词组中词的个数。

譬如:在句子“我喜欢学习自然语言处理”中,

  • 1-Gram是单个词,如“我”、“喜欢”等;
  • 2-Gram是相邻的两个词组成的词组,如“我喜欢”、“喜欢学习”等;
  • 3-Gram是相邻的三个词组组成的词语,如“我喜欢学习”等。

通过统计这些N-Gram的频率,我们可以得到文本中各个词组的出现概率分布,这些概率信息对后续的文本生成、语言模型构建、文本分类等任务具有重要的指导意义

三、N-Gram模型的构建步骤

  1. 文本预处理:对输入文本进行清洗,如去除标点符号、转换为小写等;
  2. 分词:将文本分割成单词序列或其他元素序列
  3. 构建N-Gram:根据选定的N值,从序列中提取N个连续元素的组合
  4. 计算概率:统计每个N-Gram在语料库中出现的次数,并计算它们的概率。可以通过N-Gram出现的次数除以文本中总的N-Gram数量得到

四、应用示例

假设我们有一下句子作为训练预料:

"I love deep learning"

如果给出I love () learning,那么空中填入deep的概率就比填入apple的概率大,假设用$w_1$表示I, 用$w_2$表示Iove, $w_3$表示deep, $w_4$表示learning,那么$p( I love deep learning) = p(w_1,w_2,w_3,w_4) = p(w_1)p(w_2|w_1)p(w_3|w_2,w_1)p(w_4|w_3,w_2,w_1)$,就是第一个词是 I 的概率,然后乘上已知第一个词是 I 第二个词是love的概率....整个下来就是这个句子的概率。直观来看,如果这个句子越常见、越自然、那么这个句子的概率就会越大,这个$p(w_2|w_1)$的概率其实就是统计你的文本数据库中有多少个 I love这个组合出现,然后除以 I 的数量, I love出现的次数越多,$p(love| I)$越大

五、模型缺点

  1. 参数空间过大,假设这个句子非常的长,那么第N个词就要基于前面N-1个词的计算概率,参数是N-1,太多了;
  2. 数据过于稀疏,简单的说就是并不是所有的词的组合都会出现,万一本文数据库中刚好有某一个组合没有出现过,那么这个组合的概率就是0,这个句子的概率因为有一个因子是0,乘起来还是0就不好了                                 

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0