gensim:word2vec实战

本文介绍了一种使用jieba分词处理《人民的名义》文本,并通过gensim库训练Word2Vec词向量模型的方法。模型训练过程中,采用CBOW算法,最小词频为1,窗口大小为3,词向量维度为100。最后展示了如何利用训练好的模型进行词向量查询和相似词检索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、语料处理

import jieba

jieba.suggest_freq('沙瑞金', True)
# 避免分割特殊词
...

with open("./in_the_name_of_people.txt", encoding="utf-8") as file:
    doc = file.read()
    doc_cut = jieba.cut(doc)
    res = " ".join(doc_cut)
    with open("./cutcut.txt", 'w', encoding="utf-8") as wr:
        wr.write(res)

二、模型训练

sentences最好是嵌套列表的形式,比如 [ [‘a’, ‘b’, ‘c’, …], [‘c’, ‘d’, …], […], …]。避免把标点符号也作为训练数据。
Word2Vec类的构造函数API可以查看文档,一般需要自行设定sg(选择CBOW或SKip-Gram),hs(训练算法,hierarchical softmax或negative sampling),min_count(过滤低频词),window(滑动窗口大小),size(词向量长度)。

import logging
from gensim.models import word2vec

logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)

sentences = word2vec.LineSentence('./cutcut.txt')
# LineSentence 读入文件默认一行一句话,用空格分隔好的
model = word2vec.Word2Vec(sentences, hs=1, min_count=1, window=3, size=100)

# 模型保存和读取
model.save("./people.model")
model = Word2Vec.load("people.model")

三、测试模型

利用训练得到的词向量进行一些工作

print(model.wv['沙瑞金'])
# 直接输出词向量
print(model.wv.similarity('沙瑞金', '高育良'))
print(model.wv.similar_by_word('高育良', topn=2))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值