Python 3.x 如何使用python在两个不同的n-gram之间找到上下文相似性?

Python 3.x 如何使用python在两个不同的n-gram之间找到上下文相似性?,python-3.x,machine-learning,nlp,similarity,Python 3.x,Machine Learning,Nlp,Similarity,比如说,, 假设我们有两个单词,“great”和“very good”,它们在上下文上彼此相似,但它们是不同的n-gram(“great”是单格,而“very good”是bigram)。我需要一些关于如何构建NLP模型的建议,该模型可以对它们之间的相似性进行评分。您可以考虑使用word2vec对文本进行编码 你可以在谷歌新闻上使用预训练模型 wget https://s3.amazonaws.com/dl4j-distribution/GoogleNews-vectors-negative30

比如说,,
假设我们有两个单词,“great”和“very good”,它们在上下文上彼此相似,但它们是不同的n-gram(“great”是单格,而“very good”是bigram)。我需要一些关于如何构建NLP模型的建议,该模型可以对它们之间的相似性进行评分。

您可以考虑使用word2vec对文本进行编码

你可以在谷歌新闻上使用预训练模型

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维向量中的所有单词,并为每个文本相加


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

这个问题对于这个地方来说太广泛了,对不起!欢迎来到SO,这是关于具体的编码问题,而不是建议、建议或讨论论坛;你的问题太宽泛了,请花点时间阅读并回答。