Transformers 自然语言处理(四)(4)

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
简介: Transformers 自然语言处理(四)

Transformers 自然语言处理(四)(3)https://developer.aliyun.com/article/1514230

用 SRL 进行调查

第十章以我建议使用 SRL 与其他工具结束,我们现在正在这样做。

我首先在demo.allennlp.org/上使用语义角色标注接口运行了 She was satisfied

结果是正确的:


图 12.11:简单句子的 SRL

这个谓词框架中的分析很清晰:was 是动词,SheARG1,而 satisfiedARG2

我们应该在一个复杂的句子中找到相同的分析结果,而我们做到了:


图 12.12:动词“satisfied”与其他单词合并,导致混淆

Satisfied 仍然是 ARG2,所以问题可能不在这里。

现在,焦点在ARGM-ADV上,它也修改了 was。这个字 false 是相当具有误导性的,因为ARGM-ADV是与包含 thinkingARG2相关的。

thinking 谓词给出了一个 false impression,但在这个复杂的句子中却没有被识别为谓词。难道 she was 是一个未知的省略,正如第十章中的SRL 范围的质疑部分所示?

通过输入完整句子而不使用省略号,我们可以快速验证:

Though the customer seemed unhappy, she was, in fact, satisfied but she was thinking of something else at the time, which gave a false impression.

SRL 的问题再次出现,正如我们在第十章中所看到的那样。我们现在有五个正确的谓词和五个准确的框架。

Frame 1 显示 unhappyseemed 正确相关:


图 12.13:“Unhappy” 与 “seemed” 正确相关

Frame 2 显示 satisfied 现在从句子中分离出来,并在一个复杂句子中单独识别为 was 的参数:


图 12.14:“satisfied” 现在是 ARG2 中的一个独立单词

现在,让我们直接到包含thinking的谓语,这是我们希望 BERT SRL 能够正确分析的动词。现在我们压制了省略号并重复了“she was”在句子中,输出是正确的:


图 12.15:没有省略号的准确输出

现在,我们可以用两个线索结束我们的 SRL 调查:

  • 单词false对算法来说是一个让其难以理解复杂句子中其他单词的令人困惑的论点
  • she was的重复省略号

在我们转向 GPT-3 之前,让我们回到 Hugging Face,带着我们的线索。

用 Hugging Face 进行调查

现在让我们回到本章 DistilBERT 用于 SST 部分使用的 DistilBERT 基础 uncased fine-tuned SST-2 模型。

我们将调查我们的两个线索:

  • she was的省略号
    我们将首先提交一个没有省略号的完整句子:
    “尽管顾客似乎不快乐,但事实上,她是满意的,只是当时在想其他事情,给人以错误的印象”
    输出仍然是消极的:

    图 12.16:一个假阴性
  • 在一个原本积极的句子中出现了false
    现在我们将false从句子中移除,但留下省略号:
    “尽管顾客似乎不满意,但事实上,她很满意,只是当时在想其他事情,留下了这样的印象”
    中了!输出为积极:

    图 12.17:一个真阳性

我们知道单词false对 SRL 造成混淆,如果有was thinking的省略号。我们也知道false对我们使用的情感分析 Hugging Face transformer 模型造成困惑。

GPT-3 能做得更好吗?让我们看看。

用 GPT-3 游��场进行调查

让我们使用 OpenAI 的高级推文分类器的例子,并通过三个步骤修改它来满足我们的调查需求:

  • 步骤 1:向 GPT-3 展示我们期望的内容:
    句子:“顾客很满意”
    情感积极
    句子:“顾客并不满意”
    情感消极
    句子:“服务很
    情感积极
    句子:“这是评论的链接
    情感中性
  • 步骤 2:展示少量输出格式示例:
    1\. "我喜欢新的蝙蝠侠电影!"
    2\. "我讨厌我的手机电量耗尽时的情况"
    3\. "我的一天过得如此 ![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fgitee.com%2FOpenDocCN%2Ffreelearn-dl-pt2-zh%2Fraw%2Fmaster%2Fdocs%2Ftfm-nlp%2Fimg%2FIcon_01.png&pos_id=img-5keXZGB9-1714450845018)"
    4\. "这是文章的链接"
    5\. "这个新的音乐视频让我大吃一惊"
    句子情感评分:
    1: 积极
    2: 消极
    3: 积极
    4: 中性
    5: 积极
  • 步骤 3:将我们的句子与其他句子一起输入(编号 3):
    1\. "我受不了这个产品"
    2\. "服务很差! ![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fgitee.com%2FOpenDocCN%2Ffreelearn-dl-pt2-zh%2Fraw%2Fmaster%2Fdocs%2Ftfm-nlp%2Fimg%2FIcon_02.png&pos_id=img-jOOhwzvn-1714450845018)"
    3\. "尽管客户看起来不满意,但事实上她当时是满意的,只是想着其他事情,这给人以错误的印象"
    4\. "支持团队很棒!"
    5\. "这是产品的链接。"
    句子情感评分:
    1: 消极
    2: 积极
    3: 积极
    4: 积极
    5: 中性

