中文注解版word2vec源码深度解析

版权申诉
0 下载量 120 浏览量 更新于2024-10-14 1 收藏 427KB RAR 举报
资源摘要信息:"word2vec是一种基于神经网络的语言模型,它可以捕捉到单词的语义关系,包括同义词和反义词。word2vec模型有两种主要的架构,即CBOW(Continuous Bag of Words)和Skip-Gram。CBOW模型通过给定的上下文预测目标词,而Skip-Gram模型则通过给定的目标词预测上下文。本资源为word2vec模型的实现源码,特别针对中文进行了优化,并添加了详细的中文注解,以方便理解和学习。" 在本资源中,"VEC-361 layers5cb vec361 word2vec word2vec 中文"为标题,"word2vec的实现源码,并加上中文注解!"为描述,"vec-361 layers5cb vec361 word2vec word2vec_中文"为标签。从这些信息中,我们可以了解到,这是一份关于word2vec模型的源码实现,其特点在于支持中文,并且源码中有详细的中文注解。 word2vec是一种将单词转换为向量的模型,这些向量能够反映出单词之间的语义关系。word2vec模型主要有两种架构,即CBOW和Skip-Gram。CBOW模型通过给定的上下文预测目标词,而Skip-Gram模型则通过给定的目标词预测上下文。这两种架构各有优劣,CBOW模型的训练速度较快,而Skip-Gram模型在处理罕见词和语法结构时效果更好。 word2vec模型的优点在于,它可以通过向量的运算,直观地反映出单词的语义关系。例如,向量操作“king”-“man”+“woman”得到的向量会更接近“queen”,这直观地反映了“king”和“queen”、“man”和“woman”之间的关系。 word2vec模型在自然语言处理领域有着广泛的应用。它可以用于文本分类、信息检索、问答系统等各种任务。例如,在文本分类任务中,可以通过计算文本向量和类别向量的相似度来判断文本属于哪个类别;在信息检索任务中,可以通过计算查询向量和文档向量的相似度来实现文档的检索。 本资源的文件名只有一个,即"word2vec"。这意味着该资源可能是一个包含word2vec模型源码的压缩包。由于文件名中没有包含具体的版本号或者其他详细信息,我们无法确定这个资源的具体内容。但是,根据标题和描述,我们可以推测这个资源包含了word2vec模型的实现源码,并且源码中包含了中文注解,使得中文用户更容易理解和使用word2vec模型。 总的来说,本资源是一份非常有价值的学习资料,对于希望了解和学习word2vec模型的用户来说,是一个非常值得下载和研究的资源。
2023-07-13 上传

import pandas as pd data = pd.read_csv(C:\Users\Administrator\Desktop\pythonsjwj\weibo_senti_100k.csv') data = data.dropna(); data.shape data.head() import jieba data['data_cut'] = data['review'].apply(lambda x: list(jieba.cut(x))) data.head() with open('stopword.txt','r',encoding = 'utf-8') as f: stop = f.readlines() import re stop = [re.sub(' |\n|\ufeff','',r) for r in stop] data['data_after'] = [[i for i in s if i not in stop] for s in data['data_cut']] data.head() w = [] for i in data['data_after']: w.extend(i) num_data = pd.DataFrame(pd.Series(w).value_counts()) num_data['id'] = list(range(1,len(num_data)+1)) a = lambda x:list(num_data['id'][x]) data['vec'] = data['data_after'].apply(a) data.head() from wordcloud import WordCloud import matplotlib.pyplot as plt num_words = [''.join(i) for i in data['data_after']] num_words = ''.join(num_words) num_words= re.sub(' ','',num_words) num = pd.Series(jieba.lcut(num_words)).value_counts() wc_pic = WordCloud(background_color='white',font_path=r'C:\Windows\Fonts\simhei.ttf').fit_words(num) plt.figure(figsize=(10,10)) plt.imshow(wc_pic) plt.axis('off') plt.show() from sklearn.model_selection import train_test_split from keras.preprocessing import sequence maxlen = 128 vec_data = list(sequence.pad_sequences(data['vec'],maxlen=maxlen)) x,xt,y,yt = train_test_split(vec_data,data['label'],test_size = 0.2,random_state = 123) import numpy as np x = np.array(list(x)) y = np.array(list(y)) xt = np.array(list(xt)) yt = np.array(list(yt)) x=x[:2000,:] y=y[:2000] xt=xt[:500,:] yt=yt[:500] from sklearn.svm import SVC clf = SVC(C=1, kernel = 'linear') clf.fit(x,y) from sklearn.metrics import classification_report test_pre = clf.predict(xt) report = classification_report(yt,test_pre) print(report) from keras.optimizers import SGD, RMSprop, Adagrad from keras.utils import np_utils from keras.models import Sequential from keras.layers.core import Dense, Dropout, Activation from keras.layers.embeddings import Embedding from keras.layers.recurrent import LSTM, GRU model = Sequential() model.add(Embedding(len(num_data['id'])+1,256)) model.add(Dense(32, activation='sigmoid', input_dim=100)) model.add(LSTM(128)) model.add(Dense(1)) model.add(Activation('sigmoid')) model.summary() import matplotlib.pyplot as plt import matplotlib.image as mpimg from keras.utils import plot_model plot_model(model,to_file='Lstm2.png',show_shapes=True) ls = mpimg.imread('Lstm2.png') plt.imshow(ls) plt.axis('off') plt.show() model.compile(loss='binary_crossentropy',optimizer='Adam',metrics=["accuracy"]) model.fit(x,y,validation_data=(x,y),epochs=15)

2023-06-10 上传