N-gram模型对比中文文本代码
以下是一个简单的中文文本N-gram模型的代码示例:
import re
from collections import defaultdict
# 读取文本文件
with open('text.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 清洗文本
text = re.sub('\n+', '', text) # 去除换行符
text = re.sub('\s+', '', text) # 去除空白符
# 定义N-gram模型
def ngram(text, n):
# 初始化字典
freq = defaultdict(int)
# 遍历文本
for i in range(len(text)-n+1):
gram = text[i:i+n]
freq[gram] += 1
return freq
# 计算1-gram频率
unigram_freq = ngram(text, 1)
# 计算2-gram频率
bigram_freq = ngram(text, 2)
# 计算3-gram频率
trigram_freq = ngram(text, 3)
# 输出结果
print('1-gram频率:', unigram_freq)
print('2-gram频率:', bigram_freq)
print('3-gram频率:', trigram_freq)
这个代码示例读取一个名为text.txt的文本文件,清洗文本并计算1-gram、2-gram和3-gram的频率。在这个示例中,使用了Python的re模块来清洗文本,使用了Python的collections模块中的defaultdict类来初始化字典。这个示例仅仅是一个简单的N-gram模型的实现,实际上,N-gram模型还可以用于语言模型、文本分类、信息检索等多个领域。
原文地址: https://www.cveoy.top/t/topic/b3dD 著作权归作者所有。请勿转载和采集!