Transformers 自然语言处理(二)(3)

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
语种识别,语种识别 100万字符
文本翻译,文本翻译 100万字符
简介: Transformers 自然语言处理(二)

Transformers 自然语言处理(二)(2)https://developer.aliyun.com/article/1513952

斯坦福情感树库(SST-2

斯坦福情感树库SST-2)包含电影评论。在这一部分,我们将描述 SST-2(二元分类)任务。然而,数据集远不止如此,可以将情感分类为 0(负面)到 n(正面)。

Socher等人(2013)将情感分析发展到了超越二元积极-消极 NLP 分类的程度。我们将在 第十二章检测客户情绪以做出预测 中使用 Transformer 模型探索 SST-2 多标签情感分类。

在这一部分,我们将在 Hugging Face transformer pipeline 模型上运行从 SST 中取出的样本以说明二元分类。

打开Transformer_tasks.ipynb并运行以下单元格,其中包含从SST获取的正面和负面电影评论:

#@title SST-2 Binary Classification
from transformers import pipeline
nlp = pipeline("sentiment-analysis")
print(nlp("If you sometimes like to go to the movies to have fun , Wasabi is a good place to start."),"If you sometimes like to go to the movies to have fun , Wasabi is a good place to start.")
print(nlp("Effective but too-tepid biopic."),"Effective but too-tepid biopic.") 

输出是准确的:

[{'label': 'POSITIVE', 'score': 0.999825656414032}] If you sometimes like to go to the movies to have fun , Wasabi is a good place to start .
[{'label': 'NEGATIVE', 'score': 0.9974064230918884}] Effective but too-tepid biopic. 

SST-2 任务使用准确度指标进行评估。

我们对一个序列的情感进行分类。现在让我们看看一个序列中的两个句子是否是释义。

微软研究释义语料库(MRPC)

微软研究释义语料库MRPC),一个 GLUE 任务,包含从网上新闻来源中提取的句子对。每对句子都经过人工标注,标明句子是否基于两个密切相关属性等价:

  • 解释等价
  • 语义等价

让我们使用 Hugging Face BERT 模型运行一个样本。打开Transformer_tasks.ipynb并前往以下单元格,然后运行从 MRPC 中提取的样本:

#@title Sequence Classification : paraphrase classification
from transformers import AutoTokenizer, TFAutoModelForSequenceClassification
import tensorflow as tf
tokenizer = AutoTokenizer.from_pretrained("bert-base-cased-finetuned-mrpc")
model = TFAutoModelForSequenceClassification.from_pretrained("bert-base-cased-finetuned-mrpc")
classes = ["not paraphrase", "is paraphrase"]
sequence_A = "The DVD-CCA then appealed to the state Supreme Court."
sequence_B = "The DVD CCA appealed that decision to the U.S. Supreme Court."
paraphrase = tokenizer.encode_plus(sequence_A, sequence_B, return_tensors="tf")
paraphrase_classification_logits = model(paraphrase)[0]
paraphrase_results = tf.nn.softmax(paraphrase_classification_logits, axis=1).numpy()[0]
print(sequence_B, "should be a paraphrase")
for i in range(len(classes)):
    print(f"{classes[i]}: {round(paraphrase_results[i] * 100)}%") 

输出是准确的,尽管可能会收到警告消息,表明模型需要更多的下游训练:

The DVD CCA appealed that decision to the U.S. Supreme Court. should be a paraphrase
not paraphrase: 8.0%
is paraphrase: 92.0% 

MRPC 任务使用 F1/准确率分数方法进行度量。

现在让我们运行一个Winograd schema

Winograd 模式

我们在本章的*The Winograd schema challenge (WSC)*部分描述了 Winograd 模式。训练集是英文的。

但是,如果我们要求Transformers模型解决英法翻译中的代词性别问题会发生什么?法语对具有语法性别(阴性、阳性)的名词有不同的拼写。

以下句子包含代词it,可以指代cargarage。Transformers能消除这个代词的歧义吗?

打开Transformer_tasks.ipynb,转到#Winograd单元格,并运行我们的示例:

#@title Winograd
from transformers import pipeline
translator = pipeline("translation_en_to_fr")
print(translator("The car could not go in the garage because it was too big.", max_length=40)) 

翻译是完美的:

[{'translation_text': "La voiture ne pouvait pas aller dans le garage parce qu'elle était trop grosse."}] 

