参考:
https://blog.csdn.net/reims2046/article/details/72869337
https://blog.csdn.net/xiaoxiangzi222/article/details/53483931
一、三种模式
- import jieba
- seg_list = jieba.cut("我来到北京清华大学", cut_all=True, HMM=False)
- print("Full Mode: " + "/ ".join(seg_list)) # 全模式
- seg_list = jieba.cut("我来到北京清华大学", cut_all=False, HMM=True)
- print("Default Mode: " + "/ ".join(seg_list)) # 默认模式
- seg_list = jieba.cut("他来到了网易杭研大厦", HMM=False)
- print(", ".join(seg_list))#搜索引擎模式
结果:
二、打开电脑中的txt文件:
三、转化编码
四、主要功能方法
五、自定义词典:
1、用法: jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径
2、词典格式和 dict.txt
一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。file_name
若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码。
3、jieba.add_word(word, freq=None, tag=None)
和 del_word(word)
可在程序中动态修改词典。
4、 suggest_freq(segment, tune=True)
可调节单个词语的词频,使其能(或不能)被分出来。
5、频率问题:
要想切分出喵星人,只要满足
P(喵星人) =max{ P(喵)*P(星)*P(人), P(喵星)*P(人), P(喵)*P(星人), P(喵星人) }
(喵喵喵???这什么玩意)
六、词性标注:
jieba.posseg.POSTokenizer(tokenizer=None)
新建自定义分词器,tokenizer
参数可指定内部使用的jieba.Tokenizer
分词器。jieba.posseg.dt
为默认词性标注分词器。- 标注句子分词后每个词的词性,采用和 ictclas 兼容的标记法。
- 用法示例
- jieba.posseg.cut()
>>> import jieba.posseg as pseg
>>> words = pseg.cut("我爱北京天安门")
>>> for word, flag in words:
... print('%s %s' % (word, flag))
...
我 r
爱 v
北京 ns
天安门 ns
七、关键词提取:(看不懂)
基于 TF-IDF 算法的关键词抽取
基于 TextRank 算法的关键词抽取
八、并行分词:
提高运行速度
不支持windows
九、Tokenize:返回词语在原文的起止位置
- 注意,输入参数只接受 unicode
- 默认模式
- 搜索模式
十、词频统计
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import jieba
import jieba.analyse
import re,collections
def getNum(text,path):
word = []
counter = {}
seg_list3 = jieba.cut(text,cut_all=True)
listStr="#".join(seg_list3)
#print "全模式: ",listStr
list3 = listStr.decode("utf-8").split('#')
for w in list3:
if not w in word:
word.append(w)
if not w in counter:
counter[w] = 1
else:
counter[w] += 1
counter_list = sorted(counter.items(), key=lambda x: x[1], reverse=True)
#排序:key=排序所用的函数,reverse=是否由大到小排列
#print counter_list
f = open(path,"w")
for j in counter_list:
text= "\""+j[0].encode("gb18030").decode("gb18030")+"\","+str(j[1])
print text
f.write(text+"\n")
print "the result write in "+path+"..."
print "finish..."
f.close()
getNum(sys.argv[1],sys.argv[2])