Word2Vec词向量训练、使用及可视化操作

本文介绍了如何使用gensim库训练Word2Vec词向量,结合cnews数据集进行处理,去除停用词,然后训练词向量模型并进行可视化。在训练过程中,对代码进行了详细解释,包括数据预处理、模型训练、词向量使用和词向量降维可视化。文章还记录了在不同环境下遇到的问题和解决办法。

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

参考链接:Word2Vec词向量训练、使用及可视化操作
  gensim=3.5    matplotlib=3.4
  数据采用中文文本分类数据集—cnews数据集,该数据中含有标签、内容。这里我们仅取内容,对内容进行处理。
  cnews数据集下载:链接:cnews数据集   提取码:iuna
  中文停用词链接:用于中文文本分类的中文停用词

1.输入数据处理
  jieba分词----->去掉停用词----->去除’['、']'逗号单引号、行末尾换行符----->以UTF-8保存为.txt文本格式。如下图所示。
在这里插入图片描述

  代码如下所示:

import re
import jieba as jb
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 读取原始文本信息
sentences = []
for line in open("cnews.txt", "r", encoding="utf-8"):
    items = line.split('\t')
    _, sentence = items[0], items[1]
    sentences.append(sentence)


# (1)首先定义一个函数,删除除字母、数字和汉字以外的所有符号,并保存在clear1_sentences中,为后期进行jieba分词做初步准备
def remove_punctuation(readline):
    line_1 = str(readline)
    if line_1.strip() == '':
        return ''
    rule = re.compile(u"[^a-zA-Z0-9\u4E00-\u9FA5]")
    line_1 = rule.sub('', line_1)
    return line_1


clear1_sentences = []
for sentence in sentences:
    clear1_sentences.append(remove_punctuation(sentence))


# (2)然后进行jieba分词,通过停用词表,对clear1_sentences进行二次清洗
# (2.1)加载停用词表
stopwords = [line.strip() for line in open("chinesStopWords.txt", encoding='utf-8').readlines()]

# (2.2)进行jieba分词,并过滤停用词,之后保存在clear2_sentences中
clear2_sentences = []
print('--------------------------------')
for sentence in clear1_sentences:
    flag_sentence = []
    for w in list(jb.cut(sentence)):
        if w not in stopwords:
            flag_sentence.append(w)
    clear2_sentences.append(flag_sentence)

# (2.3)分词之后,还存在'['、']'、逗号、单引号、末尾换行符,需要进行三次清洗去除这些符号,并保存在'分词处理后的文本.txt'的文本中。注意:以utf-8进行保存。
with open('分词处理后的文本.txt', 'w', encoding='utf-8') as f:
    for i in range(len(clear2_sentences)):
        s = str(clear2_sentences[i]).replace('[', '').replace(']', '')  # 去除‘[’和‘]’,这两行按数据不同,可以选择
        s = s.replace("'", '').replace(',', '') + '\n'  # 去除单引号,逗号,每行末尾追加换行符
        f.write(s)

2.词向量训练
  通过LineSentence(open('分词处理后的文本.txt', 'r', encoding='utf8'))对分词后的文本数据进行读取。使用LineSentence方法可避免前期构建语料的复杂性。然后就是模型训练、保存。代码如下:

from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence

model = Word2Vec(
    LineSentence(open('分词处理后的文本.txt', 'r', encoding='utf8')),
    sg=0,
    size=100,
    window=3,
    min_count=1,
    workers=8)

# 模型保存
model.save('train.model')

3.词向量使用
  加载模型,代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明德zhuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值