我们如何使用python找到两个不同的n-gram之间的上下文相似性?

例如, 假设我们有两个词“ great”和“ very good”,它们在上下文上彼此相似,但是它们是不同的n-gram(“ great”是unigram,而“ very good”是bigram )。我需要一些有关如何建立一个可以评估它们之间相似性的NLP模型的建议。

sh_luoqiang 回答:我们如何使用python找到两个不同的n-gram之间的上下文相似性?

您可以考虑使用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维向量,并为每个文本加总。

现在您可以使用余弦相似度或任何其他相似度度量。

本文链接:https://www.f2er.com/3167078.html

大家都在问