# 获取日志信息 logging . basicConfig ( format = '%(asctime)s:%(levelname)s:%(message)s' , level = logging . INFO ) # 加载分词后的文本,使用的是Text8Corpus类 sentences = word2vec . Text8Corpus ( r 'F:\sougou_cutdata\corpus.txt' ) # 训练模型,部分参数如下 model = word2vec . Word2Vec ( sentences , size = 100 , hs = 1 , min_count = 1 , window = 3 ) # 模型的预测 print ( '-----------------分割线----------------------------' ) # 计算两个词向量的相似度 try : sim1 = model . similarity ( u '中央企业' , u '事业单位' ) sim2 = model . similarity ( u '教育网' , u '新闻网' ) except KeyError : sim1 = 0 sim2 = 0 print ( u '中央企业 和 事业单位 的相似度为 ' , sim1 ) print ( u '人民教育网 和 新闻网 的相似度为 ' , sim2 ) print ( '-----------------分割线---------------------------' ) # 与某个词(李达康)最相近的3个字的词 print ( u '与国资委最相近的3个字的词' ) req_count = 5 for key in model . similar_by_word ( u '国资委' , topn = 100 ) : if len ( key [ 0 ] ) == 3 : req_count -= 1 print ( key [ 0 ] , key [ 1 ] ) if req_count == 0 : break print ( '-----------------分割线---------------------------' ) # 计算某个词(侯亮平)的相关列表 try : sim3 = model . most_similar ( u '新华社' , topn = 20 ) print ( u '和 新华社 与相关的词有:\n' ) for key in sim3 : print ( key [ 0 ] , key [ 1 ] ) except : print ( ' error' ) print ( '-----------------分割线---------------------------' ) # 找出不同类的词 sim4 = model . doesnt_match ( u '新华社 人民教育出版社 人民邮电出版社 国务院' . split ( ) ) print ( u '新华社 人民教育出版社 人民邮电出版社 国务院' ) print ( u '上述中不同类的名词' , sim4 ) print ( '-----------------分割线---------------------------' ) # 保留模型,方便重用 model . save ( u '搜狗新闻.model' ) # 第一种加载方式 model2 = word2vec . Word2Vec . load ( '搜狗新闻.model' ) # 第二种加载方式 model = gensim . models . KeyedVectors . load_word2vec_format ( 'E:/word2vec/news_12g_baidubaike_20g_novel_90g_embedding_64.bin' , binary = True ) # 以一种c语言可以解析的形式存储词向量 # model.save_word2vec_format(u"书评.model.bin", binary=True) # 对应的加载方式 # model_3 =word2vec.Word2Vec.load_word2vec_format("text8.model.bin",binary=True) # -*- coding: utf-8 -*- from gensim.models import word2vecimport logging ##训练word2vec模型 # 获取日志信息logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s', level=logging.INFO) # 加载... import gensim from gensim .models import word2vec , Word2Vec model = gensim .models. Word2Vec (sentences, min_count=1, size=20) sentences = How to Sound Like a Data Scientist Types of Data The Five Steps of Data Science Basic Mathematics 有关doc2vec算法的详细信息,请参见论文。 创建一个DeWiki数据集 Doc2vec是一种无监督的学习算法,并且可以使用任何文档集来 训练 模型 。 文档可以是简短的140个字符的推文,单个段落(如文章摘要,新闻文章或书籍)中的任何内容。 对于德国人来说,一个好的基线是使用 训练 模型 。 下载最新的DeWiki转储: wget http://download.wikimedia.org/dewiki/latest/dewiki-latest-pages-articles.xml.bz2 提取内容: wget http://medialab.di.unipi.it/Project/SemaWiki/Tools/WikiExtractor.py python WikiExtractor.py -c -b 2 本文所采用的语料库为复旦中文文本分类语料库,包含20个类别。具体代码和资源点此进行下载 2. 文件 读取 首先,我们先完成 读取 一篇文本文档,去除stopwords,只保留中文字符后进行分词。以下代码包括两个函数: extract_words_one_file()可以对单个文件进行处理,提取所有中文分词并返回值。 单个文档实现功能之后,我们想要遍历文件夹下的所有文本文件并进行处理。extract_words_folder()可以实现此功能,并以制定格式和要求保存数据。 建议在看此部分代码之前 连续词袋 模型 CBOW(Continuous Bag of-Words) CBOW 模型 是给神经网络传入上下文词汇,然后预测目标词汇。 比如我们有一个用于 训练 的句子是“我爱北京天安门“,可以给 模型 传入“爱”和“天安门“,然后用”北京“作为要预测的目标词汇。 而最简单的CBOW 模型 就是传入前一个词然后再预测后一个词。 Skip-Gram Skip-Gram 模型 是给神经网络传入一个词汇,然后预测其上下文词汇。 PyTorch实现(乞丐版) pos_file_list = os.listdir('data/pos') neg_file_list = os.listdir('data/neg') pos_file_list = [f'data/pos/{x}' for x in pos_file_list] neg_file_list = [f'data/neg/{x}' for x in neg import gensim from gensim .models import Word2Vec from gensim .models. word2vec import LineSentence # 忽略警告... import logging logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s',level=logging.INFO) Word2vec 是一种基于神经网络的而且被广泛使用的算法,也可以看成“深度学习”的一种算法,虽然它本身层次可能并不深。 Word2vec 通过使用大量的没有注释过的文本,自动的学习单词之间的 搜狗实验室的搜狗新闻语料库官方链接:点击打开官方链接 二、下载语料库数据,首先下拉找到迷你版(样例数据, 110KB),然后点击第一个红色箭头指向的红色框内容(tar.gz格式),自己选择好保存文件的途径之后点击第二个红色箭头指向的红色框内容(保存)。注意:下载来的文件名是“news_sohusite_xml.smarty.tar.gz”。 三、首先按键盘“windows键+r”打开资源管理器 ,在打开栏输入“cmd”然后点击“确定”。然后通