输出似乎令人满意,因为我们的句子是积极的(编号 3)。这个结果可靠吗?我们可以在这里多次运行示例。但让我们深入到代码层面去找出答案。

GPT-3 代码

我们只需在游乐场中点击查看代码,复制它,并将其粘贴到我们的 SentimentAnalysis.ipynb 章节笔记本中。我们添加一行只打印我们想要看到的内容:

response = openai.Completion.create(
  engine="davinci",
  prompt="This is a Sentence sentiment classifier\nSentence: \"The customer was satisfied\"\nSentiment: Positive\n###\nSentence: \"The customer was not satisfied\"\nSentiment: Negative\n###\nSentence: \"The service was `![](https://gitee.com/OpenDocCN/freelearn-dl-pt2-zh/raw/master/docs/tfm-nlp/img/Icon_01.png)`\"\nSentiment: Positive\n###\nSentence: \"This is the link to the review\"\nSentiment: Neutral\n###\nSentence text\n\n\n1\. \"I loved the new Batman movie!\"\n2\. \"I hate it when my phone battery dies\"\n3\. \"My day has been `![](https://gitee.com/OpenDocCN/freelearn-dl-pt2-zh/raw/master/docs/tfm-nlp/img/Icon_01.png)`\"\n4\. \"This is the link to the article\"\n5\. \"This new music video blew my mind\"\n\n\nSentence sentiment ratings:\n1: Positive\n2: Negative\n3: Positive\n4: Neutral\n5: Positive\n\n\n###\nSentence text\n\n\n1\. \"I can't stand this product\"\n2\. \"The service was bad! ![](https://gitee.com/OpenDocCN/freelearn-dl-pt2-zh/raw/master/docs/tfm-nlp/img/Icon_02.png)\"\n3\. \"Though the customer seemed unhappy she was in fact satisfied but thinking of something else at the time, which gave a false impression\"\n4\. \"The support team was `![](https://gitee.com/OpenDocCN/freelearn-dl-pt2-zh/raw/master/docs/tfm-nlp/img/Icon_03.png)`![](https://gitee.com/OpenDocCN/freelearn-dl-pt2-zh/raw/master/docs/tfm-nlp/img/Icon_03.png)\"\n5\. \"Here is the link to the product.\"\n\n\nSentence sentiment ratings:\n",
  temperature=0.3,
  max_tokens=60,
  top_p=1,
  frequency_penalty=0,
  presence_penalty=0,
  stop=["###"]
)
r = (response["choices"][0])
print(r["text"]) 

输出不稳定,正如我们在以下回应中所看到的:

  • 运行 1:我们的句子(编号 3)是中性的:
    1: 消极
    2: 消极
    3: 中性
    4: 积极
    5: 积极
  • 运行 2:我们的句子(编号 3)是积极的:
    1: 消极
    2: 消极
    3: 积极
    4: 积极
    5: 中性
  • 运行 3:我们的句子(编号 3)是积极的
  • 运行 4:我们的句子(编号 3)是消极的

这将引导我们得出调查的结论:

  • SRL 表明,如果句子是简单而完整的(没有省略号,没有遗漏的单词),我们将得到可靠的情感分析输出。
  • SRL 表明,如果句子是中等难度的,输出可能可靠,也可能不可靠。
  • SRL 表明,如果句子是复杂的(省略号、多个命题、许多含糊不清的短语等),结果是不稳定的,因此不可靠。

开发者的现在和未来的工作岗位的结论是:

  • 云 AI 和即用模块将需要更少的 AI 开发。
  • 将需要更多的设计技能。
  • 发展用于供给 AI 算法、控制它们并分析其输出的经典流程管道将需要思考和有针对性的发展。

本章展示了开发者作为思想家、设计师和管道开发的巨大前景!

现在是总结我们的旅程并探索新的Transformers地平线的时候了。

摘要

在本章中,我们讨论了一些高级理论。组合性原则不是一个直观的概念。组合性原则意味着Transformers模型必须理解句子的每个部分才能理解整个句子。这涉及到将提供句子部分之间联系的逻辑形式规则。

情感分析的理论难度需要大量的Transformers模型训练、强大的机器和人力资源。虽然许多Transformers模型为许多任务进行了训练,但它们通常需要针对特定任务进行更多的训练。

我们测试了 RoBERTa-large、DistilBERT、MiniLM-L12-H384-uncased 和出色的 BERT-base 多语言模型。我们发现其中一些提供了有趣的答案,但需要更多的训练来解决我们在多个模型上运行的 SST 样本。

