import jieba
'''
添加自定義詞典
1、載入詞典:
a、開發者可以指定自己自定義的詞典,以便包含 jieba 詞庫裏沒有的詞。雖然 jieba 有新詞識別能力,但是自行添加新詞可以保證更高的正確率
b、用法: jieba.load_userdict(file_name),file_name 爲文件類對象或自定義詞典的路徑
c、詞典格式和 dict.txt 一樣,一個詞佔一行;每一行分三部分:詞語、詞頻(可省略)、詞性(可省略),用空格隔開,順序不可顛倒。
file_name 若爲路徑或二進制方式打開的文件,則文件必須爲 UTF-8 編碼。
d、詞頻省略時使用自動計算的能保證分出該詞的詞頻。
'''
content = '李小福是創新辦主任也是雲計算方面的專家'
jieba.load_userdict('text.txt')
print('-'.join(jieba.cut(content, cut_all=False, HMM=True)))
# 李小福-是-創新辦-主任-也-是-雲計算-方面-的-專家
print(','.join(jieba.cut(content, cut_all=False, HMM=True)))
# 李小福-是-創新-辦-主任-也-是-雲-計算-方面-的-專家
'''
2、調整詞典
a、使用 add_word(word, freq=None, tag=None) 和 del_word(word) 可在程序中動態修改詞典。
b、使用 suggest_freq(segment, tune=True) 可調節單個詞語的詞頻,使其能(或不能)被分出來。
注意:自動計算的詞頻在使用 HMM 新詞發現功能時可能無效。
'''
print(','.join(jieba.cut('如果放到post中將出錯', HMM=False)))
# 如果,放到,post,中將,出錯
jieba.suggest_freq(('中', '將'), True)
print(','.join(jieba.cut('如果放到post中將出錯', HMM=False)))
# 如果,放到,post,中,將,出錯
'''
3、關鍵詞提取
1、import jieba.analyse
a、jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
sentence 爲待提取的文本
topK 爲返回幾個 TF/IDF 權重最大的關鍵詞,默認值爲 20
withWeight 爲是否一併返回關鍵詞權重值,默認值爲 False
allowPOS 僅包括指定詞性的詞,默認值爲空,即不篩選
b、jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 實例,idf_path 爲 IDF 頻率文件
2、關鍵詞提取所使用逆向文件頻率(IDF)文本語料庫可以切換成自定義語料庫的路徑
用法: jieba.analyse.set_idf_path(file_name) # file_name爲自定義語料庫的路徑
自定義語料庫示例:
勞動防護 13.900677652
勞動防護 13.900677652
生化學 13.900677652
生化學 13.900677652
......
用法示例:
jieba.analyse.set_idf_path("../extra_dict/idf.txt.big");
tags = jieba.analyse.extract_tags(content, topK=topK)
print(",".join(tags))
3、關鍵詞提取所使用停止詞(Stop Words)文本語料庫可以切換成自定義語料庫的路徑
用法: jieba.analyse.set_stop_words(file_name) # file_name爲自定義語料庫的路徑
自定義語料庫示例:
the
of
is
and
用法示例:
jieba.analyse.set_stop_words("../extra_dict/stop_words.txt")
jieba.analyse.set_idf_path("../extra_dict/idf.txt.big");
tags = jieba.analyse.extract_tags(content, topK=topK)
print(",".join(tags))
4、基於 TextRank 算法的關鍵詞抽取
基本思想:
a、將待抽取關鍵詞的文本進行分詞
b、以固定窗口大小(默認爲5,通過span屬性調整),詞之間的共現關係,構建圖
c、計算圖中節點的PageRank,注意是無向帶權圖
jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) 直接使用,接口相同,注意默認過濾詞性。
jieba.analyse.TextRank() 新建自定義 TextRank 實例
'''
'''
4、詞性標註
jieba.posseg.POSTokenizer(tokenizer=None) 新建自定義分詞器,tokenizer 參數可指定內部使用的 jieba.Tokenizer 分詞器。
jieba.posseg.dt 爲默認詞性標註分詞器。標註句子分詞後每個詞的詞性,採用和 ictclas 兼容的標記法。
用法示例:
import jieba.posseg as pseg
words = pseg.cut("我愛北京天安門")
for word, flag in words:
print('%s %s' % (word, flag))
結果:
我 r
愛 v
北京 ns
天安門 ns
'''
'''
5、Tokenize:返回詞語在原文的起止位置
注意,輸入參數只接受 unicode
默認模式:
result = jieba.tokenize(u'永和服裝飾品有限公司')
for tk in result:
print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))
結果:
word 永和 start: 0 end:2
word 服裝 start: 2 end:4
word 飾品 start: 4 end:6
word 有限公司 start: 6 end:10
搜索模式:
result = jieba.tokenize(u'永和服裝飾品有限公司', mode='search')
for tk in result:
print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))
結果:
word 永和 start: 0 end:2
word 服裝 start: 2 end:4
word 飾品 start: 4 end:6
word 有限 start: 6 end:8
word 公司 start: 8 end:10
word 有限公司 start: 6 end:10
'''
編輯整理參考:https://blog.csdn.net/alis_xt/article/details/53522435
jieba入門2
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.