word2vec的理解与使用
通俗理解word2vec
Word2vec,是一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输入词。训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系,该向量为神经网络之隐藏层。
这个模型是如何定义数据的输入和输出呢?一般分为CBOW(Continuous Bag-of-Words,词袋模型 )与Skip-Gram两种模型。CBOW模型的训练输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量。Skip-Gram模型和CBOW的思路是反着来的,即输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量。CBOW对小型数据库比较合适,而Skip-Gram在大型语料中表现更好。
word2vec的使用
word2vec的安装
1 | pip install gensim |
模型构建参数详解
1 | from gensim.models import word2vev |
这里着重介绍一下sentences
参数,它可由以下两种格式载入:
1、文本格式
将所有词语用空格分隔,存入txt文本中。那么获取数据可以使用如下方法:
1 | sentences = word2vec.Text8Corpus("test.txt") # text8为语料库文件名 |
2、list嵌套格式
1 | sentences = [["a","b"],["b","c"] ... ] |
模型操作
1、保存模型
1 | model.save("文本名") # 模型会保存到该 .py文件同级目录下,该模型打开为乱码 |
2、加载模型
1 | model = Word2Vec.load("模型文件名") |
3、模型追加训练
1 | model.train(more_sentences) |
输出
1 | # 计算一个词的最近似的词: |