但凡谈及自然语言处理,我们都会想到词向量,那么怎么快速地获得词向量呢?最简单的方法就是word2vec。本文不深究word2vec的原理,网上很多细致深入的解读,大家可以自行搜索。今天总结一下如何快速训练自己的词向量,作为参考个人的手册。
1、 语料
丰富、高质量的语料是词向量成功第一步。
前两天学到一个名词,叫自监督学习,word2vec就是其中一种。自己监督自己,很容受到噪声的干扰,如果数据不干净,结果也会谬以千里。
word2vec虽然不是统计算法,但是训练过程中很大程度上在理解上下文,在理解共现关系。丰富的语料,才能保证对词语正确的理解。很多低频词由于训练不足,词向量基本是随机初始化的,导致在计算词语top-n相似词语的时候出现一些匪夷所思的噪声。
所以请一定多获取数据,多思考怎么把数据过滤得更干净。
2、分词
词向量,词向量,故名思义,首先要有词语,使用分词工具把语料分割为词语序列。
中文分词哪家强?常用的有jieba、ltp(哈工大)、thulac(清华)…这几种分词工具各有优劣。不过对于具体领域的任务,我们通常通过加载额外的领域词典,来对分词工具进行补充。这里可能还涉及领域内的新词发现,不展开了。
如果你觉得这些工具都是垃圾,可以自行训练分词模型,常用的有动态规划,隐马尔可夫,以及深度学习分词算法。
3、构建词向量模型
gensim正式登场,其实可以直接使用word2vec库,但是个人觉得gensim库功能更全面,推荐使用。
- 读取语料,如果你的数据很少,那就简单,把数据全部读到内存中。存到一个二位数组里,[[w1,w2,…], …], 里面的数组表述文本,外面表示所有文本的集合。但是当你的语料很大时,建议逐步加载。官方建议定义一个数据读取的类:
class MyCorpus(object):
"""An interator that yields

最低0.47元/天 解锁文章
5089

被折叠的 条评论
为什么被折叠?



