
ML-For-Beginners NLP 课程用 TextBlob 实现机器翻译与情感分析【免费下载链接】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 课主题是自然语言处理NLP中最具代表性的两个挑战——机器翻译Machine Translation与情感分析Sentiment Analysis。课程以 Jane Austen 1813 年经典小说《傲慢与偏见》Pride and Prejudice为贯穿素材先用TextBlob库把小说的英文名句翻译成法语再对全书逐句计算情感极性polarity与主观性subjectivity得分。学完本文你将掌握基于规则翻译与基于机器学习翻译的本质区别、TextBlob的translate()与sentiment用法、情感分析中词袋式规则方法的致命缺陷以及如何用 20 行左右 Python 完成一本全书的句子级情感统计。1. 翻译为什么难从形式语法规则方法说起人类语言有数千种各自的语法规则差异极大因此翻译是一个公认的难题。课程先介绍一种经典的非机器学习思路——把形式语法规则转成语言无关的结构再翻译回目标语言。这个思路包含两步识别Identification把输入语言中的单词标注为名词、动词等词性。生成翻译Create translation按目标语言的格式对每个词产出一一对应的直接翻译。1.1 实例英语到爱尔兰语以英语句子I feel happy为例它的词序是标准的主语I→ 动词feel→ 形容词happy。但在爱尔兰语中情感如 happy / sad被表达为落在你身上的状态同样的意思要说成Tá athas orm其字面直译是Happy is upon me快乐在我身上。爱尔兰语的正式语序是动词VerbTá或 is形容词Adjectiveathashappy主语Subjectormupon me一位爱尔兰语母语者翻译成英语时会说I feel happy而不是Happy is upon me——因为他理解句子的含义即便单词与句式完全不同。这正说明逐词直译naive translation会严重失真。课程给出了一个生动的反例I feel happy若被朴素程序逐词翻译成爱尔兰语会得到Mise bhraitheann athas字面意为me feel happy这根本不是合法的爱尔兰语句子——尽管英语和爱尔兰语只隔着一道海峡它们却是语法结构截然不同的两种语言。✅ 想一想你学第二语言时是否经历过先用母语思考、逐词在脑中翻译、再说出口的阶段朴素翻译程序做的就是这件事而流利的关键正是跨过这个阶段。2. 机器学习的翻译思路忽略词义只找模式与规则方法相对机器学习方法刻意忽略单词的含义转而去识别文本中的统计模式。这需要大量的双语对照文本作为训练语料一个语料称corpus多个称corpora。课程用《傲慢与偏见》举例若同时拿到英文原著与法语译本就能发现许多短语是习语化idiomatically地翻译过去的而这种对照关系正是模型可以学习的模式。课程还提示了一个经典陷阱——假同源词false cognate英语短语I have no money若逐词直译成法语可能得到Je nai pas de monnaie但monnaie实际含义是零钱loose changemoney与monnaie并不同义。更准确的翻译是Je nai pas dargent。图片说明本课用这张图直观展示直译陷阱——表面相似的单词在不同语言中含义并不等价。图源课程作者 Jen Looper当模型拥有足够多由精通双语的专家人工翻译过的语料时它就能通过识别这些翻译中反复出现的模式显著提升翻译的准确度——这正是机器翻译与传统规则系统最本质的分野。3. 动手练习用 TextBlob 翻译《傲慢与偏见》开篇课程要求使用TextBlob库完成翻译。TextBlob是 Python 生态中一个极简的文本处理库内部封装了多项 NLP 能力。环境准备来自本系列第 1 课 1-Introduction-to-NLP 的前置说明pip install -U textblob python -m textblob.download_corporatranslate()方法通过to参数指定目标语言代码如fr表示法语。尝试《傲慢与偏见》著名的开篇句from textblob import TextBlob blob TextBlob( It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife! ) print(blob.translate(tofr))运行结果Cest une vérité universellement reconnue, quun homme célibataire en possession dune bonne fortune doit avoir besoin dune femme!课程指出这个结果甚至比 1932 年 V. Leconte 与 Ch. Pressoir 的法语译本更精确。人类译本为了清楚而擅自添枝加叶把原句扩写为Cest une vérité universelle quun célibataire pourvu dune belle fortune doit avoir envie de se marier, et, si peu que lon sache de son sentiment à cet egard, lorsquil arrive dans une nouvelle résidence, cette idée est si bien fixée dans lesprit de ses voisins quils le considèrent sur-le-champ comme la propriété légitime de lune ou lautre de leurs filles.在这个案例里由 ML 驱动的翻译反而比过度发挥的人类译者更忠实于原文。3.1 原理TextBlob 背后是什么TextBlob本身并不内置翻译引擎——blob.translate在后台调用的是Google Translate一个能够解析数百万条短语并预测最佳输出的成熟 AI 服务。这意味着两件事整个过程没有任何人工干预使用translate()必须联网。✅ 试一试更多句子ML 翻译与人工翻译到底谁更好分别在哪些场景下成立4. 情感分析规则方法的局限情感分析是 ML 的另一片主场。非 ML 的词袋式方法是预先标注一批正面词和负面词然后统计一段新文本中正、负、中性词的加权总值以此判定整体情感。这种简单方法极易被欺骗。课程举了一个经典的反讽句Great, that was a wonderful waste of time, Im glad we are lost on this dark road这句话实际表达的是负面的、讽刺的情绪但简单算法会看到great、wonderful、glad三个正面词以及waste、lost、dark三个负面词整体判断被这些相互矛盾的词左右从而得出错误结论。✅ 停下来想一想作为人类我们靠什么传递讽刺语调tone inflection起了很大作用。试着用不同语气说出 Well, that film was awesome体会声音如何改变含义。4.1 ML 方法让模式自己浮现ML 的情感分析思路是先人工收集大量带标签的文本——推文、影评或任何用户既给了分数、又写了文字意见的数据——再用 NLP 技术挖掘文字意见与评分之间的关联模式。例如正面影评比负面影评更常出现 Oscar worthy正面餐厅评论说 gourmet 的频率远高于 disgusting。课程用一个政务场景帮助理解这也是本课程一贯的公平与实用视角假设你在某位政客的办公室工作需要把市民来信分成支持新法案与反对新法案两堆。邮件太多读不过来时可以训练一个模型用一部分支持邮件和一部分反对邮件做训练集模型会学会把某些词与模式分别关联到两边——但它完全不理解内容只知道某些词更可能出现在哪类邮件里。再用未参与训练的部分邮件检验其判断是否与人类一致满意之后就能自动处理后续来信。✅ 这个训练—验证—部署的过程是否和你前面课程中用过的方法很像例如 2-Regression、4-Classification 系列中的监督学习流程。5. 动手练习情感极性与主观性课程给出了情感的两个量化维度极性Polarity取值 -1 到 1-1 表示最负面1 表示最正面主观性Subjectivity取值 0 到 10 表示纯客观1 表示纯主观。下面的程序分析《傲慢与偏见》首句与末句的情感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)可见开篇句极性约为 0.21略微偏正面、偏客观收尾句极性 0.7、主观性 0.8明显正面且主观——与小说有情人终成眷属的结局基调一致。6. 挑战统计全书的绝对正负句课程的核心挑战任务是用情感极性判断《傲慢与偏见》中绝对正面的句子是否多于绝对负面的句子。约定极性为 1 视为绝对正面-1 视为绝对负面。官方给出的步骤文本来自 Project Gutenberg需下载 .txt 并剔除首尾的元数据只保留正文下载《傲慢与偏见》纯文本删除文件开头与结尾的元数据在 Python 中打开文件把内容读成字符串用全书文本创建TextBlob对象循环分析书中的每个句子若极性为 1 或 -1分别把该句存入正面句子或负面句子列表最后分别打印两类句子及各自的数量。6.1 参考实现解读课程提供了完整的参考实现见 solution/notebook.ipynb。核心逻辑可拆解为四段① 读取文本对应 notebook 中with open(pride.txt, ...)单元格with open(pride.txt, encodingutf8) as f: file_contents f.read()② 构建 TextBlob 并初始化容器book_pride TextBlob(file_contents) positive_sentiment_sentences [] negative_sentiment_sentences []③ 逐句扫描按极性归类notebook.ipynb 中的循环单元格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)TextBlob.sentences提供句子切分sentence.sentiment.polarity给出单句极性——整个统计完全复用TextBlob的能力无需自写情感计算器。④ 打印结果含简单清洗把换行与缩进替换为空格以便阅读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( , )))6.2 知识检查模型的判断值得信任吗TextBlob的极性基于句子中出现的单词但代码本身并不理解这些词。课程要求读者批判性地审查结果被判定为绝对正面的句子你同意吗例如What an excellent father you have, girls!How wonderfully these sort of things occur!I have the greatest dislike in the world to that sort of thing.注意这句其实含dislike却被判为绝对正面值得你亲自运行验证I am so happy!下面 3 句被判为绝对正面但细读并非正面句为什么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被判定为绝对负面的句子你同意吗例如Everybody is disgusted with his pride.The pause was to Elizabeths feelings dreadful.It would be dreadful!任何一个简·奥斯汀读者都会明白她常借作品讽刺英国摄政时代社会的荒诞面。主角 Elizabeth Bennett 是敏锐的社会观察者正如作者本人语言高度微妙连 Mr. Darcy 都注意到她爱发表并非自己真实想法的意见来取乐I have had the pleasure of your acquaintance long enough to know that you find great enjoyment in occasionally professing opinions which in fact are not your own.这正是情感分析尤其是词袋式规则方法在文学文本上的软肋讽刺、反语与语境信息被完全忽略。7. 扩展挑战与作业 扩展挑战回到第 1 课的机器人 Marvin基础实现见 6-NLP/1-Introduction-to-NLP能否从用户输入中提取更多特征例如用本课的情感极性让它变得更聪明 课后作业Poetic license详见 assignment.md使用一份包含 500 首 Emily Dickinson 诗歌、且已用企业级情感分析服务标注过的数据集用本课学到的TextBlob技术重新分析。思考你得到的情感结论与服务商的结论一致吗为什么有什么让你意外的地方评分标准关注的是是否提交了一份对作者样本输出做了扎实分析的 notebook。8. 回顾与自学建议从文本中提取情感的方法远不止TextBlob一种。可以思考哪些商业应用会受益于情感分析舆情监测、客服工单分类、产品评论聚合……这项技术在哪里会失灵本课的反讽示例就是答案之一企业级系统如何做情感分析Azure 提供了生产级文本分析服务其内部实现远比单词统计复杂你可以拿上面《傲慢与偏见》的句子去测试看它能否捕捉到人类译者与文学评论者能看出的细微差别。小结本课通过翻译与情感分析两个任务完整呈现了 NLP 中规则方法 vs 统计/ML 方法的对照维度规则方法机器学习方法翻译词性标注 逐词直译易产生Mise bhraitheann athas这类错译从双语语料中学习模式如 TextBlob 背后的 Google Translate情感分析正负词计数易被反讽欺骗从带标签文本中学习词与情感的统计关联配套的完整课程上下文可参考 6-NLP 章节总览继续深入可接着学习 4-Hotel-Reviews-1数据准备 与 5-Hotel-Reviews-2用 NLTK 做情感分析——后者会把本课的玩具级情感分析升级为真实语料上的完整工程实践。【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考