N元语言模型

语言模型是干嘛的?

语言模型可以计算任何句子的概率。例如,“I love you”的概率是多少?用数学语言表述, N 元语言模型( N -gram model)根据一个词语的前 N1 个词语,来计算这个词语的概率。如果我们有了一个2元模型,“I love you”的概率就等于 P(I)×P(love|

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2元语言模型是一种简单的n元语言模型,它假设一个单词出现的概率只与前面一个单词有关。在实现2元语言模型时,我们需要首先对训练数据进行处理,统计每个单词出现的次数以及每个单词后面跟着什么单词的频率。 下面是一个简单的Python实现: ```python import re from collections import defaultdict def preprocess(text): # 将文本转换为小写 text = text.lower() # 去除标点符号 text = re.sub(r'[^\w\s]', '', text) # 分词 words = text.split() return words def count_words(words): # 统计每个单词出现的次数 freq = defaultdict(int) for word in words: freq[word] += 1 return freq def count_pairs(words): # 统计每个单词后面跟着什么单词的频率 freq = defaultdict(lambda: defaultdict(int)) for i in range(len(words)-1): freq[words[i]][words[i+1]] += 1 return freq class BigramLanguageModel: def __init__(self, text): # 预处理文本 words = preprocess(text) # 统计单词和单词对出现的频率 self.word_count = count_words(words) self.pair_count = count_pairs(words) def predict(self, word): # 根据2元模型预测下一个单词 candidates = self.pair_count[word] total = sum(candidates.values()) probs = {w: c/total for w,c in candidates.items()} return probs ``` 这个程序实现了一个简单的2元语言模型,它接受一个文本作为输入,预处理文本并统计单词和单词对出现的频率。预测时,给定一个单词,它返回一个字典,包含该单词后面跟着的单词及其出现的概率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值