机器学习-大作业 词嵌入.docx

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

内蒙古工业大学数据科学与应用学院

机器学习课程实验报告

姓名:张国林

学号:20231100537

班级:23级网安

日期:2024.1.14

一、实验内容

词嵌入。实现word2vec中的Skip-gram模型。

二、实验环境

在实验进行的环境为IntelCorei5-10500×6处理器,12G运行内存,NvidiaRTX2060SUPER显卡。网络基于pytorch1.8.1框架进行搭建,编程环境为Python3.7.16.

三、数据集介绍

原始新闻数据集为news.txt.

以新闻分类为目标,具体内容如下

实验方案

使用的是skip-gram模型来进行词嵌入。

拿到news.txt数据集后处理思路如下:

实现是一种非end-end的算法,每个中间步骤的输出都会对最后的输出有很大影响。word2vec是连接词和embedding的桥梁,决定着最终算法的上下限,这也是非end-end算法的缺点。word2vec的输入是分词后的结果,处理输入数据:

最后计算相似度构建损失函数,每个词语的embedding是由id查表得到的。

Word2vec就是利用最大似然估计来求解某一现象(即用背景词估计中心词)发生概率最大时的参数(wordembedding)问题。在skip-gram模型中对应的正样本是中心词的window_size里的背景词,而负样本又称噪声词,可以是词典中任意词,一般依照词频来选择。通过负样本和正样本分别对输入(即中心词)计算相似度来设计loss,负采样主要解决计算词典中的词与中心词的相似度计算量过大问题。不加入负采样计算相似度时,要遍历整个字典,计算复杂度为n(V),V为词典大小,通过负采样可以用预先设定的负样本取值neg_count来bound住计算范围。

主要代码

原始新闻数据集为news.txt,先进行数据预处理得到分词后的文件:

importjieba

importpandasaspd

fromsklearnimportpreprocessing

importre

importnumpyasnp

fromcollectionsimportdeque

importoperator

np.random.seed(0)

classDataPreprocess():

def__init__(self,inputdata_path,stopword_path):

self.dataed,self.labeled=self.dataload(inputdata_path,stopword_path)

defdataload(self,inputdata_path,stopword_path):

train_data=pd.read_csv(inputdata_path,delimiter=\t,

lineterminator=\n,encoding=UTF-8,header=None)

rawlabellist=[]

datalist=[[]for_inrange(train_data.shape[0])]

foriinrange(train_data.shape[0]):

rawlabellist.append(train_data.iloc[i,0])

labellist=preprocessing.LabelEncoder().fit_transform(rawlabellist)

foriinrange(train_data.shape[0]):

datalist[i]=train_data.iloc[i,1]

withopen(stopword_path,r,encoding=UTF-8)asf:

self.stopword=[]

forlineinf.readlines():

self.stopword.append(line.strip())

returndatalist,labellist

defstopworddelete(self,sentence):

word_n

文档评论(0)

186****4116 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档