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

liftword4个月前 (02-19)技术文章30

亲爱的小伙伴们~今天学姐要带大家玩一个超有趣的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处理文本数据分类

作者 | zhouyue65来源 | 君泉计量文本挖掘:从大量文本数据中抽取出有价值的知识,并且利用这些知识重新组织信息的过程。一、语料库(Corpus)语料库是我们要分析的所有文档的集合。二、中文分...

Python文本统计与分析从基础到进阶

本文分享自华为云社区《Python文本统计与分析从基础到进阶-云社区-华为云》,作者:柠檬味拥抱。在当今数字化时代,文本数据无处不在,它们包含了丰富的信息,从社交媒体上的帖子到新闻文章再到学术论文。对...

听懂用户们在说什么——UGC文本分析怎么做?

编辑导语:文本分析对于用户研究来说十分重要,本文作者分享了UGC文本分析的具体方法逻辑,从获取评论数据、预处理评论数据、分析评论数据、主题分析展开阐述,感兴趣的一起来学习一下吧,希望对你有帮助。如果你...

Python脚本之文本处理和操作_python文本处理教程

Python脚本之文本处理和操作计算文本文件中的字数#计算文本文件的数字 def count_words(file_path): with open(file_path, 'r', encod...

研究方法专题 | 文本分析法_文本分析的研究方法

文本分析法文本分析法(Textual Analysis)指的是从文本的表层深入到文本的深层,从而发现那些不能为普通阅读所把握的深层意义。文本分析是自然语言处理(Natural Language Pro...