专栏首页尾尾部落使用自己的语料训练word2vec模型

使用自己的语料训练word2vec模型

使用自己的语料训练word2vec模型

一、 准备环境和语料:
二、分词

先对新闻文本进行分词,使用的是结巴分词工具,将分词后的文本保存在seg201708.txt,以备后期使用。

安装jieba工具包:pip install jieba

# -*- coding: utf-8 -*-
import jieba
import io
# 加载自己的自己的金融词库
jieba.load_userdict("financialWords.txt")

def main():
    with io.open('news201708.txt','r',encoding='utf-8') as content:
        for line in content:
            seg_list = jieba.cut(line)
#           print '/'.join(seg_list)
            with io.open('seg201708.txt', 'a', encoding='utf-8') as output:
                output.write(' '.join(seg_list))

if __name__ == '__main__':
    main()
三、训练word2vec模型

使用python的gensim包进行训练。

安装gemsim包:pip install gemsim

from gensim.models import word2vec

def main():

    num_features = 300    # Word vector dimensionality
    min_word_count = 10   # Minimum word count
    num_workers = 16       # Number of threads to run in parallel
    context = 10          # Context window size
    downsampling = 1e-3   # Downsample setting for frequent words
    sentences = word2vec.Text8Corpus("seg201708.txt")

    model = word2vec.Word2Vec(sentences, workers=num_workers, \
            size=num_features, min_count = min_word_count, \
            window = context, sg = 1, sample = downsampling)
    model.init_sims(replace=True)
    # 保存模型,供日後使用
    model.save("model201708")

    # 可以在加载模型之后使用另外的句子来进一步训练模型
    # model = gensim.models.Word2Vec.load('/tmp/mymodel')
    # model.train(more_sentences)

if __name__ == "__main__":
    main()
  • 参数说明

  • sentences:可以是一个·ist,对于大语料集,建议使用BrownCorpus,Text8Corpus或ineSentence构建。
  • sg: 用于设置训练算法,默认为0,对应CBOW算法;sg=1则采用skip-gram算法。
  • size:是指特征向量的维度,默认为100。大的size需要更多的训练数据,但是效果会更好. 推荐值为几十到几百。
  • window:表示当前词与预测词在一个句子中的最大距离是多少
  • alpha: 是学习速率
  • seed:用于随机数发生器。与初始化词向量有关。
  • min_count: 可以对字典做截断. 词频少于min_count次数的单词会被丢弃掉, 默认值为5
  • max_vocab_size: 设置词向量构建期间的RAM限制。如果所有独立单词个数超过这个,则就消除掉其中最不频繁的一个。每一千万个单词需要大约1GB的RAM。设置成None则没有限制。
  • sample: 高频词汇的随机降采样的配置阈值,默认为1e-3,范围是(0,1e-5)
  • workers参数控制训练的并行数。
  • hs: 如果为1则会采用hierarchica·softmax技巧。如果设置为0(defau·t),则negative sampling会被使用。
  • negative: 如果>0,则会采用negativesamp·ing,用于设置多少个noise words
  • cbow_mean: 如果为0,则采用上下文词向量的和,如果为1(defau·t)则采用均值。只有使用CBOW的时候才起作用。
  • hashfxn: hash函数来初始化权重。默认使用python的hash函数
  • iter: 迭代次数,默认为5
  • trim_rule: 用于设置词汇表的整理规则,指定那些单词要留下,哪些要被删除。可以设置为None(min_count会被使用)或者一个接受()并返回RU·E_DISCARD,uti·s.RU·E_KEEP或者uti·s.RU·E_DEFAU·T的
  • sorted_vocab: 如果为1(defau·t),则在分配word index 的时候会先对单词基于频率降序排序。
  • batch_words:每一批的传递给线程的单词的数量,默认为10000
四、word2vec应用
model = Word2Vec.load('model201708')      #模型讀取方式
model.most_similar(positive=['woman', 'king'], negative=['man']) #根据给定的条件推断相似词
model.doesnt_match("breakfast cereal dinner lunch".split()) #寻找离群词
model.similarity('woman', 'man') #计算两个单词的相似度
model['computer'] #获取单词的词向量

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 手把手教你用图灵机器人做微信公众号自动回复助手 手把手教你用图灵机器人做微信公众号自动回复助手

    创建成功后,会自动跳转到机器人设置界面,在这里你可以对机器人进行个性化定制。其实,图灵机器人提供简单的方法,快速接入微信公众号,这太没有挑战性了,对于喜欢搞...

    尾尾部落
  • 可能是最全的数据标准化教程(附python代码)

    数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,当各指标间的水平相差很大时,如果直接用原始指标值进行分析,就会突出数...

    尾尾部落
  • [剑指offer] 和为S的连续正数序列

    小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100...

    尾尾部落
  • 初识mvc

    在视图文件中,有一个名称为Model属性,它指代的是从Action中传递的模型数据.为了使用模型数据,我们还需要在aspx视图中<%@Page  %>指令的In...

    易墨
  • windows下 安装Kali Linux到 U盘的方法

    此篇文章本不想写,因为和安装相关的文章也写了一些,网上也有类似的教程。不过最近知乎总是接到邀请要回答这个问题,索性写一写,不知道能不能满足要求。 作者:玄魂...

    用户1631416
  • HBase Java Client API

    在这篇文章中,我们看一下 HBase Java 客户端 API 如何使用。HBase 用 Java 编写,并提供 Java API 与之通信。客户端 API 提...

    smartsi
  • WordPress免插件仅代码实现文章浏览次数的方法(3)

    在WordPress中为每一篇文章提供个“浏览次数”计数,一来可以间接地给访客一种文章有价值的暗示,二来方便自己获取相关数据(访客的内容偏好等等),三貌似想不到...

    Jeff
  • c# IO&&线程 打造 定时打开指定程序

         用IO以及线程轻松实现 定时器 ,在指定的时间打开指定的程序:) ?     首先是如何实现定时?这可以单独的用个线程,在时间到的时候打开程序    ...

    用户1177380
  • HTML5复习整理

    一、推出的目标 web浏览器兼容性低;文档结构不明确;web应用程序的功能受限 二、语法的改变 内容类型(html或htm);DOCTYPE声明简化;指定字符编...

    小古哥
  • 员工参与度低,怎么办?在线等!

    上周看完大家反馈的问卷调研,本乐陷入沉思,原来你们目前遇到最大的问题是员工参与度不高!!这让本乐非常自责!竟然连最开始冷启动的套路都不告诉你们!

    腾讯乐享

扫码关注云+社区

领取腾讯云代金券