- 🍨 本文为🔗365天深度学习训练营中的学习记录博客
- 🍖 原作者:K同学啊|接辅导、项目定制
目录
一、课题背景和开发环境
📌第N3周:调用Gensim库训练Word2Vec模型📌
- Python 3.8.12
- gensim==4.3.1
- numpy==1.21.5 -> 1.24.3
- portalocker==2.7.0
- pytorch==1.8.1+cu111
- torchtext==0.9.1
📌本周任务:📌
- 阅读NLP基础知识里Word2vec详解一文,了解并学习Word2vec相关知识
- 学习本文内容,在下一篇文章中,将使用Word2vec辅助完成文本分类任务
数据集:
in_the_name_of_people.txt
二、准备工作
1. 安装Gensim库
pip install gensim
Collecting gensim
Downloading gensim-4.3.1-cp38-cp38-win_amd64.whl (24.0 MB)
|████████████████████████████████| 24.0 MB 1.7 MB/s
Requirement already satisfied: numpy>=1.18.5 in d:\programdata\anaconda3\envs\pytorch\lib\site-packages (from gensim) (1.21.5)
Collecting smart-open>=1.8.1
Downloading smart_open-6.3.0-py3-none-any.whl (56 kB)
|████████████████████████████████| 56 kB 2.0 MB/s
Requirement already satisfied: scipy>=1.7.0 in d:\programdata\anaconda3\envs\pytorch\lib\site-packages (from gensim) (1.8.0)
Installing collected packages: smart-open, gensim
Successfully installed gensim-4.3.1 smart-open-6.3.0
2. 对原始语料分词
选择《人民的名义》的小说原文作为语料,先采用jieba进行分词。
拿到了分词后的文件,在一般的NLP处理中,会需要去停用词。由于word2vec的算法依赖于上下文,而上下文有可能就是停词。因此对于word2vec,我们可以不用去停词,仅仅去掉一些标点符号,做一个简单的数据清洗。
import jieba
import jieba.analyse
def BuildPrefixDict(txtfilepath):
# 加入一些词(人名),使得jieba分词准确率更高
jieba.suggest_freq('沙瑞金', True)
jieba.suggest_freq('田国富', True)
jieba.suggest_freq('高育良', True)
jieba.suggest_freq('侯亮平', True)
jieba.suggest_freq('钟小艾', True)
jieba.suggest_freq('陈岩石', True)
jieba.suggest_freq('欧阳菁', True)
jieba.suggest_freq('易学习', True)
jieba.suggest_freq('王大路', True)
jieba.suggest_freq('蔡成功', True)
jieba.suggest_freq('孙连城', True)
jieba.suggest_freq('季昌明', True)
jieba.suggest_freq('丁义珍', True)
jieba.suggest_freq('郑西坡', True)
jieba.suggest_freq('赵东来', True)
jieba.suggest_freq('高小琴',