利用jieba对多个中文txt文本进行分词

利用jieba对多个中文txt文本进行分词

最近研究需要,所以获取了“豆瓣读书”135本书的简介,分成了135个txt文本文件,利用jieba对其进行中文分词、去除停用词工作,并仍旧保存为135个。

代码

这个代码是在https://yq.aliyun.com/articles/26040这篇文章代码的基础上修改的,把分词、去停用词、字母小写之类的都合在了一起

首先导入需要进行分词的文件以及用户自定义词典,用户自定义词典可以保证分词时,用户自定义的某些词能够被保留下来,例如“东野圭吾”这个作者,没被加入到自定义词典时,会被分成“东野”“圭吾”两个词,这肯定会影响后续研究,将其添加到词典中就不会被拆开了。

# -*- coding:utf-8 -*-
import codecs  
import os  
import shutil  
import jieba  
import jieba.analyse  


#Read file and cut  
def read_file_cut():  
    #create path  
    path = "E:\\book\\"   
    respath = "E:\\fc\\"  
    if os.path.isdir(respath):  
        shutil.rmtree(respath, True)  
    os.makedirs(respath)  
    jieba.load_userdict("E:\\dict.txt")#导入用户自定义词典
    num = 1  
    while num<=135:  
        name = "%d" % num   
        fileName = path + str(name) + ".txt"  
        resName = respath + str(name) + ".txt"  
        source = codecs.open(fileName, 'r')  
        if os.path.exists(resName):  
            os.remove(resName)  
        result = codecs.open(resName, 'w', encoding='utf-8')  
        line = source.readline()  
        line = line.rstrip('\n')  

导入停用词表

stopwords = {}.fromkeys([ line.strip() for line in codecs.open('C:\\stopwords.txt', encoding='UTF-8') ]  #停用词表

分词

        while line!="":    
            seglist = jieba.cut(line,cut_all=False)  #精确模式
            output=''
            for segs in seglist:
                seg=segs.lower()            #英文字母小写
                if seg not in stopwords:    #去停用词
                    if len(seg)>1:          #去掉分词为1个字的结果
                        output += seg
                        output +=' '
            print (output)
            result.write(output+'\r\n')  
            line = source.readline()  
        else:  
            print ('End file: ' + str(num) ) 
            source.close()  
            result.close()  
        num = num + 1  
    else:  
        print ('End All')
    if  __name__ == '__main__':  
    read_file_cut()

这是其中一本图书的简介分词后的结果

其中一本图书的简介分词后的结果

阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页