word2vec训练模型实现文本转换词向量


利用 Word2Vec 实现文本分词后转换成词向量

步骤:

1、对语料库进行分词,中文分词借助jieba分词。需要对标点符号进行处理

2、处理后的词语文本利用word2vec模块进行模型训练,并保存

  词向量维度可以设置高一点,300

3、保存模型,并测试,查找相似词,相似词topN

 1 import re
 2 import jieba
 3 from gensim.models import Word2Vec, word2vec
 4 
 5 
 6 def tokenize():
 7     """
 8     分词
 9     :return:
10     """
11     f_input = open('166893.txt', 'r', encoding='utf-8')
12     f_output = open('yttlj.txt', 'w', encoding='utf-8')
13     line = f_input.readline()
14     while line:
15         newline = jieba.cut(line, cut_all=False)
16         newline = ' '.join(newline)
17         fileters = ['', '', '', '!', '', '"', '#', '$', '%', '&', '\(', '\)', '\*', '\+', ',', '-', '\.', '/', ':', ';', '<', '=', '>', '\?', '@'
18             , '\[', '\\', '\]', '^', '_', '`', '\{', '\|', '\}', '~', '', '', '']
19         newline = re.sub("<.*?>", " ", newline, flags=re.S)
20         newline = re.sub("|".join(fileters), " ", newline, flags=re.S)
21         f_output.write(newline)
22         print(newline)
23         line = f_input.readline()
24     f_input.close()
25     f_output.close()
26 
27 
28 def train_model():
29     """
30     训练模型
31     :return:
32     """
33     model_file_name = 'model_yt.txt'
34     sentences = word2vec.LineSentence('yttlj.txt')
35     model = word2vec.Word2Vec(sentences, window=5, min_count=5, workers=4, vector_size=300)
36     model.save(model_file_name)
37 
38 
39 def test():
40     """
41     测试
42     :return:
43     """
44     model = Word2Vec.load('model_yt.txt')
45     print(model.wv.similarity('赵敏', '赵敏'))
46     print(model.wv.similarity('赵敏', '周芷若'))
47     for k in model.wv.most_similar('赵敏', topn=10):
48         print(k[0], k[1])
49 
50 
51 if __name__ == '__main__':
52     test()
View Code

 小结:

word2vec是实现词嵌入的一种方式。

文本数据需要预处理成张量的形式,才能输入到神经网络 ;

文本划分成单元的过程叫做分词过程(tokenization),分成的单元叫做标记(token);

文本 → 分词 → 向量化

1、如何将文本转成机器可处理成数值张量?
  1. one-hot编码

    • 语料库有多少单独的词,就建立多少维度的向量,当前词语位置表示为1,其他位置为0

    • 表示离散数据的方式

    • 缺点:

      • 过于稀疏,数据量越大,维度越大,越稀疏

      • 不能表示出两个有关联的词语之间的内在联系

      • one-hot编码简单,但是没有结构,任何两个单词之间的距离为根号二

  2. word embedding (词嵌入)

    • word-embedding空间维度较小,空间中具有结构,相似的单词距离近,不相关的单词距离远

    • embedding层的作用实际上可以看作是一个矩阵,将高维空间中的点映射到低维空间中

    • Embedding空间维度低,且可以让空间拥有结构

    • 从向量之间的距离体现性别,年龄等等(这需要训练,没有经过训练的embedding层没有任何结构)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM