在搜狗实验室里下载相关语料,我下载的是全网新闻: http://www.sogou.com/labs/resource/ca.php

下下来的语料,看到有1.54G的大小:

文件大小

其中里面内容的格式为:

文本格式

刚下下来的语料是用gbk编码的,在mac或linux上都会呈乱码形式,需要将之转换为utf-8编码。而且我们只需要<content>里面的内容。因此先转换编码和获取content内容。这里简单的方法可以通过shell的命令来完成:

cat news_tensite_xml.dat | iconv -f gbk -t utf-8 -c | grep "<content>"  > corpus.txt

转换完后的数据如下:

数据语料

这时候全是content中的内容了,虽然还有<content>标签在,不过这个可以在程序中去掉。

下面一个操作就是进行分词,因为是用Python来进行的,使用jieba分词来进行分词操作,生成分词文件corpus_seg.txt:

python word_segment.py corpus.txt corpus_seg.txt

# -*- coding: utf-8 -*-
# word_segment.py用于语料分词import logging
import os.path
import sys
import re
import jiebareload(sys)
sys.setdefaultencoding( "utf-8" )# 先用正则将<content>和</content>去掉
def reTest(content):reContent = re.sub('<content>|</content>','',content)return reContentif __name__ == '__main__':program = os.path.basename(sys.argv[0])logger = logging.getLogger(program)logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')logging.root.setLevel(level=logging.INFO)logger.info("running %s" % ' '.join(sys.argv))# check and process input argumentsif len(sys.argv) < 3:print globals()['__doc__'] % locals()sys.exit(1)inp, outp = sys.argv[1:3]space = " "i = 0finput = open(inp)foutput = open(outp,'w')for line in finput:line_seg = jieba.cut(reTest(line))output.write(space.join(line_seg))i = i + 1if (i % 1000 == 0):logger.info("Saved " + str(i) + " articles_seg")finput.close()foutput.close()logger.info("Finished Saved " + str(i) + " articles")

跑起来如下:

运行结果

分完词的样子:

分词完毕,<content></content>也去掉了

接着我们可以用gensim中的word2vec工具训练:

python train_word2vec_model.py corpus_seg.txt corpus.model corpus.vector

# -*- coding: utf-8 -*-
# train_word2vec_model.py用于训练模型import logging
import os.path
import sys
import multiprocessingfrom gensim.models import Word2Vec
from gensim.models.word2vec import LineSentenceif __name__=='__main__':program = os.path.basename(sys.argv[0])logger = logging.getLogger(program)logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')logging.root.setLavel(level=logging.INFO)logging.info("running %s" % ' '.join(sys.argv))if len(sys.argv) < 4:print global()['__doc__'] % locals()sys.exit(1)inp,outp,outp2 = sys.argv[1:4]model = Word2Vec(LineSentence(inp),size=400,window=5,min_count=5,workers=multiprocessing.cup_count())model.save(outp)model.save_word2vec_format(outp2,binary=false)

运行信息如下:

正在进行中...

完毕后,即训练出了模型,这是可以测试测试模型的效果了,进入ipython:

In [1]: import gensimIn [2]: model = gensim.models.Word2Vec.load('corpus.model')In [3]: result = model.most_similar(u'警察')In [4]: for word in result:...:     print word[0],word[1]...:警员 0.668260276318
民警 0.566563367844
军警 0.560631096363
便衣警察 0.560409486294
保安 0.559458613396
交警 0.553144752979
协警 0.55225610733
公安人员 0.536189615726
警方 0.535990476608
警务人员 0.5125041008In [5]: result = model.most_similar(u'妹纸')In [6]: for word in result:...:     print word[0],word[1]...:妹子 0.588376522064
噢 0.559590697289
帅哥 0.550627946854
美眉 0.549147129059
萝莉 0.534497618675
尤物 0.525674104691
小萝莉 0.517127275467
小女生 0.508114397526
妖娆 0.506700277328
美女 0.503593623638In [7]: result = model.most_similar(u'御姐')In [8]: for word in result:...:     print word[0],word[1]...:冷艳 0.705523848534
萝莉 0.701750993729
侠女 0.645917892456
玉女 0.643954575062
百变 0.634887218475
小萝莉 0.62935769558
丑女 0.613193750381
妖娆 0.61169230938
清纯 0.608936905861
风骚 0.602776527405In [9]: result = model.most_similar(u'马云')In [10]: for word in result:...:     print word[0],word[1]...:阿里巴巴 0.557115197182
马化腾 0.551600694656
雷军 0.495278447866
李彦宏 0.476020514965
柳传志 0.475475847721
郭台铭 0.462114006281
宋卫平 0.453877806664
阎焱 0.452617198229
周鸿祎 0.44635617733
俞敏洪 0.43476909399In [11]: model.similarity(u'男人',u'女人')
Out[11]: 0.90834058044551369In [12]: print model.doesnt_match(u"早餐 晚餐 午餐 计算机".split())
计算机In [13]: model.n_similarity([u'御姐',u'萝莉'],[u'计算机',u'编程'])
Out[13]: -0.054454374940044653

