您好,我希望使用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文件将嵌入转换为word?有可能吗?
发布于 2021-10-31 06:42:13
看起来你需要从你的词汇表中存储所有单词的嵌入。在此之后,您可以使用一些工具来查找最接近目标嵌入的嵌入。例如,您可以使用来自scikit learn的NearestNeighbors。您可能需要考虑的另一个选择是HNSW,这是一种专门设计用于执行快速近似最近邻搜索的数据结构。Faiss是Facebook对HNSW的一个很好的实现。
https://stackoverflow.com/questions/69784408
复制相似问题