1、项目3深入文本进阶处理WOrd2Vec词向量的训练1实训目标(1)掌握PandaS库的数据读取流程。(2)掌握使用jieba库对中文文本进行预处理的流程。(3)掌握使用Gensim库的Word2Vec模块对文本数据进行向量化处理。2实训环境环境版本说明Windows1064电脑操作系统Python3.8.5Python语言版本pandas1.3.0主要用于数据读取、清洗等操作NumPy1.21.6主要用于Python中的数值计算jieba0.42.1主要用于文本分词Gensim4.2.0主要用于检索文本、计算文本相似度、训练词向量、建模主题等Matplotlib3.3.0主要用于数据可视化Pa
2、ddlePaddle2.4.2是一个深度学习框架,提供了高效的计算框架和优化算法PaddleSpeech1.2.0主要用于语音和音频中的各种关键任务的开发scikit-learn1.0.2广泛地用于统计分析和机器学习建模等数据科学领域Librosa0.8.1主要用于分析一般的音频信号,是一个非常强大的Python语音信号处理的第三方库NLTK3.5是一个常用的自然语言处理工具包,可用于文本处理、语义分析、词性标注等SciPy1.7.3是一个科学计算工具包,可用于数学、科学、工程学等领域pyttsx32.9.0主要用于将文本转换成语音3实训说明在实际应用中,Word2Vec模型通常是预训练的,然
3、后在下游任务中进行微调。例如,在自然语言处理任务中,可以将Word2Vec模型用于词向量的表示,然后将这些向量输入到分类器或者其他模型中,以完成各种自然语言处理任务。在使用WOrd2Vec模型进行词向量训练时,通常可以使用开源工具库如GenSim、PytorCh等来实现。这些工具库提供了一系列接口和函数,使用Gensim库可以很方便地实现Word2Vec模型的训练和使用。本任务使用从搜狐网站中爬取到的新闻数据,包含的特征为新闻内容和新闻类别,共计1999条数据,部分数据如表3-1所示,对Word2Vec模型进行训练。表3-1新闻数据信息(部分数据)新闻内容新闻类别昨天下午,广州市政府常务会议审
4、议通过广州市综合交通发展第十三个五年规划。“十旅游昨天开始进入“黄金周”很想出去玩又怕人人人人人又不想天天在家葛优躺旅游昨天,微博博主“小5啊”发起了一个征集一一有一种尴尬叫做:给你看看当年你写给教育昨日,省教育考试院发布了关于广东省2016年普通高等学校招生专业目录更正及增补的通教育最新消息:喜大普奔!国务院日前批复同意将惠州市列为国家历史文化名城啦!继广旅游*1、潮河4实训步骤4.1 数据读取数据格式为CSV文件,可以使用Python中的pandas库中的read_csv函数读取数据集。文本数据读取如代码4-1所示。代码4-1数据读取importreimportpandasaspdimpo
5、rtjiebaimportgensimfromgensim.modelsimportWord2Vec#加载Word2Vec模块训练词向量fromgensim.models.word2vecimportLineSentencedata=pd.read-csv(,.datanew.csvheader=None)data.columns=新闻内容,新闻类别4.2 文本数据预处理在数据读取的基础上,对文本数据进行预处理的工作,其中包括文本去重、分词、去停用词等环节,以便为后续WOrd2Vec模型训练打下基础。文本数据预处理如代码4-2所示代码4-2文本数据预处理# 数据预处理temp=data.con
6、tents# 去重temp.duplicated().sum()data_dup=temp.drop_duplicates()# 分词data_cut=data_dup.astype(str).apply(lambdax:list(jieba.cut(x)# 去停用词# 读取停用词文件stopword=pd.read-csv(,.datastopword.txt,sep=oooencoding=,gbk,header=None,engine-python)stopword=+list(stopword0)#将停用词转为列表形式13=data_cut.astype(str).apply(lamb
7、daX:len(x).sum()#统计数据分词后的总词数data_qustop=data-cut.apply(lambdax:iforiinxifinotinstopword)#册除停用词data_qustop=data_qustop.lociforiindata_qustop.indexifdata_qustopi!=#删除空列表space=u3000,xa,#定义需要删除的空格字符data_qustop=data_qustop.apply(lambdax:iforiinxifinotinspace)#删除空格字符PrimC处理后的数据:H,data-qustop.head()data_qu
8、stop.to_csv(./tmp/data_qustop.csv)#将处理后的数据保存到文件中运行文本数据预处理代码,得到处理后的数据如下。处理后的数据:01昨天下午,广州市政府,常务会议,审议,广州市,综合,交通,发展,第十三个1 (昨天,黄金周,很想,出去玩,怕人,不想,天天,在家,葛优,躺,辣,地2 (昨天,微博博主,发起,征集,一种,尴尬,当年,写给,同学录,暴露,年龄3 昨日,省,教育,考试院,发布,广东省,2016,年,高等学校,招生,专4 (最新消息,喜大普奔,国务院,日前,批复,同意,惠州市,列为,国家,历史Name:新闻内容,dtype:object4.3Word2Vec训
9、练词向量输出样例文本的Word2Vec向量表达形式,如代码4-3所示。代码4-3Word2Vec模型训练# 打开保存有训练数据的文件news=OPen(.tmpWord2vec_train_words.txt,T,encoding-utf-8,)# 使用WOrd2Vec模型训练词向量model=Word2Vec(LineSentence(news),sg=O,size=192,window=5,min_count=5,workers=9)# 输出“新年”的WOrd2Vec向量值Print(输出“新年”的Word2Vec向量值:H,model.wv新年VI)在代码4-3中,使用到gensim.m
10、odels中的Word2Vec函数训练词向量,其中Word2Vec函数的参数说明如表41所示。表4-1Word2Vec函数的参数说明参数名称参数说明sentences可接收list,表示训练模型的文本数据。无默认值Sg接收int,表示训练算法的选择:0表示使用CBoW(ContinuousBagofWords)算法,1表示使用SkiP-gram算法。默认为0size接收int,表示词向量的维度,较大的SiZe值可以提高模型的准确性,但也可能导致更长的训练时间和更多的内存占用。默认为100window接收int,表示上下文窗口大小,即在训练过程中,一个词与其前后多少个词共同出现的次数会被考虑,较
11、大的窗口值可以捕捉到更远的词汇关系。默认为5min_count接收int,表示词频阈值,小于该值的单词将被丢弃。默认为5workers接收int,表示并行计算时的线程数。默认为3运行Word2Vec模型的词向量训练代码,得到的词向量矩阵如下。输出“新年”的Word2Vec向量值:-0.0181290.04685803-0.051988360.001527930.063403120.03289583-0.035291890.087941390.043727620.04395557-0.01201346-0.014867-0.02041341-0.0102681-0.026343650.055995980.026916230.02988985-0.00467658-0.00018748-0.040576790.011594160.087698340.004431365实训小结技术点自评达标未达标能够通过pandas库读取文本数据能够使用jieba库对文本进行分词能够使用Gensim库训练Word2Vec词向量心得体会(如遇到的问题及解决方法、存在的不足之处等):