word2vec相似度计算代码
时间: 2023-12-14 22:31:44 浏览: 93
以下是使用word2vec计算相似度的Python代码示例:
```python
import warnings
warnings.filterwarnings('ignore')
from gensim import models
# 加载预训练好的模型
model = models.word2vec.Word2Vec.load('wiki.model')
# 计算两个单词的余弦相似度
word1 = '中国'
word2 = '美国'
similarity = model.wv.similarity(word1, word2)
print("'%s'和'%s'的余弦相似度为:%.4f" % (word1, word2, similarity))
# 计算两个句子的余弦相似度
sentence1 = '我喜欢吃苹果'
sentence2 = '他喜欢吃香蕉'
words_list1 = sentence1.split()
words_list2 = sentence2.split()
similarity = model.wv.n_similarity(words_list1, words_list2)
print("'%s'和'%s'的余弦相似度为:%.4f" % (sentence1, sentence2, similarity))
```
相关问题
word2vec余弦相似度代码
以下是使用gensim库计算word2vec余弦相似度的示例代码:
```python
from gensim.models import Word2Vec
import numpy as np
# 加载训练好的word2vec模型
model = Word2Vec.load("your_model_path")
# 定义两个词
word1 = "apple"
word2 = "banana"
# 计算两个词的余弦相似度
similarity = np.dot(model[word1], model[word2]) / (np.linalg.norm(model[word1]) * np.linalg.norm(model[word2]))
print("余弦相似度为:", similarity)
```
其中,`your_model_path`需要替换为你自己训练好的word2vec模型文件路径。如果你还没有训练好的模型,可以使用gensim库中的`Word2Vec`类进行训练,具体方法可以参考gensim官方文档。
word2vec计算句子相似度的代码
以下是使用word2vec计算两个句子相似度的示例代码(使用Python和gensim库):
```python
from gensim.models import Word2Vec
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
# 加载预训练的word2vec模型
model = Word2Vec.load("path/to/word2vec/model")
# 定义函数计算两个句子的向量表示
def sentence_vector(sentence, model):
# 将句子分词并去掉停用词等无用词汇
words = [w for w in sentence.split() if w in model.wv.vocab]
# 如果句子中所有词汇都不在词向量模型中,则返回0向量
if len(words) == 0:
return np.zeros(300)
# 计算句子中所有词汇的词向量表示的平均值作为句子的向量表示
else:
return np.mean(model[words], axis=0)
# 计算两个句子的向量表示
sentence1 = "Hello world"
sentence2 = "Hi there"
vector1 = sentence_vector(sentence1, model)
vector2 = sentence_vector(sentence2, model)
# 计算两个句子的余弦相似度
similarity = cosine_similarity([vector1], [vector2])[0][0]
print("Similarity between '{}' and '{}': {}".format(sentence1, sentence2, similarity))
```
上述代码中,我们首先加载了预训练的word2vec模型。然后定义了一个函数`sentence_vector`,用于计算一个句子的向量表示。该函数首先将句子分词并去掉停用词等无用词汇,然后计算句子中所有词汇的词向量表示的平均值作为句子的向量表示。如果句子中所有词汇都不在词向量模型中,则返回0向量。接下来,我们使用`sentence_vector`函数计算了两个句子的向量表示,并使用`cosine_similarity`函数计算了它们的余弦相似度。最后,我们将计算结果打印出来。
需要注意的是,上述代码中的词向量维度为300,如果你的word2vec模型中的词向量维度不同,需要相应地修改代码。
阅读全文