通过测试,看起来效果还蛮不错的。

作者:七号萝卜
链接:https://www.jianshu.com/p/6d542ff65b1e
來源:简书

使用搜狗新闻语料库,训练word embeding相关推荐

  1. NLP入门竞赛,搜狗新闻文本分类!拿几十万奖金!

    该数据集来自若干新闻站点2012年6月-7月期间国内,国际,体育,社会,娱乐等18个频道的新闻数据. 根据新闻正文内容分析新闻的类别数据集官网链接: http://www.sogou.com/labs ...

  2. NLP入门竞赛,搜狗新闻文本分类

    该数据集来自若干新闻站点2012年6月-7月期间国内,国际,体育,社会,娱乐等18个频道的新闻数据. 根据新闻正文内容分析新闻的类别数据集官网链接: http://www.sogou.com/labs ...

  3. 分词 数值化(词嵌入 word embeding)

    一.word embeding 传统方式 python 工具包:gensim -------- word2vec.docvec ... 0.BOW --> TF-IDF BOW:词袋法(词的频数 ...

  4. 把一个dataset的表放在另一个dataset里面_使用中文维基百科语料库训练一个word2vec模型并使用说明...

    ​本篇主要介绍如何通过中文维基百科语料库来训练一个word2vec模型. 相关资料下载: 中文维基百科下载地址:https://dumps.wikimedia.org/zhwiki/ WikiExtr ...

  5. python训练自己中文语料库_word2vec+维基百科语料库训练中文模型

    训练中文词向量word2vec模型 1.准备数据 中文维基百科地址:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-arti ...

  6. 使用中文维基百科语料库训练一个word2vec模型

    本篇文章主要介绍如何通过中文维基百科语料库来训练一个word2vec模型. 相关资料下载: 中文维基百科下载地址:https://dumps.wikimedia.org/zhwiki/20180720 ...

  7. 使用中文维基百科语料库训练一个word2vec模型 12.1

    转自:https://blog.csdn.net/sinat_29957455/article/details/81432846 本篇文章主要介绍如何通过中文维基百科语料库来训练一个word2vec模 ...

  8. 记录处理搜狗新闻分类

    import pandas as pd import jieba #pip install jieba 数据源:http://www.sogou.com/labs/resource/ca.php df ...

  9. wiki语料库训练检索式聊天机器人

    环境: python3.7~9,chatterbot库 语料库: 中文语料库​github.com/brightmart/nlp_chinese_corpus 可以从我的网盘下: trained_tx ...

  10. 计算机内无法使用搜狗,电脑无法在Word文档中使用搜狗拼音输入法怎么办

    ‍ 搜狗拼音输入法受很大一部分用户的欢迎和喜爱,用户习惯使用搜狗拼音输入法来打字.可是在电脑系统中有时会出现无法使用搜狗拼音输入法的现象,比如在Word文档中.这种情况通常是由于微软拼音输入法的原因导 ...

最新文章

  1. wireshark过滤规则学习总结
  2. 剑指Offer——面试题30:最小的K个数
  3. springboot整合redisson实现多种分布式锁
  4. Mysql查询为空赋值为0
  5. 青蛙学Linux—CentOS 6.10的安装
  6. 2021-09-06146. LRU 缓存机制 哈希表
  7. ams1117-3.3v电源稳压芯片低压差线性稳压器
  8. python绘图工具reportlab介绍
  9. SCHMERSAL AZM 161 Z ST1-AS PT西溪,且留下
  10. 删除Directory Opus后从快捷方式无法转到文件夹
  11. SQL基础(廿)--- 抑制重复
  12. Batch Normalization解析
  13. Scrum板与Kanban如何抉择?敏捷工具:czsva板与按照mgzaqbpe
  14. Linux mysql服务(重启,启动,停止)
  15. 射影几何----帕普斯定理和帕斯卡定理证明对比版
  16. 数据库中用户登录注册用户信息表怎么设计如何设计
  17. LOAM-FLMI考试
  18. 长江大学图书馆校外登陆使用学术资源
  19. 字节流和字符流到底怎么用
  20. Python学习笔记之九——错误与异常

热门文章

  1. hbase数据库scan操作_HBase Scan 使用
  2. SecKill——一款超级好用的抢单软件
  3. java app支付_java微信支付—APP
  4. 2014世界10大DRAM公司
  5. js 微信小程序根据身份证号计算年龄
  6. 微信小程序scroll-view中的坑(因为动态设置高度导致无法下拉)
  7. AD7705-模数转换器-工作原理介绍
  8. PR13.0 2019 导入图片仅显示部分解决方法
  9. 偏差-方差分解、损失函数和正则化
  10. golang快速实现服务端网页截图