NLTK文本分析好好玩!学姐教你挖掘小说情感走向

liftword3个月前 (02-19)技术文章22

亲爱的小伙伴们~今天学姐要带大家玩一个超有趣的Python项目!我们要用NLTK这个神奇的工具来分析小说中的情感变化呢。通过这个项目,你不仅能学会文本分析的基础知识,还能发现小说里潜藏的情感起伏,是不是很酷呀?让我们一起开始这段充满惊喜的学习之旅吧!

准备工作:安装所需的工具包

首先我们需要安装NLTK这个强大的自然语言处理工具包。在命令行中输入以下命令:


pip install nltk

pip install vader_lexicon

第一步:导入需要的模块和下载语料库


import nltk

from nltk.sentiment import SentimentIntensityAnalyzer

import matplotlib.pyplot as plt



# 下载必要的数据

nltk.download('vader_lexicon')

小贴士:第一次使用NLTK的时候可能需要下载一些数据包哦,不要着急,下载完就能用啦~

第二步:准备我们的小说文本

我们来创建一个简单的函数,用于将小说文本分割成段落:


def process_text(filename):

    with open(filename, 'r', encoding='utf-8') as file:

        text = file.read()

    # 按照段落分割文本

    paragraphs = text.split('\n\n')

    # 去掉空段落

    return [p.strip() for p in paragraphs if p.strip()]

第三步:情感分析的核心部分

现在来写一个超级可爱的情感分析函数,它能帮我们看出每个段落的情感倾向呢!


def analyze_sentiment(paragraphs):

    sia = SentimentIntensityAnalyzer()

    sentiments = []

    

    for paragraph in paragraphs:

        # 获取情感得分

        sentiment_scores = sia.polarity_scores(paragraph)

        # 我们主要关注compound分数

        sentiments.append(sentiment_scores['compound'])

    

    return sentiments

小贴士:compound分数是一个在-1到1之间的值,-1表示非常消极,1表示非常积极,0表示中性哦!

第四步:绘制情感变化图

让我们用漂亮的图表来展示小说的情感变化吧:


def plot_sentiment(sentiments):

    plt.figure(figsize=(12, 6))

    plt.plot(sentiments, color='pink', linewidth=2)

    plt.title('小说情感变化曲线', fontsize=14)

    plt.xlabel('段落序号', fontsize=12)

    plt.ylabel('情感得分', fontsize=12)

    plt.grid(True, linestyle='--', alpha=0.7)

    plt.axhline(y=0, color='gray', linestyle='-', alpha=0.3)

    plt.show()

完整的示例代码


# 让我们把所有代码组合在一起试试看!

def analyze_novel_sentiment(filename):

    # 处理文本

    paragraphs = process_text(filename)

    

    # 分析情感

    sentiments = analyze_sentiment(paragraphs)

    

    # 绘制图表

    plot_sentiment(sentiments)

    

    # 输出一些统计信息

    print(f"平均情感得分: {sum(sentiments)/len(sentiments):.3f}")

    print(f"最高情感得分: {max(sentiments):.3f}")

    print(f"最低情感得分: {min(sentiments):.3f}")



# 使用示例

analyze_novel_sentiment('my_novel.txt')

实战小练习

亲爱的小伙伴们,学姐给大家准备了一些有趣的练习:

  1. 试着分析不同类型的小说(比如爱情小说和悬疑小说),看看情感曲线有什么不同?
  2. 能不能把正面情感和负面情感分开展示在图表中呢?
  3. 尝试计算小说中情感变化最剧烈的段落,找出故事的高潮部分!

注意事项:

  • 记得处理文本编码问题,建议使用UTF-8编码哦~
  • 英文小说效果会更好,因为VADER主要是针对英文优化的呢~
  • 处理大型文本时要注意运行效率,可以考虑分批处理呢!

小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问我哦。祝大家学习愉快,Python学习节节高!记得用这个小工具分析你最喜欢的小说,说不定会发现很多有趣的事情呢!下次见啦~

Would you like me to explain or break down any part of the code?

相关文章

文本大数据时代,每个开发人员都需要了解如何分析文本

现在,使用Python和开源工具可以非常方便地进行文本分析,因此在这个文本大数据时代,每个开发人员都需要了解如何分析文本。推荐相关图书:《自然语言处理与计算语言》本书介绍了如何应用自然语言处理和计算语...

python文本分析与挖掘(一)-构建语料库

实现功能:python文本分析与挖掘(一)-构建语料库实现代码:1import os2from warnings import simplefilter3simplefilter(action='ig...

使用Python和OCR进行文档解析的完整代码演示

在本文中将使用Python演示如何解析文档(如pdf)并提取文本,图形,表格等信息。文档解析涉及检查文档中的数据并提取有用的信息。它可以通过自动化减少了大量的手工工作。一种流行的解析策略是将文档转换为...

一文看懂怎么用 Python 做数据分析

01 生成数据表第一部分是生成数据表,常见的生成方法有两种,第一种是导入外部数据,第二种是直接写入数据。 Excel 中的文件菜单中提供了获取外部数据的功能,支持数据库和文本文件和页面的多种数据源导入...

Python文本处理的利器:Textblob库详解

Python,作为一门多用途的编程语言,在数据分析、自然语言处理(NLP)和机器学习等领域的重要性日益凸显。在这些领域中,文本处理是一个不可或缺的环节。本文旨在深入探讨Textblob库——一个Pyt...