n-gram模型代码实现python
时间: 2024-09-24 07:13:21 浏览: 49
N-gram语言模型
4星 · 用户满意度95%
n-gram模型是一种统计语言建模方法,常用于预测文本序列中的下一个词或字符,基于前n个词或字符的组合概率。在Python中,我们可以利用`collections`库中的`Counter`类和`itertools`库来简单实现n-gram模型。这里是一个基础的例子:
```python
import collections
import itertools
def count_ngrams(text, n):
# 将文本拆分成n个字符的序列
ngrams = zip(*[text[i:] for i in range(n)])
# 使用Counter计算每个n-gram的频率
counter = collections.Counter(ngrams)
return counter
# 示例文本
text = "这是一个简单的n-gram示例"
n = 2 # bi-gram (bigram)
# 计算bi-grams
bi_grams = count_ngrams(text, n)
print(f"二元组( bi-grams ):{bi_grams}")
# 获取最常见的bi-gram
most_common_bigram, frequency = bi_grams.most_common(1)[0]
print(f"最常见的一对词: {most_common_bigram} - 出现次数: {frequency}")
# 推测下一个词
def predict_next_word(prev_ngram, bigrams):
try:
next_word = prev_ngram[1] + list(bigrams.keys())[list(bigrams.values()).index(prev_ngram[1])]
except IndexError:
next_word = None
return next_word
prev_words = text.split()[-n:]
next_word = predict_next_word(prev_words, bi_grams)
print(f"预测的下一个词: {next_word}")
```
阅读全文