[英]Compare cosine similarity of word with BERT model
嗨,我正在寻找使用 BERT 模型为一个词生成相似词,我们在 gensim 中使用的相同方法生成 most_similar 词,我发现该方法为:
from transformers import BertTokenizer, BertModel
import torch
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')
word = "Hello"
inputs = tokenizer(word, return_tensors="pt")
outputs = model(**inputs)
word_vect = outputs.pooler_output.detach().numpy()
好的,现在这给了我用户给定的输入词的嵌入,所以我们可以将这个嵌入与完整的 BERT 模型进行余弦相似度的比较,以找到与该词最匹配的前 N 个嵌入,然后使用vocab.txt 文件中的模型? 是否可以?
似乎您需要为词汇表中的所有单词存储嵌入。 之后,您可以使用一些工具来找到最接近目标嵌入的嵌入。 例如,您可以使用 scikit-learn 中的NearestNeighbors 。 您可能要考虑的另一个选项是 HNSW,它是专门设计用于执行快速近似最近邻搜索的数据结构。 Faiss是 Facebook 对 HNSW 的一个很好的实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.