Python中如何通过load_word2vec_format()函数导入中文词向量模型
发布时间:2024-01-05 04:52:59
要在Python中导入中文词向量模型,首先需要安装Gensim和Jieba库。Gensim是一个优秀的自然语言处理库,而Jieba是一个流行的中文分词库。
以下是一个简单的使用例子:
from gensim.models import Word2Vec
from gensim.models.keyedvectors import KeyedVectors
import jieba
# 加载词向量模型
model = KeyedVectors.load_word2vec_format('path/to/word2vec/model.bin', binary=True)
# 或者加载.text文件模型
# model = KeyedVectors.load_word2vec_format('path/to/word2vec/model.txt', binary=False)
# 加载停用词列表
stopwords = []
with open('path/to/stopwords.txt', 'r', encoding='utf-8') as f:
stopwords = [line.strip() for line in f]
# 分词函数
def cut_sentence(sentence):
words = jieba.cut(sentence)
return [word for word in words if word not in stopwords]
# 计算两个词的相似度
similarity = model.similarity('词1', '词2')
print('词1和词2的相似度:', similarity)
# 找出和指定词语最相似的前n个词
similar_words = model.similar_by_word('词1', topn=10)
print('与词1最相似的10个词:', similar_words)
# 寻找不同类的词语
dissimilar_words = model.doesnt_match(['词1', '词2', '词3', '词4'])
print('与其他词不同类的词:', dissimilar_words)
# 找出和指定词语一起出现的词
co_occurrence_words = model.most_similar(positive=['词1', '词2'], negative=['词3'], topn=10)
print('与词1和词2一起出现的词:', co_occurrence_words)
# 计算词语的词向量
word_vector = model['词1']
print('词1的词向量:', word_vector)
# 寻找不同类的词语
dissimilar_words = model.doesnt_match(['苹果', '香蕉', '梨子', '汽车'])
print('与其他词不同类的词:', dissimilar_words)
在上面的例子中,我们首先导入Word2Vec和KeyedVectors类,然后使用load_word2vec_format()函数加载中文词向量模型。你需要将'path/to/word2vec/model.bin'替换为你下载的中文词向量模型的路径。如果你的模型文件是以.text格式保存的,可以使用.load_word2vec_format()函数的binary参数来指定是否为二进制格式。
然后,我们通过导入Jieba库来实现中文分词。在切分文本之前,我们还可以加载停用词列表,以去除一些常见的无意义词语。
接下来,我们可以使用模型的不同方法来探索和操作词向量。比如计算两个词的相似度、找到与一个词最相似的词、寻找不同类的词语等。
最后,我们还演示了如何计算单个词语的词向量,以及如何将词向量用于推断两个词之间的关系。
请注意,以上示例仅仅是给出了一些常见的用法,Gensim还提供了更多强大的功能和方法。你可以参考Gensim官方文档来获取更详细的信息:https://radimrehurek.com/gensim/index.html
