一.下载中文维基百科数据https://dumps.wikimedia.org/zhwiki/
并使用gensim中的wikicorpus解析提取xml中的内容

二.利用opencc繁体转简体

三.利用jieba对转换后的文本进行分词,去停词

四.利用gensim中的word2vec训练分词后的文本

五.测试

python代码如下:

#!/user/bin/python
#coding:utf-8
__author__ = 'yan.shi'
from gensim.corpora import WikiCorpus
import opencc
import jieba
import codecs
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence
import multiprocessing '''
读取中文wiki语料库,并解析提取xml中的内容
'''
def dataprocess():
space=b' '
i=0
output=open('E:\zhwiki-articles.txt','wb')
wiki=WikiCorpus('E:\zhwiki-latest-pages-articles.xml.bz2',lemmatize=False,dictionary={})
for text in wiki.get_texts():
output.write(space.join(text)+b'\n')
i=i+1
if(i%10000==0):
print('Saved '+str(i)+' articles')
output.close()
print('Finished Saved '+str(i)+' articles') '''
加载停用词表
'''
def createstoplist(stoppath):
print('load stopwords...')
stoplist=[line.strip() for line in codecs.open(stoppath,'r',encoding='utf-8').readlines()]
stopwords={}.fromkeys(stoplist)
return stopwords '''
过滤英文
'''
def isAlpha(word):
try:
return word.encode('ascii').isalpha()
except UnicodeEncodeError:
return False '''
opencc繁体转简体,jieba中文分词
'''
def trans_seg():
stopwords=createstoplist('E:\stopwords.txt')
cc=opencc.OpenCC('t2s')
i=0
with codecs.open('E:\zhwiki-segment.txt','w','utf-8') as wopen:
print('开始...')
with codecs.open('E:\wiki-utf8.txt','r','utf-8') as ropen:
while True:
line=ropen.readline().strip()
i+=1
print('line '+str(i))
text=''
for char in line.split():
if isAlpha(char):
continue
char=cc.convert(char)
text+=char
words=jieba.cut(text)
seg=''
for word in words:
if word not in stopwords:
if len(word)>1 and isAlpha(word)==False: #去掉长度小于1的词和英文
if word !='\t':
seg+=word+' '
wopen.write(seg+'\n')
print('结束!') '''
利用gensim中的word2vec训练词向量
'''
def word2vec():
print('Start...')
rawdata='G:\python workspace\zhwiki-segment.txt'
modelpath='G:\python workspace\modeldata.model'
#vectorpath='E:\word2vec\vector'
model=Word2Vec(LineSentence(rawdata),size=400,window=5,min_count=5,workers=multiprocessing.cpu_count())#参数说明,gensim函数库的Word2Vec的参数说明
model.save(modelpath)
#model.wv.save_word2vec_format(vectorpath,binary=False)
print("Finished!") def wordsimilarity():
model=Word2Vec.load('E:\word2vec\modeldata.model')
semi=''
try:
semi=model.most_similar('日本'.decode('utf-8'),topn=10)#python3以上就不需要decode
except KeyError:
print('The word not in vocabulary!') #print(model[u'日本'])#打印词向量
for term in semi:
print('%s,%s' %(term[0],term[1])) if __name__=='__main__':
#dataprocess()
#trans_seg()
#word2vec()
wordsimilarity()

日本的相关词:

最新文章

  1. 初探ECMAScript6
  2. 每天一个linux命令(22):find 命令的参数详解
  3. AOP的实现机制
  4. 控件 UI: StateTrigger
  5. windows下安装使用Composer记录
  6. Last-Modify和Etag
  7. Java 正则表达式[转载]
  8. Office 365 - SharePoint Tips & Tricks
  9. JavaScript 使用 sort() 方法从数值上对数组进行排序
  10. python学习笔记四 迭代器,生成器,装饰器(基础篇)
  11. delphi7如何实现 科学计数的转换。 比如我输入2,触发之后会转换成2.000000E+00.求赐教
  12. 基于ArcEngine与C#的鹰眼地图实现
  13. collectionView布局原理及瀑布流布局方式--备用
  14. Linux 系统库函数coreleft 与sbrk简介
  15. [LeetCode]题解(python):072-Edit Distance
  16. File类实现文件夹和文件复制
  17. 《Mysql 分区分表》
  18. BloodHound官方使用指南
  19. [Aaronyang] 写给自己的WPF4.5 笔记8[复杂数据处理三步曲,数据视图精讲1/3]
  20. 【BZOJ】1830: [AHOI2008]Y型项链

热门文章

  1. .Net Core 中使用NLog作为日志中间件
  2. java基础:强引用、弱引用、软引用和虚引用 (转)
  3. Linux实用命令及技巧
  4. 写两个线程,一个线程打印1-52,另一个线程打印A-Z,打印顺序为12A34B56C......5152Z
  5. NLP 基于kashgari和BERT实现中文命名实体识别(NER)
  6. 11、Nginx反向代理服务
  7. DHCP服务部署
  8. 关于Linux单机、集群部署FastDFS分布式文件系统的步骤。
  9. Linux中的Mariadb数据库的主备
  10. ros 配置网卡