基于本地文件的AI文本情感分析小工具开发实战(Python)


正文部分:

背景介绍
随着人工智能技术的普及,文本情感分析成为许多应用场景中的重要工具,如用户评论分析、舆情监控、市场调研等。本文将介绍如何使用 Python 开发一个基于本地文件的“AI 文本情感分析小工具”。该工具支持用户上传文本文件,逐条分析每条评论的情感倾向(正面、中性、负面),并在控制台输出结果、生成情感分布柱状图,并将分析结果保存为 CSV 文件。

思路分析
1. 输入处理:读取用户上传的文本文件,逐行读取评论内容。
2. 情感分析:使用基于规则的方法(如情感词典)或轻量级预训练模型(如 TextBlob)进行情感判断。
3. 结果输出:将每条评论的情感结果打印到控制台,并统计情感分布比例。
4. 可视化:使用 matplotlib 生成情感分布柱状图。
5. 结果保存:将原始评论与对应情感标签保存为 CSV 文件,便于后续分析。

代码实现

我们将使用 Python 的标准库和第三方库(如 matplotlibtextblob)实现该工具。以下是完整代码示例:

# -*- 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:负面
– 其他:中性

  1. 读取评论 read_reviews
    从本地文件读取评论内容,返回评论列表。

  2. 分析并统计 analyze_and_count
    对每条评论进行情感分析,并统计各类情感的数量。

  3. 生成柱状图 plot_sentiment_distribution
    使用 matplotlib 生成情感分布的柱状图。

  4. 保存为 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 文本情感分析领域。


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注