Как мы можем найти контекстуальное сходство между двумя разными n-граммами, используя python? - PullRequest
0 голосов
/ 04 ноября 2019

Например, предположим, у нас есть два слова: «отлично» и «очень хорошо», которые по контексту похожи друг на друга, но они различаются n-граммами ( «отлично» - это униграмма, а «очень хорошо» - биграмма)). Мне нужны некоторые предложения о том, как построить модель НЛП, которая может оценить сходство между ними.

1 Ответ

0 голосов
/ 04 ноября 2019

Вы можете рассмотреть возможность кодирования вашего текста с помощью word2vec.

Вы можете использовать предварительно обученную модель в новостях Google

wget https://s3.amazonaws.com/dl4j-distribution/GoogleNews-vectors-negative300.bin.gz
gunzip GoogleNews-vectors-negative300.bin.

Использование:

import gensim

# Load Google's pre-trained Word2Vec model.
model = gensim.models.Word2Vec.load_word2vec_format('./model/GoogleNews-vectors-negative300.bin', binary=True) 

corpus = [
'good person',
'good human being'
]
# For each sentence in corpus, generate a vector.
# using any similarity measure, you can compute similarity once you encode your text to vector.
corpus_vec = []
for sentence in corpus:
     sent_vec = np.zeros(300)
     for word in sentence:
        sent_vec += model[word]
     corpus_vec.append(sent_vec)

Это дает вам 300мерный вектор для каждого слова. Преобразуйте все слова в 300-мерный вектор и сложите их для каждого текста.

Теперь вы можете использовать косинусное сходство или любую другую меру сходства.

...