用Python对指定的csv文件进行分词,找到与描述汽车有关的所有名词,并列出出现频率最高的前10个名词及频率,最后对这10个名词进行可视化分析
时间: 2024-03-09 20:50:14 浏览: 62
好的,你可以使用以下代码来实现你的需求:
```python
import pandas as pd
import jieba
from collections import Counter
import matplotlib.pyplot as plt
# 读取csv文件
df = pd.read_csv('your_csv_file_path.csv')
# 定义停用词列表
stopwords = ['是', '的', '在', '了', '和', '与', '等', '有', '就', '还', '也', '不', '被', '被动']
# 定义分词函数
def cut_words(text):
words = [word for word in jieba.cut(text) if word not in stopwords]
return words
# 定义与汽车相关的关键词列表
auto_keywords = ['汽车', '车辆', '轿车', 'SUV', '跑车', '卡车', '摩托车', '电动车', '自行车']
auto_related_keywords = ['驾驶', '行驶', '加速', '刹车', '转向', '行车', '车速', '转速', '车灯', '车窗', '空调', '音响', '座椅', '方向盘', '发动机', '变速器', '轮胎', '油耗', '保养', '维修']
# 进行分词并统计词频
words_list = []
for text in df['content']:
words = cut_words(text)
words_list.extend(words)
word_count = Counter(words_list)
# 找到与描述汽车有关的所有名词
auto_related_words_list = []
for word in word_count:
if word in auto_related_keywords and word_count[word] > 1:
auto_related_words_list.append((word, word_count[word]))
elif any(keyword in word for keyword in auto_keywords) and word_count[word] > 1:
auto_related_words_list.append((word, word_count[word]))
# 对结果按词频排序
auto_related_words_list.sort(key=lambda x: x[1], reverse=True)
# 输出出现频率最高的前10个名词及频率
for i in range(10):
print(f'{i+1}. {auto_related_words_list[i][0]}: {auto_related_words_list[i][1]}')
# 可视化分析
x = [word[0] for word in auto_related_words_list[:10]]
y = [word[1] for word in auto_related_words_list[:10]]
plt.bar(x, y)
plt.title('Top 10 Auto Related Words')
plt.xlabel('Words')
plt.ylabel('Frequency')
plt.show()
```
你需要替换代码中的`your_csv_file_path.csv`为你的csv文件的路径。这个程序会输出出现频率最高的前10个与描述汽车相关的名词及频率,并且绘制出这10个名词的词频柱状图。
阅读全文