繁体   English   中英

用BERT模型比较单词的余弦相似度

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM