BERT, встраивающий косинусные сходства, выглядит очень случайным и бесполезным.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 BERT, встраивающий косинусные сходства, выглядит очень случайным и бесполезным.

Сообщение Anonymous »

Я подумал, что вы можете использовать встраивания BERT для определения семантического сходства. Я пытался с помощью этого сгруппировать некоторые слова по категориям, но результаты были очень плохими.
Например. вот небольшой пример с животными и фруктами. Заметили, что наибольшее сходство наблюдается между кошкой и бананом?

Код: Выделить всё

import torch
from transformers import BertTokenizer, BertModel
from sklearn.metrics.pairwise import cosine_similarity

tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased', output_hidden_states=True).eval()

def gen_embedding(word):
encoding = tokenizer(word, return_tensors='pt')
with torch.no_grad():
outputs = model(**encoding)

token_embeddings = outputs.last_hidden_state.squeeze()
token_embeddings = token_embeddings[1 : -1]
word_embedding = token_embeddings.mean(dim=0)
return word_embedding

words = [
'cat',
'seagull',
'mango',
'banana'
]

embs = [gen_embedding(word) for word in words]

print(cosine_similarity(embs))

# array([[1.        , 0.33929926, 0.7086487 , 0.79372996],
#        [0.33929926, 1.0000001 , 0.29915804, 0.4000572 ],
#        [0.7086487 , 0.29915804, 1.        , 0.7659105 ],
#        [0.79372996, 0.4000572 , 0.7659105 , 0.99999976]], dtype=float32)
Я делаю что-то не так?

Подробнее здесь: https://stackoverflow.com/questions/787 ... nd-useless
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»