正文部分:
背景介绍
随着人工智能技术的普及,文本情感分析成为许多应用场景中的重要工具,如用户评论分析、舆情监控、市场调研等。本文将介绍如何使用 Python 开发一个基于本地文件的“AI 文本情感分析小工具”。该工具支持用户上传文本文件,逐条分析每条评论的情感倾向(正面、中性、负面),并在控制台输出结果、生成情感分布柱状图,并将分析结果保存为 CSV 文件。
思路分析
1. 输入处理:读取用户上传的文本文件,逐行读取评论内容。
2. 情感分析:使用基于规则的方法(如情感词典)或轻量级预训练模型(如 TextBlob)进行情感判断。
3. 结果输出:将每条评论的情感结果打印到控制台,并统计情感分布比例。
4. 可视化:使用 matplotlib 生成情感分布柱状图。
5. 结果保存:将原始评论与对应情感标签保存为 CSV 文件,便于后续分析。
代码实现
我们将使用 Python 的标准库和第三方库(如 matplotlib 和 textblob)实现该工具。以下是完整代码示例:
# -*- coding: utf-8 -*-
import os
import csv
from textblob import TextBlob
import matplotlib.pyplot as plt
# 情感分析函数
def analyze_sentiment(text):
# 使用 TextBlob 进行情感分析,polarity 范围为 [-1, 1]
analysis = TextBlob(text)
polarity = analysis.sentiment.polarity
if polarity > 0.05:
return "正面"
elif polarity < -0.05:
return "负面"
else:
return "中性"
# 读取文本文件
def read_reviews(file_path):
if not os.path.exists(file_path):
raise FileNotFoundError(f"文件 {file_path} 不存在。")
with open(file_path, 'r', encoding='utf-8') as file:
reviews = [line.strip() for line in file if line.strip()]
return reviews
# 分析并统计情感
def analyze_and_count(reviews):
results = []
sentiment_count = {"正面": 0, "中性": 0, "负面": 0}
for review in reviews:
sentiment = analyze_sentiment(review)
results.append((review, sentiment))
sentiment_count[sentiment] += 1
return results, sentiment_count
# 生成柱状图
def plot_sentiment_distribution(sentiment_count):
labels = sentiment_count.keys()
counts = sentiment_count.values()
plt.figure(figsize=(8, 5))
plt.bar(labels, counts, color=['green', 'gray', 'red'])
plt.title("情感分布比例")
plt.xlabel("情感类别")
plt.ylabel("数量")
plt.show()
# 保存结果为 CSV 文件
def save_to_csv(results, output_file):
with open(output_file, 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['原始评论', '情感标签'])
writer.writerows(results)
# 主程序
def main():
input_file = "reviews.txt"
output_file = "sentiment_results.csv"
try:
reviews = read_reviews(input_file)
results, sentiment_count = analyze_and_count(reviews)
print("情感分析结果:")
for text, sentiment in results:
print(f"文本: {text}\n情感: {sentiment}\n")
plot_sentiment_distribution(sentiment_count)
save_to_csv(results, output_file)
print(f"分析结果已保存至 {output_file}")
except Exception as e:
print(f"发生错误:{e}")
if __name__ == "__main__":
main()
代码说明
1. 情感分析函数 analyze_sentiment
使用 TextBlob 库对文本进行情感分析,根据 polarity 值判断情感倾向。
– polarity > 0.05:正面
– polarity < -0.05:负面
– 其他:中性
- 读取评论
read_reviews
从本地文件读取评论内容,返回评论列表。 -
分析并统计
analyze_and_count
对每条评论进行情感分析,并统计各类情感的数量。 -
生成柱状图
plot_sentiment_distribution
使用 matplotlib 生成情感分布的柱状图。 -
保存为 CSV
save_to_csv
将分析结果保存为 CSV 文件,便于后续使用 Excel 或其他工具进一步分析。
运行环境要求
1. 安装 Python(建议 3.6+)
2. 安装依赖库:
bash
pip install textblob matplotlib
3. 准备一个名为 reviews.txt 的文本文件,内容为多行评论。
总结
本文介绍了如何使用 Python 开发一个简单的“AI 文本情感分析小工具”,通过 TextBlob 实现情感判断,并结合 matplotlib 生成可视化图表,最终将结果保存为 CSV 文件。该工具适用于本地文本情感分析任务,具备良好的可扩展性,例如可以集成更复杂的深度学习模型(如 BERT)以提高分析精度。希望本项目能够帮助开发者快速入门 AI 文本情感分析领域。