gensim训练词向量

gensim训练词向量

# -*- coding: utf-8 -*-
# @Time    : 2020/7/7 12:41
# @Author  : WngXng

import jieba
from gensim.models import word2vec
import gensim
import warnings
warnings.filterwarnings("ignore")


# 对初始语料进行分词处理后,作为训练模型的语料
with open("corpus.txt", 'r', encoding='utf-8') as f:
    text = f.read()  # 将整个文件的所有内容读做一个字符串

    wordList = jieba.cut(text)
    wordText = " ".join(wordList)
    wordText = wordText.replace(',', '').replace('。', '').replace('?', '')\
    .replace('!', '').replace('“', '').replace('”', '').replace(':', '')\
    .replace('…', '').replace('(', '').replace(')', '').replace('—', '')\
    .replace('《', '').replace('》', '').replace('、', '').replace('‘', '')\
    .replace('’', '')

with open("corpus_cut.txt", 'w', encoding='utf-8') as f:
    f.write(wordText)

# 文本必须是分好词的, 词与词之间有间隔
sentences = word2vec.Text8Corpus("corpus_cut.txt")  
print("sentences格式:", sentences)
###  <gensim.models.word2vec.Text8Corpus object at 0x0000026359A46408>

# 训练 skip-gram 模型
model = gensim.models.Word2Vec(sentences, size=20, min_count=2, 
	window=3, iter=15)

### 1 保存一般模型
model.save('11.model')

model_1 = word2vec.Word2Vec.load('11.model')
print("模型1:", model_1)

print("两个词的相似度为:", model_1.wv.similarity("热火", "湖人"))
print("两个词的相似度为:", model_1.wv.similarity("热火", "北京"))
# 计算某个词的相关词列表
top_n = model_1.wv.most_similar("科比", topn=3)  # 最相关的几个词
print("top_n格式:",  top_n)

name_list = ["热火", "湖人", "凯尔特人", "北京"]
print("当中最不相关的词:", model_1.doesnt_match(name_list))



### 第二种方法 以保存词向量的方式保存模型 二进制
model.wv.save_word2vec_format('22.bin', binary=True)

# 通过加载词向量加载模型模型
model_2 = gensim.models.KeyedVectors.load_word2vec_format('22.bin', binary=True)
print("\n模型2:", model_2)
print("两个词的相似度为:", model_2.similarity("热火", "湖人"))
print("两个词的相似度为:", model_2.similarity("热火", "北京"))

# 计算某个词的相关词列表
top_n = model_2.wv.most_similar("湖人", topn=3)  # 最相关的几个词
print("湖人top_n格式:", top_n)

name_list = ["热火", "湖人", "凯尔特人", "北京"]
print("当中最不相关的词:", model_2.doesnt_match(name_list))



### 第三种方式 保存词向量 与第二种方法相同 只是非二进制文件
model.wv.save_word2vec_format('33.txt', binary=False)

### 加载模型
model_3 = gensim.models.KeyedVectors.load_word2vec_format('33.txt', binary=False)
print("\n模型3:", model_3)
print("两个词的相似度为:", model_3.similarity("热火", "湖人"))
print("两个词的相似度为:", model_3.similarity("热火", "北京"))

# 计算某个词的相关词列表
top_n = model_3.wv.most_similar("科比", topn=3)  # 最相关的几个词
print("top_n格式:", top_n)

name_list = ["热火", "湖人", "凯尔特人", "北京"]
print("当中最不相关的词:", model_3.doesnt_match(name_list))

最原始的文件内容:

分词后的文件

方法一和方法二保存的都是二进制文件,无法查看内容, 方法三的内容为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值