博客
关于我
【NLP】之 Word2vec(将评论转为词向量)
阅读量:162 次
发布时间:2019-02-27

本文共 1723 字,大约阅读时间需要 5 分钟。

Word2vec简介

Word2vec是一种通过浅层神经网络生成词向量的模型,其核心思想是通过上下文预测单词的出现概率,从而学习词向量。Word2vec主要包含两个训练模型:CBOW(Contextual Bag of Words)和Skip-Gram(也称Skip n-gram)。

CBOW模型

CBOW模型通过上下文预测当前词语的出现概率,其输入数据是特定词语的上下文词向量,输出是该词语的词向量。CBOW模型的训练过程可以看作是一种多分类任务,其中分类标签是语料库中的所有词汇。CBOW模型的特点是上下文距离可自定义,且上下文词语的权重相等。

Skip-Gram模型

Skip-Gram模型与CBOW相反,其输入是特定词语的词向量,输出是该词语的上下文词向量。Skip-Gram模型的训练目标是最小化输入词向量与目标词向量之间的余弦相似度误差,并通过Softmax归一化得到概率分布。

Word2vec的核心模型结构包括输入层、隐藏层和输出层,隐藏层的激活函数通常是双曲函数。

Word2vec训练

Word2vec需要使用训练语料库来学习词向量。本文使用维基百科中文语料库(1.61GB,337336篇文章)进行训练。

数据处理

  • 数据抽取:使用gensim的WikiCorpus处理原始语料包,提取文章内容。
  • 数据预处理:
    • 将繁体字转换为简体字(可使用OpenCC工具)。
    • 进行结巴分词及去停用词处理。
  • 模型训练:设置词向量维度为200维,上下文窗口大小为5,最小词频为5。核心训练代码如下:
  • import loggingimport os.pathimport sysfrom gensim.corpora import WikiCorpusfrom gensim.models import Word2Vec程序名 = os.path.basename(sys.argv[0])logger = logging.getLogger(程序名)logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')logger.info("运行 %s" % ' '.join(sys.argv))if len(sys.argv) < 4:    print(globals()['__doc__'] % locals())    sys.exit(1)输入文件路径, 输出模型路径, 输出词向量路径 = sys.argv[1:4]模型 = Word2Vec(    LineSentence(输入文件路径),    size=200,    window=5,    min_count=5,    workers=2)模型保存路径 = 输出模型路径模型.wv.save_word2vec_format(输出词向量路径, binary=False)

    运行训练命令:

    python word2vec_model.py 输入文件路径 输出模型路径 输出词向量路径

    用Word2vec将评论转为词向量

    在Word2vec训练完成后,利用预训练模型将评论转为词向量。具体操作如下:

  • 将评论中的每个词转化为词向量。
  • 计算评论向量为所有词向量的平均值或加权求和。
  • 核心代码如下:

    from gensim.models import Word2Vecimport codecsimport numpy as np加载预训练模型:w2v_model = Word2Vec.load('wiki.zh.1.6gr.model')处理评论:vec = np.zeros([1, 200])count = 0for word in words:    if word:        try:            vec += w2v_model[word]            count += 1        except KeyError:            continuevec /= count

    词向量结果

    通过上述方法,可以将评论转化为向量形式,便于后续分析和应用。

    转载地址:http://djkd.baihongyu.com/

    你可能感兴趣的文章
    Python 字符串的几种拼装方式
    查看>>
    python 存入数据库bigint_python基础_MySQL的bigint类型
    查看>>
    python 学习 面向对象编程
    查看>>
    Python 学习日记第三篇 -- 字典
    查看>>
    Python 学习笔记(一)Data type
    查看>>
    python 安装echarts
    查看>>
    python 安装opencv及问题解决
    查看>>
    Python 安装程序:“写入文件 C:\Python27\pythonw.exe 时出错“
    查看>>
    Python 安装避坑指南:从入门到进阶
    查看>>
    Python 安装配置详解
    查看>>
    python 实现儿童算术游戏
    查看>>
    python 实现字符串转整型
    查看>>
    Python 实现定时任务的八种方案!
    查看>>
    Python 实现自动化测试 dubbo 协议接口
    查看>>
    python 对json数据读取及保存与读取,对dump,dumps,load,loads的理解
    查看>>
    Python 对mysql数据库的操作
    查看>>
    Python 对象数据库列表
    查看>>
    Python 导入requests报错No module named requests
    查看>>
    python 将函数加到列表中进行调用
    查看>>
    python 将图片与字符串相互转换
    查看>>