码迷,mamicode.com
首页 > 其他好文 > 详细

结巴分词

时间:2018-06-12 17:10:43      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:rac   rom   fine   %s   ESS   proc   print   提高   dict   

#!coding: utf-8

import jieba
import jieba.posseg as pseg
import jieba.analyse as anal
from optparse import OptionParser

usage = "usage: python %prog [--tfidf topK] [--textr topK]";
parser = OptionParser(usage);
parser.add_option("--tag", dest="tag", action="store_true");
parser.add_option("--fast", dest="fast", action="store_true");
parser.add_option("--tfidf", dest="tfidf");
parser.add_option("--textr", dest="textr");
opt,args = parser.parse_args();


txt = "支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析; 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义; 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。  支持繁体分词 支持自定义词典 MIT 授权协议 在线演示";


#multiprocess
if opt.fast:
    jieba.enable_parallel(10);



#define word-dict
jieba.add_word("全模式");
jieba.suggest_freq(("",""), True) ;



#generator
print "/".join(jieba.cut(txt));


#list
print "/".join(jieba.lcut(txt));


#search mode
print "/".join(jieba.cut_for_search(txt));


#get word‘s position
res = jieba.tokenize(txt.decode("utf-8"));
#res = jieba.tokenize(txt.decode("utf-8"), mode="search"); #search mode
print "word\t\tstart\t\tend";
for tk in res:
    print("%s\t\t %d \t\t %d" % (tk[0],tk[1],tk[2]));



#tagging word
if opt.tag:
    for w,k in pseg.cut(txt):
        print w+"("+k+")",



#tfidf sort keyword
if opt.tfidf:
    topK =  int(opt.tfidf);
    tags = anal.extract_tags(txt, topK, withWeight=True);

    for word,weight in tags:
        print word,weight



#textrank sort keyword
if opt.textr:
    topk = int(opt.textr);
    tags = anal.textrank(txt, topk, withWeight=True);

    for word,weight in tags:
        print word,weight;

 

结巴分词

标签:rac   rom   fine   %s   ESS   proc   print   提高   dict   

原文地址:https://www.cnblogs.com/demonxian3/p/9173886.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!