python调用jieba(结巴)分词 加入自定义词典和去停用词功能
2017-05-18 19:07
441 查看
把语料从数据库提取出来以后就要进行分词啦,我是在linux环境下做的,先把jieba安装好,然后找到内容是build jieba PKG-INFO setup.py test的那个文件夹(我这边是jieba-0.38),把自己的自定义词典(选用,目的是为了分出原始词库中没有的词以及优先分出一些词),停用词词典(选用),需要分词的语料文件,调用jieba的python程序都放到这个文件夹里,就可以用啦。至于词典要什么样的格式,在网上一查就可以了。
之前有看到别的例子用自定义词典替换掉jieba本身词典,但是我试了一下好像效果不行,假设原始词典中有’云‘,’计算‘而没有’云计算‘,我想要分出’云计算‘这个词,加载自定义词典可以成功,但替换原始词典就不一定成功了。(当然我说的也不一定对)
还有停用词词典,我之前是把停用词在程序里存入一个列表,然后分每个词时都循环一遍列表,这样特别浪费时间。后来把停用词做成字典就很快了。
for eachline in fin可避免memory error。如果还是报memory error,那应该就是输入语料文件单行数据多长了。
#!/usr/bin/python #-*- encoding:utf-8 -*- import jieba #导入jieba模块 import re jieba.load_userdict("newdict.txt") #加载自定义词典 import jieba.posseg as pseg def splitSentence(inputFile, outputFile): #把停用词做成字典 stopwords = {} fstop = open('stop_words.txt', 'r') for eachWord in fstop: stopwords[eachWord.strip().decode('utf-8', 'ignore')] = eachWord.strip().decode('utf-8', 'ignore') fstop.close() fin = open(inputFile, 'r') #以读的方式打开文件 fout = open(outputFile, 'w') #以写得方式打开文件 jieba.enable_parallel(4) #并行分词 for eachLine in fin: line = eachLine.strip().decode('utf-8', 'ignore') #去除每行首尾可能出现的空格,并转为Unicode进行处理 line1 = re.sub("[0-9\s+\.\!\/_,$%^*()?;;:-【】+\"\']+|[+——!,;:。?、~@#¥%……&*()]+".decode("utf8"), "".decode("utf8"),line) wordList = list(jieba.cut(line1)) #用结巴分词,对每行内容进行分词 outStr = '' for word in wordList: if word not in stopwords: outStr += word outStr += ' ' fout.write(outStr.strip().encode('utf-8') + '\n') #将分词好的结果写入到输出文件 fin.close() fout.close() splitSentence('ss.txt', 'tt.txt')
相关文章推荐
- python调用jieba(结巴)分词 加入自定义词典和去停用词功能
- 基于Python结巴分词(调用自定义词库已经去除停用词)
- python结巴分词、jieba加载停用词表
- 【调试】jieba结巴分词功能在python 3上运行代码
- python 结巴分词(jieba)学习
- python 结巴分词(jieba)学习
- python 结巴分词(jieba)学习
- jieba 分词自定义词典问题
- Python 结巴分词停止词及自定义词库
- jieba(结巴)Python分词器加载到Eclipse方法
- python下结巴分词(jieba)学习笔记
- python 结巴分词(jieba)学习
- python去除停用词(结巴分词下)
- python 结巴分词(jieba)学习
- python 结巴分词(jieba)学习
- python jieba 分词自定义字典
- jieba分词、自定义词典提取高频词、词性标注及获取词的位置
- 使用python 的结巴(jieba)库进行中文分词
- python中文分词工具:结巴分词jieba
- python jieba 结巴分词报错 AttributeError: 'module' object has no attribute 'cut'