Transformers检测到单词it指的是单词car,这是女性形式。女性形式适用于it和形容词big

elle在法语中意味着she,这是it的翻译。阳性形式将是il,意思是he

grosse是单词big的翻译的女性形式。否则,阳性形式将是gros

我们给Transformers一个困难的 Winograd 模式来解决,它给出了正确的答案。

还有许多基于数据集的 NLU 任务可用。我们将在本书中探索其中一些,以将更多构建块添加到我们的 transformer 工具箱中。

概要

本章分析了人类语言表征过程与机器智能执行传导的方式之间的差异。我们看到,Transformers必须依赖于我们在书面语言中表达的极其复杂的思维过程的输出。语言仍然是表达大量信息的最精确的方式。机器没有感觉,必须将语音转换为文本,以从原始数据集中提取含义。

然后,我们探讨了如何衡量多任务Transformers的性能。Transformers在下游任务中获得顶级结果的能力在 NLP 历史上是独一无二的。我们经历了许多艰难的 SuperGLUE 任务,这些任务将Transformers带到了 GLUE 和 SuperGLUE 排行榜的前列。

BoolQ、CB、WiC 等我们涵盖的许多任务,甚至对人类来说都不容易处理。我们通过几个下游任务的示例展示了Transformers模型在证明其效率时面临的困难。

Transformers已经通过胜过以前的 NLU 架构证明了其价值。为了说明实施下游微调任务是多么简单,我们在 Google Colaboratory 笔记本中使用 Hugging Face 的 transformers 管道运行了几个任务。

Winograd 模式中,我们给Transformers一个困难的任务,即解决英法翻译中的 Winograd 消歧问题。

在下一章,第六章使用Transformers进行机器翻译,我们将进一步开展翻译任务,并使用 Trax 构建翻译模型。

问题

  1. 机器智能使用与人类相同的数据进行预测。(是/否)
  2. 对于 NLP 模型来说,SuperGLUE 比 GLUE 更难。(是/否)
  3. BoolQ 期望一个二进制答案。(True/False)
  4. WiC 代表上下文中的单词。(True/False)
  5. 文本蕴含识别RTE)检测一个序列是否蕴含另一个序列。(True/False)
  6. Winograd 模式预测动词是否拼写正确。(True/False)
  7. Transformer 模型现在占据了 GLUE 和 SuperGLUE 的前几名。(True/False)
  8. 人类基准标准并非一劳永逸。它们被 SuperGLUE 制定得更难达到。(True/False)
  9. Transformer 模型永远不会达到 SuperGLUE 人类基准标准。(True/False)
  10. 变种的 Transformer 模型已经超过了 RNN 和 CNN 模型。(True/False)

参考资料

  • Alex WangYada PruksachatkunNikita NangiaAmanpreet SinghJulian MichaelFelix HillOmer LevySamuel R. Bowman,2019 年,《SuperGLUE:通用语言理解系统的更棘手的基准》:w4ngatang.github.io/static/papers/superglue.pdf
  • Alex Wang, Yada Pruksachatkun, Nikita Nangia, Amanpreet Singh, Julian Michael, Felix Hill, Omer Levy, Samuel R. Bowman, 2019, GLUE:用于自然语言理解的多任务基准和分析平台
  • Yu SunShuohuan WangYukun LiShikun FengHao TianHua WuHaifeng Wang,2019 年,《ERNIE 2.0:语言理解的持续预训练框架》:arxiv.org/pdf/1907.12412.pdf
  • Melissa RoemmeleCosmin Adrian BejanAndrew S. Gordon,2011 年,《可选择的合理替代方案:常识因果推理评估》:people.ict.usc.edu/~gordon/publications/AAAI-SPRING11A.PDF
  • Richard SocherAlex PerelyginJean Y. WuJason ChuangChristopher D. ManningAndrew Y. NgChristopher Potts,2013 年,《递归深度模型用于情感树库的语义组合》:nlp.stanford.edu/~socherr/EMNLP2013_RNTN.pdf
  • Thomas WolfLysandre DebutVictor SanhJulien ChaumondClement DelangueAnthony MoiPierric CistacTim RaultRémi LoufMorgan FuntowiczJamie Brew,2019 年,《HuggingFace 的 Transformer:最先进的自然语言处理》:arxiv.org/abs/1910.03771
  • Hugging Face Transformer 用法: huggingface.co/transformers/usage.html

加入我们书籍的 Discord 空间

加入该书的 Discord 工作区,与作者进行每月的问我任何事会话:

www.packt.link/Transformers


第六章:使用 Transformer 进行机器翻译

人类精通序列转换,将表示转移到另一个对象上。我们可以轻松想象一个序列的心理表示。如果有人说我的花园里的花很漂亮,我们可以轻松地想象出一个有花的花园。我们看到花园的图像,尽管我们可能从未见过那个花园。我们甚至可能想象出鸟鸣和花香。

机器必须从头开始学习用数字表示进行转换。循环或卷积方法产生了有趣的结果,但还没有达到显著的 BLEU 翻译评估分数。翻译需要将语言 A 的表示转换成语言 B

Transformers模型的自注意创新提高了机器智能的分析能力。在尝试将语言 A 的序列翻译成语言 B 之前,必须对其进行充分的表示。自注意带来了机器获得更好 BLEU 分数所需的智能水平。

注意力全靠你 Transformers在 2017 年的英语-德语和英语-法语翻译中取得了最佳结果。从那以后,其他Transformers的得分已经有所提高。

在本书的这一部分,我们已经涵盖了Transformers的基本方面:Transformer 的 架构,从头开始 训练 一个 RoBERTa 模型,微调 一个 BERT,评估 一个经过微调的 BERT,并探索一些Transformers示例中的 下游任务

在本章中,我们将通过三个额外的主题来介绍机器翻译。我们首先会定义什么是机器翻译。然后,我们将预处理一个机器翻译研讨会WMT)数据集。最后,我们将看到如何实现机器翻译。

本章涵盖以下主题:

  • 定义机器翻译
  • 人类转换和翻译
  • 机器转换和翻译
  • 预处理 WMT 数据集
  • 使用 BLEU 评估机器翻译
  • 几何评估
  • Chencherry 平滑
  • 介绍 Google 翻译的 API
  • 使用 Trax 初始化英语-德语问题

我们的第一步将是定义机器翻译。

定义机器翻译

Vaswani 等人(2017 年)在设计 Transformer 时解决了 NLP 中最困难的问题之一。机器翻译的人类基线似乎对我们这些人类-机器智能设计者来说是遥不可及的。这并没有阻止 Vaswani 等人(2017 年)发布 Transformer 的架构并取得最先进的 BLEU 结果。

在本节中,我们将定义机器翻译。机器翻译是通过机器转换和输出来复制人类翻译的过程:


图 6.1:机器翻译过程

图 6.1 中的一般思想是让机器在几个步骤中执行以下操作:

  • 选择要翻译的句子
  • 学习单词如何相互关联以及数以亿计的参数
  • 学习单词之间相互指代的多种方式
  • 使用机器传导将学习的参数传递给新的序列
  • 为单词或序列选择候选翻译

这个过程总是以从源语言A翻译的句子开始。过程以包含语言B中翻译的句子的输出结束。中间计算涉及传导。

人类传导和翻译

例如,欧洲议会的人类口译员不会逐字逐句地翻译句子。逐字翻译通常毫无意义,因为它们缺乏适当的语法结构,并且无法产生正确的翻译,因为忽略了每个词的上下文

人类传导将语言A中的一句话构建成一种认知表征这句话的含义。欧洲议会的口译员(口头翻译)或翻译员(书面翻译)只有在此之后才会将该传导转化为语言B中对该句话的解释。

我们将口译员或翻译员在语言B中完成的翻译称为参考句子。

图 6.1中描述的机器翻译过程中,您会注意到几个参考资料。

人类翻译员在现实生活中不会将句子A翻译为句子B多次,而只会翻译一次。然而,在现实生活中可能会有不止一个翻译员翻译句子A。例如,你可以找到蒙田的《论文》的多个法语到英语的翻译。如果你从原始法语版本中取出句子A,你会发现被标注为引用1n的句子B的几个版本。

如果有一天你去欧洲议会,你可能会注意到口译员只会在有限的时间内翻译两个小时,例如。然后另一个口译员接替。没有两个口译员有相同的风格,就像作家有不同的风格一样。源语言中的句子A可能由同一个人在一天中重复几次,但会被翻译成几个参考句子B版本:

参考 = {参考 1, 参考 2,…参考 n}

机器必须找到一种以与人类翻译员相同的方式思考的方法。

机器传导和翻译

原始 Transformer 架构的传导过程使用编码器堆栈、解码器堆栈和所有模型参数来表示一个参考序列。我们将称之为参考的输出序列。

