资讯详情

资讯详情

ML-For-Beginners NLP 实战:用 TextBlob 对艾米莉·狄金森诗歌做情感分析并与 Azure 文本分析对照(Poetic License 作业全解)

ML-For-Beginners NLP 实战用 TextBlob 对艾米莉·狄金森诗歌做情感分析并与 Azure 文本分析对照Poetic License 作业全解【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners本篇文章围绕 ML-For-Beginners 课程《翻译与情感分析》6-NLP/3-Translation-Sentiment的课后作业「Poetic license诗意的自由」展开你将学习如何用TextBlob对艾米莉·狄金森Emily Dickinson的 500 余首诗歌进行情感极性分析并将TextBlob给出的建议情感与 Azure 文本分析Azure Text Analytics这一更成熟的服务判定进行对照与批判性讨论。读完本文你将掌握基于词袋特征的文本情感打分方法、句级极性的批量统计脚本以及评估 NLP 情感模型时为什么结果会出错的分析框架。作业背景给诗歌做情感体检作业原文德语版见 translations/de/6-NLP/3-Translation-Sentiment/assignment.md英文版见 6-NLP/3-Translation-Sentiment/assignment.md描述了一个非常典型的对比实验场景在一个由 jenlooper 发布、收录了 500 余首艾米莉·狄金森诗歌的数据集中每首诗此前已用 Azure 文本分析完成了情感标注sentiment analysis。请使用本课README中介绍的技术——即TextBlob的情感分析——对这一数据集进行分析并回答TextBlob给出的建议情感是否与更成熟的 Azure 服务判定一致为什么一致或不一致有没有让你感到意外的结果作业名称 Poetic license诗意的自由/诗学特许本身就是提示诗歌是情感表达最浓缩、最不走寻常路的文体恰恰是词面情感与真实情感最容易脱节的场景——这正是检验情感分析算法鲁棒性的绝佳试金石。该作业位于 NLP 课程的第三课6-NLP前序课程已经讲解了如何用TextBlob构建基础 Bot如名词短语抽取本课则把焦点转向两大计算语言学难题机器翻译与情感分析。作业聚焦情感分析部分但翻译部分提出的逐词直译会闹笑话的思想实验与情感分析逐词打分会误判的缺陷在本质上是同一类问题。前置知识TextBlob 的情感打分原理在动手写分析脚本之前需要先吃透课程正文给出的两个关键概念极性polarity与主观性subjectivity。极性Polarity与主观性Subjectivity课程正文6-NLP/3-Translation-Sentiment/README.md明确说明极性取值-1 ~ 1-1为最负面情感1为最正面情感主观性取值0 ~ 10表示完全客观事实陈述1表示完全主观观点/感受。TextBlob内部封装了机器学习/词典式的打分逻辑我们无需自建情感计算器直接调用blob.sentiment即可同时拿到polarity与subjectivity。课程中演示了用《傲慢与偏见》Pride and Prejudice首尾两句做情感分析的代码from textblob import TextBlob quote1 It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife. quote2 Darcy, as well as Elizabeth, really loved them; and they were both ever sensible of the warmest gratitude towards the persons who, by bringing her into Derbyshire, had been the means of uniting them. sentiment1 TextBlob(quote1).sentiment sentiment2 TextBlob(quote2).sentiment print(quote1 has a sentiment of str(sentiment1)) print(quote2 has a sentiment of str(sentiment2))输出为It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife. has a sentiment of Sentiment(polarity0.20952380952380953, subjectivity0.27142857142857146) Darcy, as well as Elizabeth, really loved them; and they were both ever sensible of the warmest gratitude towards the persons who, by bringing her into Derbyshire, had been the means of uniting them. has a sentiment of Sentiment(polarity0.7, subjectivity0.8)可以看到第二句含有loved、warmest gratitude等强正向词极性得分0.7和主观性得分0.8都明显更高而第一句作为客观陈述两个分数都偏低。极性符号正/负与绝对值大小就是我们在诗歌数据集上做批量判定的核心依据。非 ML 方法的致命弱点讽刺与反语课程正文用一个经典例子说明了只认正负词的朴素算法的局限句子Great, that was a wonderful waste of time, Im glad we are lost on this dark road实际上是一句充满讽刺的负面句子但简单算法会把great、wonderful、glad计入正向把waste、lost、dark计入负向最终被相互冲突的词汇左右得出错误结论。这个案例直接预告了诗歌作业中可能出现的现象诗歌中大量使用反讽、反语、隐喻和非常规搭配词面情感与真实情感往往错位。这也是课程在知识检查Knowledge Check中要求你逐一审视《傲慢与偏见》里那些被判为绝对正向却读起来并不正向的句子的原因——例如Happy shall I be, when his stay at Netherfield is over!他的离开让我高兴含有happy却被误判为正向——本质是在表达对某人离去的高兴语境是负向的If I could but see you as happy!一个愿望式感叹Our distress, my dear Lizzy, is very great.含distress但被词法特征拖向错误方向。同理被判为绝对负向的句子则多因出现disgusted、dreadful等词。这套逐句追问它理解语义吗你同意这个分数吗的批判性方法就是诗歌作业的核心分析套路。分析流程从数据到结论的四步实现作业没有要求从零构建情感分类器而是要求使用课程中描述的技术即TextBlob进行批量分析。仓库中的参考答案 6-NLP/3-Translation-Sentiment/solution/notebook.ipynb 给出了一套与课程《傲慢与偏见》挑战check sentiment polarity完全一致的实现骨架直接套用于狄金森诗歌即可。第 1 步准备数据对于《傲慢与偏见》挑战课程给出的步骤是从 Project Gutenberg 下载文本副本删除开头和结尾的元数据只保留正文。诗歌作业同理先获取狄金森诗歌数据集作业所指向的 Kaggle 笔记本中已含 Azure 文本分析标注并按需清洗——去除题录、编号、空行等干扰信息。# You should download the book text, clean it, and import it here with open(pride.txt, encodingutf8) as f: file_contents f.read()注意encodingutf8参数处理非 ASCII 文本包括狄金森诗中的破折号、引号变体时必须显式指定编码否则容易触发解码错误。第 2 步构建 TextBlob 并初始化容器将整份文本一次性喂给TextBlob它会自动完成分句sentence segmentation随后我们遍历其.sentences属性from textblob import TextBlob book_pride TextBlob(file_contents) positive_sentiment_sentences [] negative_sentiment_sentences []第 3 步按极性阈值筛选句子作业与挑战的约定是极性为1或-1的句子视为绝对正向/绝对负向。遍历全部句子把命中极端的句子分别收集起来for sentence in book_pride.sentences: if sentence.sentiment.polarity 1: positive_sentiment_sentences.append(sentence) if sentence.sentiment.polarity -1: negative_sentiment_sentences.append(sentence)针对诗歌场景可以在此基础上升级为区间判断例如polarity 0.5视为正向、 -0.5视为负向以覆盖更多接近绝对的样本从而获得更充足的对比语料。第 4 步输出统计与逐句清单print(The str(len(positive_sentiment_sentences)) most positive sentences:) for sentence in positive_sentiment_sentences: print( str(sentence.replace(\n, ).replace( , ))) print(The str(len(negative_sentiment_sentences)) most negative sentences:) for sentence in negative_sentiment_sentences: print(- str(sentence.replace(\n, ).replace( , )))replace(\n, ).replace( , )是为了把分句时残留的换行与缩进压平让每首诗以单行形式打印便于人工逐条核对。对照 Azure 判定建立差异清单拿到TextBlob的逐句或逐首极性后与数据集里 Azure 文本分析给出的情感标注对齐对每首诗将TextBlob极性符号正/负/中性与 Azure 的情感标签positive/negative/neutral/mixed做成一一对应的对照表统计一致与不一致的比例区间找出系统性偏差例如TextBlob是否在含Heaven、Eternity、Immortality等词的宗教主题诗中系统性偏向正向对不一致样本做细读close reading判断是模型错了、Azure 错了还是情感本身在诗学语境中就是模糊的。需要强调的是诗歌的情感极性往往取决于句法结构与修辞意图而TextBlob的判定主要基于词级特征——这正是课程知识检查反复追问的问题情感基于句子中出现的词但代码真的理解这些词吗狄金森诗作以大量破折号、非常规大小写、抽象意象著称其句子结构与《傲慢与偏见》的散文相差悬殊分词/分句环节的误差会直接传导到情感得分上这是分析时值得特别记录的现象。结果解读四个必须回答的问题作业要求回答是否一致、为什么、有什么意外可以沿以下四个维度组织你的分析结论总体一致性两套体系在多大比例上给出相同方向的情感给出你统计出的数值区间并说明阈值定义。系统性偏差TextBlob更依赖显性情感词happy、sad、dreadful 等而 Azure 文本分析作为企业级服务融合了更复杂的模型与多语言资源课程 Review 部分将其列为更精细的企业级情感分析系统的进阶阅读对象对反讽、否定结构如 no joy通常更敏感。可以从样本中找出能体现这种差异的具体诗句。意外之处例如某首看起来黑暗的诗被双方判为正向或一首直白悲伤的诗被TextBlob判为中性——找出 2~3 个最能说明问题的反例并尝试解释词汇误导、分句错误、比喻修辞等。你的立场课程要求你是否同意这些分数——结合狄金森的写作风格对死亡的冷静凝视、对自然与永恒的赞颂常同时呈现讨论是否存在模型正确而人类直觉偏差的情况以及情感分析在诗歌这种高度主观文体上的本质边界。评分标准什么样的作业算扎实作业原文给出了三档评价标准Rubric这也是你自查作业完成度的清单标准优秀Vorbildlich / Exemplary合格Angemessen / Adequate待改进Verbesserungswürdig / Needs Improvement交付物提交一个 Notebook其中包含对某位作者狄金森样例输出的扎实分析Notebook 不完整或未进行分析未提交 Notebook所谓扎实的分析结合课程正文的判断标准至少要包含可复现的清洗与计算代码、批量统计结果、TextBlob与 Azure 判定的逐条对照、对不一致样本的细读解释以及回答为什么/是否意外的书面讨论——即代码 数据 批判性解读三者缺一不可。延伸练习与自测将课程中的《傲慢与偏见》挑战6-NLP/3-Translation-Sentiment/README.md 的 Challenge - check sentiment polarity 一节完整跑通再迁移到狄金森诗歌上比较两种文体下绝对极性句的数量与质量差异。尝试课程 Review 部分提出的问题企业场景如客服邮件分类、舆情监控如何利用情感分析结合课程正文中议员办公室按支持/反对分拣邮件的例子思考情感特征而非语义理解驱动的模型在真实业务中的价值与风险。用TextBlob对同一首诗的不同译作做情感对比把本课翻译部分blob.translate底层调用谷歌翻译、需联网与情感部分串成一条完整流水线观察翻译前后情感极性是否漂移——这既是本课知识的综合应用也是诗歌作业最有意思的延伸方向。最后提醒本作业的核心不是跑出一个更高的准确率而是训练一种对 NLP 输出保持怀疑与追问的能力——这一点在情感分析这类看似简单、实则处处是坑的任务上比任何模型调优都更重要。【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →