简单的中文分词和词向量化

霸气de小男生 提交于 2019-11-26 03:36:06

**在做分词前需要做的准备:

**
(1):已经预处理过的需要分词的语料(需要分词的语料要符合结巴分词的要求,每句一行,并且以句号做结尾)
(2):需要一份相关方面的词典用于更加专业化的分词,单纯的使用结巴分词不能很好的分出你需要的词,会影响到你以后词向量化阶段。
(3):需要一份停用词表,因为结巴分词不能很好的把一些没有实际意义的词去掉,这样此会影响到后面词向量化阶段。停用词表的作用就是去掉一些没有意义的词语,单字,或者特殊符号。主要你需要去掉的东西,你把它写在停用词表中就可以。停用词表可以在网上下载,停用词表一般分为很多种,有专门的中文停用词表。在做分词的时候看需要下载,一般下载一个比较全的停用词表就行(停用词表一般包括特殊符号和中文一些无意义词)。此处需要注意,在保存停用词表的时候注意保存为编码格式utf-8的格式储存为txt格式.

开始分词:

代码如下
在这里插入图片描述

import codecs
import jieba
infile='date_open_yuliao.txt'##你需要分词的语料的文件名
outfile='data_open_yuliaochuli2.txt'##分词完成后保存的文件名
jieba.load_userdict("data_open_dict.txt")##用结巴加载你准备好的专用分词的词典
descsFile=codecs.open(infile,'r',encoding='utf-8')##utf-8的格式打开需要分词的语料
i=0
##进行分词处理
with open(outfile,'w',encoding='utf-8')as f:
    for line in descsFile:
        line=line.strip()
        words=jieba.cut(line)
        stopwords = [line.strip() for line in open('stopWord.txt',encoding='utf-8').readlines()]##加载停用词表
        for world in words:
            if world not in stopwords:
                f.write(world+' ')
        f.write('\n')

当执行完该程序后你就会得到一份分词好的语料(该语料文件名就是上方代码中你设定的文件名),分词成为如下:
在这里插入图片描述

开始词向量化:

代码如下在这里插入图片描述

import multiprocessing
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence

inp='data_open_yuliaochuli2.txt'##你已经处理好的语料
outp1='data_model'##world2的模型
outp2='data_vector'##词向量话后的数据
model=Word2Vec(LineSentence(inp),iter=10,sg=0,size=50,window=3,min_count=1,workers=multiprocessing.cpu_count())
model.save(outp1)
model.wv.save_word2vec_format(outp2,binary=False)

在使用world2vec模型时,要注意里面的参数,根据你所需要的进行调整,也就是调参的过程:具体参考world2vec模型参数

模型的使用:

在这里插入图片描述``

from gensim.models import Word2Vec
model=Word2Vec.load('./data_model')##模型的读取
print(model.similarity("英国","贵州"))
print(model.most_similar('信息'))

这里最常用的两种方法,model.similarity,输入两个需要比较参数,会返回一个数值,该数值代表了两个参数的相关性大小。
在这里插入图片描述
model.most_similar函数,输入一个参数,默认会返回距离该参数最近的10个数据。
在这里插入图片描述
具体需要用模型进行其他常用相关操作的如下,如需了解自行查询熟悉各个方法的使用在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!