要给出"BERT用于文本摘要"的代码示例,需要以下步骤:
pip install transformers
同时,还需要下载预训练的BERT模型和tokenizer。可以从Hugging Face的模型库中下载预训练模型,例如bert-base-uncased。
from transformers import BertTokenizer, BertModel
import torch
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')
text = "要进行文本摘要的输入文本"
encoded_input = tokenizer.encode_plus(
text,
add_special_tokens=True,
max_length=512,
truncation=True,
padding='max_length',
return_tensors='pt'
)
outputs = model.generate(
input_ids=encoded_input['input_ids'],
attention_mask=encoded_input['attention_mask'],
max_length=150,
num_beams=4,
early_stopping=True
)
其中,max_length
指定生成摘要的最大长度,num_beams
指定生成多少个备选摘要,并且early_stopping
参数表示当生成摘要的条件满足时停止生成。
summary = tokenizer.decode(outputs[0], skip_special_tokens=True)
完整的代码示例如下:
from transformers import BertTokenizer, BertModel
import torch
# 实例化tokenizer和BERT模型
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')
# 准备输入文本数据
text = "要进行文本摘要的输入文本"
# 使用tokenizer对文本进行编码,并添加特殊标记
encoded_input = tokenizer.encode_plus(
text,
add_special_tokens=True,
max_length=512,
truncation=True,
padding='max_length',
return_tensors='pt'
)
# 使用BERT模型生成摘要
outputs = model.generate(
input_ids=encoded_input['input_ids'],
attention_mask=encoded_input['attention_mask'],
max_length=150,
num_beams=4,
early_stopping=True
)
# 解码生成的摘要
summary = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(summary)
这段代码将使用BERT模型对输入文本进行编码,并将生成的摘要解码为可读文本。需要注意的是,这只是一个简单的示例,实际应用中可能需要根据具体的需求做一些调整。