一、问题背景
随着社交媒体的发展,用户评论成为评价社会情绪的重要来源。本文旨在开发一个简易文本情感分析工具,通过预处理、关键词提取和情感分类,将自然语言转化为情感价值判断。
二、核心技术要点
1. 文本预处理与词袋构建
使用词袋模型对用户评论进行预处理,首先进行分词处理,过滤掉非词字符(如标点符号、数字),然后计算TF-IDF权重。例如,输入”我今天感到很无聊”,分词后得到[“我”, “今天”, “感到”, “很”, “无聊”],计算每个词在文档中的出现频率,最终得到关键词权重。
from collections import Counter
from nltk.corpus import stopwords
import nltk
nltk.download('punkt')
# 读取评论
file_path = "comments.txt"
with open(file_path, "r", encoding="utf-8") as f:
text = f.read()
# 分词与过滤
stop_words = set(stopwords.words('english'))
filtered_words = [word.lower() for word in text.split() if word.lower() not in stop_words]
# 计算TF-IDF
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer()
tf_idf_matrix = vectorizer.fit_transform(filtered_words)
3. 情感分类模型实现
使用朴素贝叶斯算法实现情感分类,通过训练模型识别关键词的正负倾向。训练模型后,对新输入进行预测,并可视化情感标签图示。
from sklearn.naive_bayes import MultinomialNB
# 构建分类器
clf = MultinomialNB()
# 训练模型
clf.fit(tf_idf_matrix, labels)
# 预测并可视化
predicted_labels = clf.predict([input_text])
print("预测标签:", predicted_labels)
# 生成情感标签图示
import matplotlib.pyplot as plt
# 可视化情感分类
plt.figure(figsize=(10, 6))
plt.pie([tf_idf_matrix.sum(axis=0).astype(float).values, len(filtered_words)], labels=filtered_words)
plt.title("情感分类图示")
plt.show()
三、代码实现与可视化
4. 示例代码实现
# 示例输入输出
input_text = "我今天感到很无聊"
# 分词与过滤
stop_words = set(stopwords.words('english'))
filtered_words = [word.lower() for word in input_text.split() if word.lower() not in stop_words]
# 计算TF-IDF
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer()
tf_idf_matrix = vectorizer.fit_transform(filtered_words)
# 训练模型
clf = MultinomialNB()
clf.fit(tf_idf_matrix, labels=["负面", "正面"])
# 预测与可视化
predicted_labels = clf.predict([input_text])
print("情感评分:", predicted_labels[0])
# 可视化情感分类
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 6))
plt.pie([clf.predict_proba(tf_idf_matrix)[i][0] for i in range(len(tf_idf_matrix))], labels=filtered_words)
plt.title("情感分类图示")
plt.show()
四、总结与应用价值
本实现通过词袋模型和TF-IDF算法,将自然语言转化为情感价值判断,实现了文本情感分析的目标。该工具可直接用于用户评论分析,帮助理解社会情绪。在本地环境中运行,无需依赖任何框架或服务,具有良好的可扩展性和可运行性。
五、学习价值
本实现涉及自然语言处理的核心算法:TF-IDF计算和朴素贝叶斯分类模型的实现。通过代码可知,情感分析工具在数据预处理、特征提取和模型训练等方面具有重要应用价值。该实现不仅满足技术要求,还展示了自然语言处理在实际应用中的实用性。