Как кластеризовать ключевые слова или получить сходство ключевых слов, когда у меня есть их векторы - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть Python-словарь, сохраненный как векторный файл с методом Pickle (через Bert-as-Service и предварительно обученную модель Google), например:

(ключ) Фраза: (значение) Phrase_Vector_from_Bert = woman fabric:1.3237 -2.6354 1.7458 ....

Но я не имею ни малейшего представления о сходстве фраз с векторными файлами из модели Bert-as-Service, как я это делаю с Gensim Word2Vec, поскольку последняя оснащена .shogitymethod.

Не могли бы вы дать совет, чтобы получить сходство фраз / ключевых слов или сгруппировать их с помощью моего векторного файла Python-Pickle-dictionary?

Или, может быть, есть лучшая идея для кластеризации ключевых слов?с Bert-as-Service?

Следующие коды показывают, как я получаю векторы для фраз / ключевых слов:

import Myutility
# the file Myutility includes the function save_model and load_model

import BertCommand
# the file Bertcommand includes the function to start Bert-as-service 
  client

WORD_PATH = 'E:/Works/testwords.txt'
WORD_FEATURE = 'E:/Works/word.google.vector'

word_vectors = {}

with open(WORD_PATH) as f:
    lines = f.readlines()
    for line in lines:
        line = line.strip('\n')
        if line:                
            word = line
            print(line)
            word_vectors[word]=None

for word in word_vectors:
    try:
        v = bc.encode([word])
        word_vectors[word] = v
    except:
        pass

save_model(word_vectors,WORD_FEATURE)

1 Ответ

0 голосов
/ 26 сентября 2019

Если я правильно понял, у вас есть вектор для каждой фразы.

Затем вы можете просто вычислить косинусное сходство между двумя векторами фраз.

Для получения дополнительной информации и реализации (ручная реализацияи sklearn реализация), предлагаю эту ссылку: https://skipperkongen.dk/2018/09/19/cosine-similarity-in-python/

...