帮我利用pytorch和Bert写一个获取句子对相关性的代码
时间: 2023-04-05 09:00:47 浏览: 132
好的,我可以回答这个问题。以下是一个使用 PyTorch 和 BERT 模型获取句子对相关性的代码示例:
```
import torch
from transformers import BertTokenizer, BertModel
# 加载 BERT 模型和 tokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
model = BertModel.from_pretrained('bert-base-chinese')
# 定义两个句子
sentence1 = "今天天气真好"
sentence2 = "明天会下雨吗"
# 对句子进行编码
encoded_dict = tokenizer.encode_plus(
sentence1,
sentence2,
add_special_tokens = True,
max_length = 64,
pad_to_max_length = True,
return_attention_mask = True,
return_tensors = 'pt'
)
# 获取输入的 ID、attention mask 和 token type ID
input_ids = encoded_dict['input_ids']
attention_mask = encoded_dict['attention_mask']
token_type_ids = encoded_dict['token_type_ids']
# 使用 BERT 模型获取句子对的相关性
with torch.no_grad():
outputs = model(input_ids, attention_mask=attention_mask, token_type_ids=token_type_ids)
last_hidden_states = outputs[0]
pooled_output = last_hidden_states[:, 0]
similarity = torch.cosine_similarity(pooled_output[0], pooled_output[1], dim=0)
# 输出句子对的相关性
print("句子1:", sentence1)
print("句子2:", sentence2)
print("句子对的相关性:", similarity.item())
```
这个代码示例使用 BERT 模型计算两个句子的相关性,输出结果为一个浮点数,表示两个句子的相似度。
阅读全文