为什么不直接说“输出预测”?问题在于没有单一的输出预测。Transformer,就像人类一样,将产生一个我们可以参考的结果,但如果我们对其进行不同的训练或使用不同的 Transformer 模型,结果可能会改变!

我们立即意识到人类语言序列转换的基线是一个相当大的挑战。然而,已经取得了很大的进步。

机器翻译的评估证明了自然语言处理的进步。为了确定一个解决方案是否比另一个更好,每个自然语言处理挑战者、实验室或组织必须参考相同的数据集,以便比较是有效的。

现在让我们探索一个 WMT 数据集。

预处理一个 WMT 数据集

Vaswani 等人(2017)展示了 Transformer 在 WMT 2014 英译德和 WMT 2014 英译法任务上的成就。Transformer 实现了最先进的 BLEU 分数。BLEU 将在本章的使用 BLEU 评估机器翻译部分进行描述。

2014 年的 WMT 包含了几个欧洲语言数据集。其中一个数据集包含了从欧洲议会语料库第 7 版中获取的数据。我们将使用来自欧洲议会会议平行语料库1996-2011 年的法语-英语数据集(www.statmt.org/europarl/v7/fr-en.tgz)。

一旦你下载了文件并解压缩它们,我们将预处理这两个平行文件:

  • europarl-v7.fr-en.en
  • europarl-v7.fr-en.fr

我们将加载、清理并缩小语料库的大小。

让我们开始预处理。

预处理原始数据

在本节中,我们将预处理europarl-v7.fr-en.eneuroparl-v7.fr-en.fr

打开本章的 GitHub 目录中的read.py。确保两个 europarl 文件与read.py在同一目录中。

程序开始使用标准的 Python 函数和pickle来转储序列化输出文件:

import pickle
from pickle import dump 

然后我们定义将文件加载到内存中的函数:

# load doc into memory
def load_doc(filename):
        # open the file as read only
        file = open(filename, mode='rt', encoding='utf-8')
        # read all text
        text = file.read()
        # close the file
        file.close()
        return text 

文档加载后被分割成句子:

# split a loaded document into sentences
def to_sentences(doc):
        return doc.strip().split('\n') 

检索到最短和最长的长度:

# shortest and longest sentence lengths
def sentence_lengths(sentences):
        lengths = [len(s.split()) for s in sentences]
        return min(lengths), max(lengths) 

导入的句子行必须经过清理以避免训练无用和嘈杂的标记。行被规范化,以空格分词,并转换为小写。从每个标记中删除标点符号,删除不可打印的字符,并排除包含数字的标记。清理后的行被存储为字符串。

程序运行清理函数并返回干净的附加字符串:

# clean lines
import re
import string
import unicodedata
def clean_lines(lines):
        cleaned = list()
        # prepare regex for char filtering
        re_print = re.compile('[^%s]' % re.escape(string.printable))
        # prepare translation table for removing punctuation
        table = str.maketrans('', '', string.punctuation)
        for line in lines:
                # normalize unicode characters
                line = unicodedata.normalize('NFD', line).encode('ascii', 'ignore')
                line = line.decode('UTF-8')
                # tokenize on white space
                line = line.split()
                # convert to lower case
                line = [word.lower() for word in line]
                # remove punctuation from each token
                line = [word.translate(table) for word in line]
                # remove non-printable chars form each token
                line = [re_print.sub('', w) for w in line]
                # remove tokens with numbers in them
                line = [word for word in line if word.isalpha()]
                # store as string
                cleaned.append(' '.join(line))
        return cleaned 

我们已经定义了将调用来准备数据集的关键函数。首先加载并清理英文数据:

# load English data
filename = 'europarl-v7.fr-en.en'
doc = load_doc(filename)
sentences = to_sentences(doc)
minlen, maxlen = sentence_lengths(sentences)
print('English data: sentences=%d, min=%d, max=%d' % (len(sentences), minlen, maxlen))
cleanf=clean_lines(sentences) 

数据集现在已经干净,pickle将其转储到名为English.pkl的序列化文件中:

filename = 'English.pkl'
outfile = open(filename,'wb')
pickle.dump(cleanf,outfile)
outfile.close()
print(filename," saved") 

输出显示关键统计信息,并确认English.pkl已保存:

English data: sentences=2007723, min=0, max=668
English.pkl  saved 

