BERT可以通过计算词向量之间的相似度来得到相似的表达式。具体方法如下:
准备待比较的两个文本a和b。
使用BERT模型对a和b进行编码,得到它们的词向量表示。可以使用相应的BERT预训练模型,例如bert-base-uncased、bert-large-uncased等。示例代码如下:
from transformers import AutoTokenizer, AutoModel
import torch
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
model = AutoModel.from_pretrained("bert-base-uncased")
a = "I like apples."
b = "Apples are my favorite fruit."
encoded_a = tokenizer(a, return_tensors='pt')
encoded_b = tokenizer(b, return_tensors='pt')
with torch.no_grad():
a_output = model(**encoded_a)[0][:, 0, :]
b_output = model(**encoded_b)[0][:, 0, :]
from sklearn.metrics.pairwise import cosine_similarity
cosine_sim = cosine_similarity(a_output, b_output)
print(cosine_sim)
以上代码将打印出a和b的词向量相似度。如果相似度接近1,则表明两个文本的表达式相似。
需要注意的是,BERT输出的是每个单词的词向量,可以通过取所有单词的平均值来得到整个句子的向量表示。
下一篇:BERT示例中的类型错误