【NLP】特征工程_word2Vec_02_实践_文本向量化

在这里插入图片描述

前言

word2vec目前可以应用很多方面,如文本分类,文本聚类,相似度计算,推荐,NLP相关应用等等。
那么今天就先玩下其文本向量化功能

python版已实现word2vec的库有: gensim

数据集

要训练词向量就必须要有大量的语料库

中文语料如下:

  1. 腾讯AI Lab2018年分享的开源800万中文词的NLP数据集文章https://mp.weixin.qq.com/s?__biz=MzIzNjc1NzUzMw==&mid=2247506252&idx=4&sn=1f883532975737c9df02212fc2ae1ca5&chksm=e8d06e3edfa7e728ee0f1ae592e03cee5c818a5b731a0f0560672323894a2304758698b52f37&mpshare=1&scene=1&srcid=1019nHpV0cUEBOk3Z25cuPgA#rd
    下载链接为https://ai.tencent.com/ailab/nlp/embedding.html
  2. 中文自然语言处理开放平台
    由中国科学院计算技术研究所·数字化室&软件室创立一个研究自然语言处理的一个平台,里面包含有大量的训练测试语料。
    语料库: http://www.nlp.org.cn/docs/doclist.php?cat_id=9&type=15
    文本语料库: http://www.nlp.org.cn/docs/doclist.php?cat_id=16&type=15
  3. sogou文本分类语料库
    文本分类语料库来源于Sohu新闻网站保存的大量经过编辑手工整理与分类的新闻语料与对应的分类信息。其分类体系包括几十个分类节点,网页规模约为十万篇文档。
    地址: http://www.sogou.com/labs/dl/c.html
  4. wei —基百科中文网页下载资源: https://dumps.wikimedia.org/zhwiki/lastest/zhwiki-lastest-pages-articles.xml.bz2

由于上述语料库都比较大,维基数据大小为1.5G,大小比较适合作为开发测试

数据清洗

W基提供的语料是xml格式且还是繁文的,故需做相应的数据处理

1.数据预处理

# -*- coding: utf-8 -*-
"""
FileName     : data_pre_process.py
Description  : 中文语料预处理.
@author      : PuShkin
Time         : 20181230

"""
from gensim.corpora import WikiCorpus
import jieba
from langconv import *

def my_function():
    space = ' '
    i = 0
    l = []
    zhwiki_name = './data/zhwiki-latest-pages-articles.xml.bz2'
    f = open('./data/reduce_zhiwiki.txt', 'w',encoding='utf-8')
    # xml文件中读出训练语料
    wiki = WikiCorpus(zhwiki_name, lemmatize=False, dictionary={})
    for text in wiki.get_texts():
        for temp_sentence in text:
            # 繁体字转换为简体
            temp_sentence = Converter('zh-hans').convert(temp_sentence)
            # 分词
            seg_list = list(jieba.cut(temp_sentence))
            for temp_term in seg_list:
                l.append(temp_term)
        f.write(space.join(l) + '\n')
        l = []
        i = i + 1

        if (i %200 == 0):
            print('Saved ' + str(i) + ' articles')
    f.close()

向量化训练(模型)

使用gensim库训练词向量,相关参数请见注释,

# -*- coding: utf-8 -*-
"""
FileName     : train.py
Description  : 向量化训练.
@author      : PuShkin
Time         : 20181230

"""
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence
import logging

logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)

def my_function():
    wiki_news = open('./data/reduce_zhiwiki.txt', 'r',encoding='utf-8')
    # sg=0表示使用CBOW模型训练词向量; sg=1 表示使用Skip-gram训练词向量,  size表示词向量的维度;
    # windows表示当前词和预测词可能的最大距离,windows越大所需要枚举的预测词越多,计算时间越长
    # min_count表示最小出现的次数,如果一个词语出现的次数小于min_count,那么直接忽略
    # workers 表示使用的线程数
    model = Word2Vec(LineSentence(wiki_news), sg=0,size=192, window=5, min_count=5, workers=9)
    model.save('zhiwiki_news.word2vec')

模型应用

利用词向量计算词语的相似度

PS: 由于词汇敏感 故我直接图片化吧 哎~~~~

结果:
在这里插入图片描述




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pushkin.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值