翻译与情感分析中的机器学习 在之前的课程中,你已经学习了如何使用 (一个嵌入了机器学习的库)来执行基本的自然语言处理任务,比如名词短语提取。计算语言学中的另一个重要挑战是准确地将一句话从一种口语或书面语言翻译成另一种语言。 课前测验 翻译是一个非常困难的问题,尤其是考虑到世界上有成千上万种语言,每种语言都有非常不同的语法规则。一种方法是将一种语言(例如英语)的形式化语法规则转换为非语言依赖的结构,然后通过将其转换回另一种语言来进行翻译。这种方法意味着你需要采取以下步骤: 识别。对输入语言中的单词进行识别或标记,如名词、动词等。 创建翻译。将每个单词直接翻译成目标语言格式。
在之前的课程中,你已经学习了如何使用 TextBlob(一个嵌入了机器学习的库)来执行基本的自然语言处理任务,比如名词短语提取。计算语言学中的另一个重要挑战是准确地将一句话从一种口语或书面语言翻译成另一种语言。
翻译是一个非常困难的问题,尤其是考虑到世界上有成千上万种语言,每种语言都有非常不同的语法规则。一种方法是将一种语言(例如英语)的形式化语法规则转换为非语言依赖的结构,然后通过将其转换回另一种语言来进行翻译。这种方法意味着你需要采取以下步骤:
在“英语”中,句子“我感到快乐”由三个单词按顺序排列:
然而,在“爱尔兰语”中,相同的句子具有完全不同的语法结构——像“快乐”或“悲伤”这样的情绪是被表达为“在你身上”的。
英文短语“我感到快乐”在爱尔兰语中会是“Tá athas orm”。字面翻译将是“快乐在我身上”。
一位说爱尔兰语的人翻译成英语时会说“我感到快乐”,而不是“快乐在我身上”,因为他们理解这句话的意思,即使单词和句子结构不同。
爱尔兰语中该句子的正式顺序是:
一个简单的翻译程序可能会只翻译单词,而忽略句子结构。
✅ 如果你在成年后学会了第二(或第三或更多)种语言,你可能开始时会用母语思考,将概念逐字逐句地翻译成第二种语言,然后再说出来。这类似于简单的计算机程序所做的。要达到流利的程度,你需要超越这个阶段!
简单的翻译会导致糟糕(有时甚至很搞笑)的错误翻译:“我感到快乐”在爱尔兰语中字面翻译为“Tá athas orm”。这意味着(字面上)“快乐在我身上”,这不是一句有效的爱尔兰语句子。尽管英语和爱尔兰语都是两个邻近岛屿上的语言,但它们是非常不同的语言,具有不同的语法结构。
你可以观看一些关于爱尔兰语言传统的视频,比如
到目前为止,你已经了解了形式化规则方法的自然语言处理。另一种方法是忽略单词的意义,而是使用机器学习来检测模式。如果在源语言和目标语言中都有大量的文本(一个“语料库”或多个“语料库”),这种方法在翻译中可以起作用。
例如,考虑《傲慢与偏见》这部著名的英语小说,它是由简·奥斯汀于1813年撰写的。如果你查阅英语版的书和人类翻译的法语版,你可以在其中检测到一种语言中的一句话是如何“惯用”地翻译成另一种语言的。稍后你就会这样做。
例如,当英文短语“Money is an excellent thing”直译成法语时,可能会变成“Monnaie est une chose excellente”。但是,“monnaie”是一个棘手的法语“假同音词”,因为“钱”和“monnaie”并不相同义。一个人类可能会做出更好的翻译,即“Je n'ai pas d'argent”,因为它更好地传达了你没有钱的意思(而不是“零钱”的意思)。

图片来自 Jen Looper
如果一个机器学习模型有足够的高质量的人工翻译来构建模型,它可以提高翻译的准确性,通过识别以前由两种语言的专家翻译过的文本中的常见模式。
你可以使用 TextBlob 来翻译句子。尝试一下《傲慢与偏见》中著名的第一句话:
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(to="fr"))
TextBlob 的翻译效果还不错:“C'est une vérité universellement reconnue, qu'un homme célibataire en possession d'une bonne fortune doit avoir besoin d'une femme!”
可以说,TextBlob 的翻译比 1932 年由 V. Leconte 和 Ch. Pressoir 翻译的法语版更精确:
"C'est une vérité universelle qu'un célibataire pourvu d'une belle fortune doit avoir envie de se marier, et, si peu que l'on sache de son sentiment à cet egard, lorsqu'il arrive dans une nouvelle résidence, cette idée est si bien fixée dans l'esprit de ses voisins qu'ils le considèrent sur-le-champ comme la propriété légitime de l'une ou l'autre de leurs filles."
在这种情况下,基于机器学习的翻译比人类翻译做得更好,后者在没有必要的情况下添加了一些原文作者未提到的内容以求“清晰”。
发生了什么?为什么 TextBlob 在翻译方面如此出色?实际上,TextBlob 背后使用了谷歌翻译,这是一种能够解析数百万短语以预测最佳字符串的高级人工智能。这里没有任何人工操作,使用
blob.translate.
✅ Try some more sentences. Which is better, ML or human translation? In which cases?
Another area where machine learning can work very well is sentiment analysis. A non-ML approach to sentiment is to identify words and phrases which are 'positive' and 'negative'. Then, given a new piece of text, calculate the total value of the positive, negative and neutral words to identify the overall sentiment.
This approach is easily tricked as you may have seen in the Marvin task - the sentence ` 很好,这真是浪费时间,我很高兴我们在黑暗的路上迷路了。”这是一个讽刺的负面情绪句子,但简单的算法检测到了“great”、“wonderful”、“glad”为正面,而“waste”、“lost”和“dark”为负面。整体情绪被这些矛盾的词汇所影响。
✅ 停下来想一想,我们作为人类是如何传达讽刺的。语调在其中起着重要作用。试着用不同的方式说出短语“嗯,那部电影真是太棒了”,你会发现你的声音是如何传达意义的。
机器学习的方法是手动收集负向和正向的文本体——推特、电影评论或其他任何地方,其中人类给出了评分 和 书面意见。然后可以应用 NLP 技术来分析这些意见和评分,从而找出模式(例如,正向电影评论更常出现“奥斯卡级”这个词,而负向电影评论较少出现;正向餐厅评论会更多地说“美食”,而负向评论会更多地说“恶心”)。
⚖️ 示例:如果你在政客的办公室工作,并且有一项新法律正在辩论,选民可能会写信给办公室,支持或反对这项新法律。假设你被要求阅读这些邮件并将它们分成两堆,支持和反对。如果有大量的邮件,你可能会因试图阅读所有邮件而感到不堪重负。如果有一个机器人可以为你阅读所有邮件,理解它们并告诉你每封邮件属于哪一堆,那不是很好吗?
一种实现方法是使用机器学习。你可以用一部分“反对”邮件和一部分“支持”邮件来训练模型。模型倾向于将某些短语和单词与反对或支持的一方联系起来,但它不会理解任何内容,只会发现某些单词和模式更有可能出现在“反对”或“支持”的邮件中。你可以用一些没有用于训练模型的邮件来测试它,看看它是否得出了与你相同的结论。一旦你对模型的准确性满意,你就可以处理未来的邮件而无需阅读每一封。
✅ 这个过程听起来像是你之前课程中使用的过程吗?
情感通过 -1 到 1 的极性来衡量,-1 是最负面的情感,1 是最正面的情感。情感还通过 0 到 1 的分数来衡量客观性(0)和主观性(1)。
再看一下简·奥斯汀的《傲慢与偏见》。文本在这里可以在 Project Gutenberg 上找到。下面的代码展示了分析书中第一句和最后一句的情感极性和主观性/客观性得分的简单程序。
你应该使用上述描述的 TextBlob 库(不必编写自己的情感计算器)来确定 sentiment。
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(polarity=0.20952380952380953, subjectivity=0.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(polarity=0.7, subjectivity=0.8)
你的任务是使用情感极性来确定《傲慢与偏见》中有更多的绝对正面的句子还是绝对负面的句子。在这个任务中,你可以假设极性分数为 1 或 -1 分别表示绝对正面或绝对负面。
步骤:
这里有一个示例 解决方案。
✅ 知识检查
✅ 任何《傲慢与偏见》的爱好者都会明白,她经常用她的书来批判英国摄政时期的某些荒谬之处。《傲慢与偏见》的主要角色伊丽莎白·班纳特是一位敏锐的社会观察者(就像作者一样),她的语言常常充满了细微的含义。即使是故事中的男主角达西先生也注意到了伊丽莎白戏谑的语言风格:“我有幸与你相识这么久,知道你偶尔会表达并非出自真心的意见。”
你能使马文变得更优秀吗?通过从用户输入中提取其他特征。
有许多方法可以从文本中提取情感。想想哪些商业应用场景可能会用到这种技术。想想它可能会出错的地方。阅读更多关于分析情感的企业级系统,比如 Azure 文本分析。测试一下《傲慢与偏见》中的句子,看看它能否检测到细微之处。
声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。