cbow word2vec 损失_用CBOW模型训练自己的word2vec - Tensorflow

本例将使用CBOW模型来训练word2vec,最终将所学到的词向量分布关系可视化出来,同时通过该例子练习使用nce_loss函数与word embedding技术,实现自己的word2vec。

描述

准备一段文字作为训练的样本,对其使用CBOW模型计算word2vec,并将各个词的向量关系用图展示出来。

1.引入头文件

本例的最后需要将词向量可视化出来。所以在代码行中有可视化相关的引入,即初始化,通过设置mpl的值让plot能够显示中文信息。ScikitLearn的t-SNE算法模块的作用是非对称降维,是结合了t分布将高维空间的数据点映射到低维空间的距离,主要用于可视化和理解高维数据。

代码word2vect.py,引入头文件

import numpy as np

import tensorflow as tf

import random

import collections

from collections import Counter

import jieba

from sklearn.manifold import TSNE

import matplotlib as mpl

import matplotlib.pyplot as plt

mpl.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签

mpl.rcParams['font.family'] = 'STSong'

mpl.rcParams['font.size'] = 20

这次重点关注的是词,不再对字进行one_hot处理,所以需要借助分词工具将文本进行分词处理。本例中使用的是jieba分词库,需要使用之前先安装该分词库。

在“运行”中,输入cmd,进入命令行模式。保证计算机联网状态下在命令行里输入:

Pip install jieba

安装完毕后可以新建一个py文件,代码简单测试一下:

import jieba

seg_list = jieba.cut("我爱人工智能") # 默认是精确模式

print(" ".join(seg_list))

输出:

我 爱 人工智能

如果能够正常运行并且可以分词,就表明jieba分词库安装成功了。

2.准备样本创建数据集

这个环节使用一篇笔者在另一个领域发表的比较有深度的文章“阴阳人体与电能.txt” 来做样本,将该文件放到代码的同级目录下。

代码中使用get_ch_lable函数将所有文字读入training_data,然后在fenci函数里使用jieba分词库对training_data分词生成training_ci,将training_ci放入build_dataset里并生成指定长度(350)的字典。

代码 word2vect(续)

training_file = '人体阴阳与电能.txt'

# 中文字

def get_ch_lable(txt_file):

labels = ""

with open(txt_file, 'rb') as f:

for label in f:

# labels = labels + label.decode('utf-8')</

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值