中文词向量训练
from gensim.models import Word2Vec
s = ["被告人 段 某 酒后 与 其 妻子 王1 某 一起 准备 回 家 , 走 到 鸡飞乡 澡塘街 富达 通讯 手机 店 门口 时 停下 , 段某 进入 手机 店 内 对 被害人 王某 进行 吼 骂 , 紧接着 从 手机 店 出 来 拿 得 一个 石头 又 冲 进 手机 店 内 朝 王某 头部 打 去 , 致 王某 右额 部 粉碎性 骨折 、 右 眼眶 骨骨折 。 经 鉴定 , 被害人 王某 此次 损伤 程度 为 轻伤 一级 。",
"被告人 李某 的 妹妹 李 某某 与 被害人 华 某某 在 桦川县 悦 来 镇 石锅 烤肉 吃饭 时 发生 口角 , 华某 某 殴打 李 某某 被 他人 拉开 。 后 李 某某 打电话 将 此 事 告知 李某 。 李某 便 开车 接 上 李 某某 在 悦 来 镇 “ 0454 饮 吧 ” 找到 华 某某 并质 问 其 因 何 殴打 李 某某 , 之后 二 人 厮打 在 一起 。 李某 用 拳头 、 巴掌 连 续击 打华 某某 脸部 , 致华 受伤 住院 治疗 。 经 桦川县 公安局 司法 鉴定 , 华 某某 所 受伤 为 轻伤 二级 。"]
sentences = [s[i].split() for i in range(len(s))]
model = Word2Vec(sentences, vector_size=200, sg=0, window=5, min_count=5, workers=4, epochs=5)
sentences需是可迭代列表形式,需提前进行预处理(分词,去停等操作),均可用jieba实现。
尤其注意gensim 4.0以后版本size被vector_size取代,iter被epochs取代。
sg ({0, 1}, optional) – Training algorithm: 1 for skip-gram; otherwise CBOW.
详细参数可见文档:https://radimrehurek.com/gensim/models/word2vec.html
模型保存
model.save("word2vec.model")
model.wv.save_word2vec_format('word2vec.vector', binary=False)
模型导入
model = Word2Vec.load('word2vec.model')
vector = model.wv['盗窃']
print(vector)
sims = model.wv.most_similar('盗窃',topn=10)
print(sims)