现在我们用相同的过程处理法语数据,并将其转储到名为French.pkl的序列化文件中:

# load French data
filename = 'europarl-v7.fr-en.fr'
doc = load_doc(filename)
sentences = to_sentences(doc)
minlen, maxlen = sentence_lengths(sentences)
print('French data: sentences=%d, min=%d, max=%d' % (len(sentences), minlen, maxlen))
cleanf=clean_lines(sentences)
filename = 'French.pkl'
outfile = open(filename,'wb')
pickle.dump(cleanf,outfile)
outfile.close()
print(filename," saved") 

输出显示法语数据集的关键统计信息,并确认French.pkl已保存。

French data: sentences=2007723, min=0, max=693
French.pkl saved 

主要的预处理已经完成。但我们仍需要确保数据集不包含嘈杂和混乱的标记。

完成数据集的预处理

现在,在与read.py相同目录中打开read_clean.py。我们的流程现在定义了一个函数,该函数将加载前一部分清理过的数据集,然后在预处理完成后保存它们:

from pickle import load
from pickle import dump
from collections import Counter
# load a clean dataset
def load_clean_sentences(filename):
        return load(open(filename, 'rb'))
# save a list of clean sentences to file
def save_clean_sentences(sentences, filename):
        dump(sentences, open(filename, 'wb'))
        print('Saved: %s' % filename) 

我们现在定义一个函数,该函数将创建一个词汇计数器。知道我们将解析的序列中每个单词的使用次数非常重要。例如,如果一个词在包含两百万行的数据集中只使用一次,我们将浪费我们的能量使用宝贵的 GPU 资源来学习它。让我们定义计数器:

# create a frequency table for all words
def to_vocab(lines):
        vocab = Counter()
        for line in lines:
                tokens = line.split()
                vocab.update(tokens)
        return vocab 

词汇计数器将检测频率低于min_occurrence的单词:

# remove all words with a frequency below a threshold
def trim_vocab(vocab, min_occurrence):
        tokens = [k for k,c in vocab.items() if c >= min_occurrence]
        return set(tokens) 

在这种情况下,min_occurrence=5,低于或等于此阈值的单词已被移除,以避免浪费训练模型分析它们的时间。

现在我们必须处理Out-Of-VocabularyOOV)单词。 OOV 词可以是拼写错误的单词,缩写词或任何不符合标准词汇表示的单词。我们可以使用自动拼写,但它不会解决所有问题。在本例中,我们将简单地用unk(未知)标记替换 OOV 词:

# mark all OOV with "unk" for all lines
def update_dataset(lines, vocab):
        new_lines = list()
        for line in lines:
                new_tokens = list()
                for token in line.split():
                        if token in vocab:
                                new_tokens.append(token)
                        else:
                                new_tokens.append('unk')
                new_line = ' '.join(new_tokens)
                new_lines.append(new_line)
        return new_lines 

现在我们将运行针对英语数据集的函数,保存输出,然后显示20行:

# load English dataset
filename = 'English.pkl'
lines = load_clean_sentences(filename)
# calculate vocabulary
vocab = to_vocab(lines)
print('English Vocabulary: %d' % len(vocab))
# reduce vocabulary
vocab = trim_vocab(vocab, 5)
print('New English Vocabulary: %d' % len(vocab))
# mark out of vocabulary words
lines = update_dataset(lines, vocab)
# save updated dataset
filename = 'english_vocab.pkl'
save_clean_sentences(lines, filename)
# spot check
for i in range(20):
        print("line",i,":",lines[i]) 

输出函数首先显示了获得的词汇压缩:

English Vocabulary: 105357
New English Vocabulary: 41746
Saved: english_vocab.pkl 

预处理的数据集已保存。输出函数然后显示20行,如下摘录所示:

line 0 : resumption of the session
line 1 : i declare resumed the session of the european parliament adjourned on friday december and i would like once again to wish you a happy new year in the hope that you enjoyed a pleasant festive period
line 2 : although, as you will have seen, the dreaded millennium bug failed to materialise still the people in a number of countries suffered a series of natural disasters that truly were dreadful
line 3 : you have requested a debate on this subject in the course of the next few days during this partsession 

现在让我们运行针对法语数据集的函数,保存输出,然后显示20行:

