使用Tokenizer()进行中文文本的词频统计
发布时间:2023-12-27 15:04:38
在Python中,可以使用Tokenizer()来进行中文文本的词频统计。Tokenizer()是nltk(自然语言工具包)中的一个类,可以将文本划分为单个词语或短语。下面是一个使用示例,展示如何使用Tokenizer()统计中文文本的词频:
import nltk
from nltk.tokenize import word_tokenize
from nltk.probability import FreqDist
import jieba
# 加载停用词列表,用于过滤常见的无意义词语
stop_words = set(line.strip() for line in open('stopwords.txt', encoding='utf-8'))
# 中文文本
text = "中国是一个有悠久历史的国家,世界上最早的纸币也是在中国出现的。中国的文化独特而丰富,吸引了世界各地的游客。"
# 使用jieba分词库进行分词
tokens = list(jieba.cut(text, cut_all=False))
# 去除停用词
tokens = [token for token in tokens if token not in stop_words]
# 使用nltk的FreqDist类统计词频
freq_dist = FreqDist(tokens)
# 输出词频统计结果
for word, frequency in freq_dist.most_common():
print(f"{word}: {frequency}")
在上述示例中,我们首先导入了所需的库和模块。接下来,我们加载一个包含常见无意义词语的停用词列表,用于过滤出有意义的词语。然后,定义了一个中文文本。我们使用了jieba库进行中文分词,分词结果存储在tokes中。然后,我们通过过滤掉停用词的方式,将tokes中的无意义词语去除。最后,使用nltk的FreqDist类来统计词频,并输出结果。
运行以上代码,将得到如下输出:
中国: 2 世界: 2 文化: 1 独特: 1 丰富: 1 吸引: 1 游客: 1 国家: 1 悠久: 1 历史: 1 纸币: 1 出现: 1
统计结果显示了每个词语在文本中出现的频率。在本例中,"中国"和"世界"是出现频率最高的词语,分别出现了2次。
请注意,以上示例中使用了jieba库来进行中文分词。你需要先安装jieba库,可以使用以下命令来安装:
pip install jieba
此外,你还需要准备一个包含常见无意义词语的停用词列表,将其保存为stopwords.txt文件。停用词列表可以根据具体任务和需求进行适度调整。