情感分析需要对句子有深入的理解和非常复杂的序列。所以,尝试 RoBERTa-large-mnli 是有意义的,以了解干扰任务会产生什么。这里的教训是,在像 transformer 模型这样非常不传统的东西上,不要墨守成规!尝试一切。在各种任务上尝试不同的模型。transformer 的灵活性使我们能够在同一模型上尝试许多不同的任务,或者在许多不同的模型上尝试相同的任务。

我们一路上收集了一些改善客户关系的想法。如果我们发现一个客户经常不满意,那么这个客户可能只是在寻找我们的竞争对手。如果有几个客户抱怨某个产品或服务,我们必须预见未来的问题并改善我们的服务。我们还可以通过 transformer 反馈的在线实时表现来展示我们的服务质量。

最后,我们直接在线使用 GPT-3 进行情感分析,除了使用界面之外什么也不用做!这是令人惊讶的有效,但我们看到人类仍然需要解决更困难的序列。我们看到 SRL 如何帮助识别复杂序列中的问题。

我们可以得出结论,开发人员在思考者、设计者和管道开发方面有着巨大的未来。

在下一章,使用 transformer 分析假新闻,我们将使用情感分析来分析对假新闻的情感反应。

问题

  1. 对于情感分析,没有必要为 transformer 进行预训练。(是/否)
  2. 一个句子总是积极的或消极的。它不能是中性的。(是/否)
  3. 合成性原理表示 transformer 必须理解句子的每一部分才能理解它。(是/否)
  4. RoBERTa-large 旨在改进 transformer 模型的预训练过程。(是/否)
  5. 一个 transformer 可以提供反馈,告诉我们客户是否满意。(是/否)
  6. 如果产品或服务的情感分析一直是负面的,这有助于我们做出适当的决策,以改善我们的服务。(是/否)
  7. 如果一个模型在一个任务上不能提供良好的结果,那么在更改模型之前,它需要更多的训练。(是/否)

参考文献

  • Richard Socher, Alex Perelygin, Jean Wu, Jason Chuang, Christopher Manning, Andrew Ng, 和 Christopher Potts, 递归深度模型用于情感树库的语义组成性nlp.stanford.edu/~socherr/EMNLP2013_RNTN.pdf
  • Hugging Face 管道、模型和文档:

加入我们书籍的 Discord 空间

加入书籍的 Discord 工作空间,与作者进行每月的 问我任何事 会议:

www.packt.link/Transformers

相关文章
|
2月前
|
存储 人工智能 自然语言处理
Transformers 自然语言处理(五)(2)
Transformers 自然语言处理(五)
50 0
|
2月前
|
存储 自然语言处理 算法
Transformers 自然语言处理(四)(3)
Transformers 自然语言处理(四)
56 0
|
7天前
|
自然语言处理 PyTorch API
`transformers`库是Hugging Face提供的一个开源库,它包含了大量的预训练模型和方便的API,用于自然语言处理(NLP)任务。在文本生成任务中,`transformers`库提供了许多预训练的生成模型,如GPT系列、T5、BART等。这些模型可以通过`pipeline()`函数方便地加载和使用,而`generate()`函数则是用于生成文本的核心函数。
`transformers`库是Hugging Face提供的一个开源库,它包含了大量的预训练模型和方便的API,用于自然语言处理(NLP)任务。在文本生成任务中,`transformers`库提供了许多预训练的生成模型,如GPT系列、T5、BART等。这些模型可以通过`pipeline()`函数方便地加载和使用,而`generate()`函数则是用于生成文本的核心函数。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
Transformers 自然语言处理(一)(2)
Transformers 自然语言处理(一)
45 3
|
2月前
|
存储 机器学习/深度学习 自然语言处理
Transformers 自然语言处理(一)(3)
Transformers 自然语言处理(一)
45 2
|
2月前
|
机器学习/深度学习 存储 自然语言处理
Transformers 自然语言处理(一)(1)
Transformers 自然语言处理(一)
43 2
|
2月前
|
人工智能 自然语言处理 数据可视化
Transformers 自然语言处理(四)(1)
Transformers 自然语言处理(四)
15 1
|
2月前
|
人工智能 自然语言处理 数据可视化
Transformers 自然语言处理(五)(1)
Transformers 自然语言处理(五)
28 0
|
2月前
|
人工智能 自然语言处理 数据可视化
Transformers 自然语言处理(四)(2)
Transformers 自然语言处理(四)
15 0
|
6天前
|
机器学习/深度学习 自然语言处理 TensorFlow
使用Python实现深度学习模型:文本生成与自然语言处理
【7月更文挑战第14天】 使用Python实现深度学习模型:文本生成与自然语言处理
35 12