# load French dataset
filename = 'French.pkl'
lines = load_clean_sentences(filename)
# calculate vocabulary
vocab = to_vocab(lines)
print('French Vocabulary: %d' % len(vocab))
# reduce vocabulary
vocab = trim_vocab(vocab, 5)
print('New French Vocabulary: %d' % len(vocab))
# mark out of vocabulary words
lines = update_dataset(lines, vocab)
# save updated dataset
filename = 'french_vocab.pkl'
save_clean_sentences(lines, filename)
# spot check
for i in range(20):
        print("line",i,":",lines[i]) 

输出函数首先显示了获得的词汇压缩:

French Vocabulary: 141642
New French Vocabulary: 58800
Saved: french_vocab.pkl 

预处理的数据集已保存。输出函数然后显示20行,如下摘录所示:

line 0 : reprise de la session
line 1 : je declare reprise la session du parlement europeen qui avait ete interrompue le vendredi decembre dernier et je vous renouvelle tous mes vux en esperant que vous avez passe de bonnes vacances
line 2 : comme vous avez pu le constater le grand bogue de lan ne sest pas produit en revanche les citoyens dun certain nombre de nos pays ont ete victimes de catastrophes naturelles qui ont vraiment ete terribles
line 3 : vous avez souhaite un debat a ce sujet dans les prochains jours au cours de cette periode de session 

此部分显示了在训练之前必须处理原始数据的方法。数据集现在已准备好插入Transformers进行训练。

法语数据集的每一行都是要翻译的句子。 英语数据集的每一行都是机器翻译模型的参考。 机器翻译模型必须产生一个与参考匹配的英文候选翻译

BLEU 提供了一种评估机器翻译模型生成的候选翻译的方法。


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

相关文章
|
4月前
|
存储 人工智能 自然语言处理
Transformers 自然语言处理(五)(2)
Transformers 自然语言处理(五)
67 0
|
4月前
|
存储 自然语言处理 算法
Transformers 自然语言处理(四)(3)
Transformers 自然语言处理(四)
77 0
|
23天前
|
机器学习/深度学习 自然语言处理 PyTorch
PyTorch与Hugging Face Transformers:快速构建先进的NLP模型
【8月更文第27天】随着自然语言处理(NLP)技术的快速发展,深度学习模型已经成为了构建高质量NLP应用程序的关键。PyTorch 作为一种强大的深度学习框架,提供了灵活的 API 和高效的性能,非常适合于构建复杂的 NLP 模型。Hugging Face Transformers 库则是目前最流行的预训练模型库之一,它为 PyTorch 提供了大量的预训练模型和工具,极大地简化了模型训练和部署的过程。
51 2
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【开源项目】自然语言处理领域的明星项目推荐:Hugging Face Transformers
在当今人工智能与大数据飞速发展的时代,自然语言处理(NLP)已成为推动科技进步的重要力量。而在NLP领域,Hugging Face Transformers无疑是一个备受瞩目的开源项目。本文将从项目介绍、代码解释以及技术特点等角度,为您深入剖析这一热门项目。
51 10
|
2月前
|
自然语言处理 PyTorch API
`transformers`库是Hugging Face提供的一个开源库,它包含了大量的预训练模型和方便的API,用于自然语言处理(NLP)任务。在文本生成任务中,`transformers`库提供了许多预训练的生成模型,如GPT系列、T5、BART等。这些模型可以通过`pipeline()`函数方便地加载和使用,而`generate()`函数则是用于生成文本的核心函数。
`transformers`库是Hugging Face提供的一个开源库,它包含了大量的预训练模型和方便的API,用于自然语言处理(NLP)任务。在文本生成任务中,`transformers`库提供了许多预训练的生成模型,如GPT系列、T5、BART等。这些模型可以通过`pipeline()`函数方便地加载和使用,而`generate()`函数则是用于生成文本的核心函数。
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
Transformers 自然语言处理(一)(2)
Transformers 自然语言处理(一)
58 3
|
4月前
|
存储 机器学习/深度学习 自然语言处理
Transformers 自然语言处理(一)(3)
Transformers 自然语言处理(一)
55 2
|
4月前
|
机器学习/深度学习 存储 自然语言处理
Transformers 自然语言处理(一)(1)
Transformers 自然语言处理(一)
54 2
|
4月前
|
人工智能 自然语言处理 数据可视化
Transformers 自然语言处理(五)(1)
Transformers 自然语言处理(五)
44 0
|
4月前
|
人工智能 自然语言处理 算法
Transformers 自然语言处理(四)(4)
Transformers 自然语言处理(四)
42 0

热门文章

最新文章