文本分词后如何统计词频
时间: 2023-04-08 09:04:04 浏览: 156
可以使用Python中的NLTK库进行文本分词和词频统计。首先,使用NLTK库中的分词器对文本进行分词,然后使用Python中的字典数据结构来统计每个词出现的次数。具体实现可以参考以下代码:
```python
import nltk
from collections import Counter
# 读取文本文件
with open('text.txt', 'r') as f:
text = f.read()
# 使用NLTK库中的分词器对文本进行分词
tokens = nltk.word_tokenize(text)
# 使用Python中的字典数据结构来统计每个词出现的次数
word_freq = Counter(tokens)
# 输出词频统计结果
for word, freq in word_freq.most_common():
print(word, freq)
```
其中,`text.txt`是待分词的文本文件,`nltk.word_tokenize()`函数可以将文本分成单词,`Counter()`函数可以统计每个单词出现的次数,`most_common()`方法可以按照词频从高到低排序并输出结果。
相关问题
用python jieba分词并统计词频一个本地文本文件,并且要将结果导出为如果要分词并统计词频的是一个本地文本文件csv格式
要在Python中使用jieba分词并统计词频,然后将结果导出为CSV格式,你可以结合使用jieba库进行分词,collections库进行词频统计,以及csv库进行CSV文件的写入。以下是一个示例:
```python
import jieba
from collections import Counter
import csv
# 打开本地文本文件
with open('input.txt', 'r', encoding='utf-8') as file:
# 读取文件内容
text = file.read()
# 执行分词
seg_list = jieba.cut(text)
# 统计词频
word_freq = Counter(seg_list)
# 创建一个CSV文件,并写入词频统计结果
with open('output.csv', 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['词语', '词频'])
for word, freq in word_freq.items():
writer.writerow([word, freq])
```
在这个示例中,我们使用`open()`函数打开名为`input.txt`的本地文本文件,并使用`read()`方法读取文件内容到变量`text`中。然后,我们使用jieba库的`cut()`函数对文本进行分词,并使用collections库的Counter类对分词结果进行词频统计。
接下来,我们创建了一个CSV文件,并使用csv.writer对象将词语和词频写入文件中。请注意,代码中的`'input.txt'`是要读取的本地文本文件的路径和名称,而`'output.csv'`是要生成的CSV文件的路径和名称。
运行代码后,将生成一个名为`output.csv`的CSV文件,其中包含词语和对应的词频统计结果。CSV文件中的第一行是列标题,分别为`'词语'`和`'词频'`。每个词语及其对应的词频将占据一行。你可以根据需要修改列名和文件路径。
请确保已经安装了jieba库(可以使用 `pip install jieba` 进行安装),以及collections库和csv库,并导入了所需的模块。同时,确保指定的文件路径是正确的,并且你有权限读取和写入文件。
从网上获取一篇近期中文时事文本素材,分词后统计词频,将高频词用wordcloud可视化为词云。
最近的一篇中文时事新闻报道,例如:“中国政府近日宣布了一项新的经济刺激计划,旨在提振内需,促进科技创新。”我们可以对这篇文本进行分词处理,常用工具有jieba分词库,将其拆分为一个个词语。
分词结果如下:
["中国", "政府", "近日", "宣布", "了", "一", "项", "新", "的", "经济", "刺激", "计划", ",", "旨在", "提振", "内需", ",", "促进", "科技创新", "。"]
接下来,我们统计每个词出现的频率,常用的Python库如`collections.Counter`可以帮助我们完成这项任务:
```python
from collections import Counter
text = ["中国", "政府", ...] # 这里用实际分词结果替换
word_freq = Counter(text)
```
然后,我们可以使用`wordcloud`库生成词云图,展示高频词汇:
```python
from wordcloud import WordCloud
import matplotlib.pyplot as plt
def visualize_wordcloud(word_freq):
wordcloud = WordCloud(width=800, height=400, background_color='white', max_words=200).generate_from_frequencies(word_freq)
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
visualize_wordcloud(word_freq)
```
阅读全文