您的位置:首页 > 其它

中文分词组件

2017-05-17 09:07 204 查看
1.下载mecab-chinesedic-binary,放在MeCab bin目录下,具体参考:详细详细可参考《用MeCab打造一套实用的中文分词系统》

cmd运行命令:mecab -d mecab-chinesedic-binary wakati wiki.zh.text.jian -o wiki.zh.text.jian.seg -b 10000000 

其中,wiki.zh.text.jian是一个中文数据集,wiki.zh.text.jian.seg为分割后文本。

2.使用中文分词工具jieBa

#encoding=utf-8  

import jieba  

  

#全模式  

text = "我来到北京清华大学"  

seg_list = jieba.cut(text, cut_all=True)  

print u"[全模式]: ", "/ ".join(seg_list)   

  

#精确模式  

seg_list = jieba.cut(text, cut_all=False)  

print u"[精确模式]: ", "/ ".join(seg_list)  

  

#默认是精确模式  

seg_list = jieba.cut(text)  

print u"[默认模式]: ", "/ ".join(seg_list)   

  

#新词识别 “杭研”并没有在词典中,但是也被Viterbi算法识别出来了  

seg_list = jieba.cut("他来到了网易杭研大厦")   

print u"[新词识别]: ", "/ ".join(seg_list)  

  

#搜索引擎模式  

seg_list = jieba.cut_for_search(text)   

print u"[搜索引擎模式]: ", "/ ".join(seg_list)
 

#当然也可以用自己定义的词典

如:

#导入自定义词典  

jieba.load_userdict("dict.txt")
 

#读取文件并保存
从BaiduSpider文件中读取0001.txt~0204.txt文件,分别进行分词处理再保存。

[python] view
plain copy

#encoding=utf-8  

import sys  

import re  

import codecs  

import os  

import shutil  

import jieba  

import jieba.analyse  

  

#导入自定义词典  

jieba.load_userdict("dict_baidu.txt")  

  

#Read file and cut  

def read_file_cut():  

    #create path  

    path = "BaiduSpider\\"  

    respath = "BaiduSpider_Result\\"  

    if os.path.isdir(respath):  

        shutil.rmtree(respath, True)  

    os.makedirs(respath)  

  

    num = 1  

    while num<=204:  

        name = "%04d" % num   

        fileName = path + str(name) + ".txt"  

        resName = respath + str(name) + ".txt"  

        source = open(fileName, 'r')  

        if os.path.exists(resName):  

            os.remove(resName)  

        result = codecs.open(resName, 'w', 'utf-8')  

        line = source.readline()  

        line = line.rstrip('\n')  

          

        while line!="":  

            line = unicode(line, "utf-8")  

            seglist = jieba.cut(line,cut_all=False)  #精确模式  

            output = ' '.join(list(seglist))         #空格拼接  

            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'  

  

#Run function  

if __name__ == '__main__':  

    read_file_cut()  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: