logging
.
basicConfig
(
format
=
'%(asctime)s:%(levelname)s:%(message)s'
,
level
=
logging
.
INFO
)
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
(
'-----------------分割线---------------------------'
)
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
)
# -*- 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”然后点击“确定”。然后通