天池零基础入门NLP - 新闻文本分类(词向量训练)

一、利用gensim做word2vec训练

  涉及文件:generate_corpus.py和word2vec.py

1、generate_corpus.py

  程序读取所有文本数据(训练集+测试集),每一条文本数据作为单独一行写入corpus.txt中,准备作为word2vec.py的输入。

import pandas as pd

train = pd.read_csv(r'../data/train.csv', delimiter='\t')  # r代表反转义
test_a = pd.read_csv(r'../data/test_a.csv', delimiter='\t')
test_b = pd.read_csv(r'../data/test_b.csv', delimiter='\t')

all_data = pd.concat([train['text'], test_a['text'], test_b['text']], axis=0)

sentences = []
for document in all_data.tolist():
    sentences.append(document)  

with open("./corpus.txt", 'w') as f:
    for line in sentences:
        f.write(line)
        f.write('\n')
f.close()

  corpus.txt内容格式:

2967 6758 339 2021 1854 3731 4109 3792 4149 1519 2058 3912 2465 2410 1219 6654
7539 264 2456 4811 1292 2109 6905 5520 7058 6045 3634 6591 3530 6508 2465 7044
1519 3659 2073 3750 3731 4109 3792 6831
2614 3370 4269 3370 486 5770 4109 4125
3750 5445 2466 6831 6758 3743 3630 1726 2313 5906 826 4516 657

  corpus.txt内容格式仅仅影响word2vec.py中的数据读取方式,因此并不重要。

2、word2vec.py

  程序读取generate_corpus.py生成的corpus.txt文本。读取方式和corpus.txt写入的方式有关,准备喂入Word2Vec的sentences格式为[[“cat”, “say”, “meow”], [“dog”, “say”, “woof”]]。

from gensim.models import Word2Vec

sentences = []
load_path = r'../corpus/corpus.txt'
with open(load_path, 'r') as lines:
    for line in lines:
        line = line[:-1]  # 去掉换行符\n
        sentences.append(line.split(' ')[:])
# sentences = [["cat", "say", "meow"], ["dog", "say", "woof"]]

model = Word2Vec(sentences=sentences,
                 size=200,  # 词向量的维度
                 alpha=0.025,  # 初始学习率
                 window=5,  # 当前词与预测词的距离
                 min_count=2,  # 忽略总频率低于此的所有单词
                 sample=0.001,
                 seed=2020,  # 随机种子
                 workers=11,
                 min_alpha=0.0001,
                 sg=0,  # cbow, 1是skip-gram
                 hs=0,  # 0使用了负采样,  1使用了层级softmax
                 negative=5,   # 负采样个数.
                 ns_exponent=0.75,
                 cbow_mean=1,
                 iter=20)  # 迭代次数

model.save("./word2vec.model")  # 保存模型
print("sucessful")

模型Word2Vec常用参数详见代码注释。
也可以自己在Pycharm中ctrl+鼠标左键进行查看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值