【簡單總結】jieba分詞

【簡單總結】jieba分詞回顧與總結

一、安裝方法

  1. 自動安裝 pip install jieba
  2. 半自動安裝:下載 http://pypi.python.org/pypi/jieba,解壓後運行 python setup.py install
  3. 手動安裝:將jieba目錄放置於當前目錄或sit-packages目錄下

二、jieba分詞簡單介紹

一、支持三種分詞模式與特點:

  1. 精準模式:試圖將句子最精確地切分開,適合文本分析
  2. 全模式:把句子中所有的可以成詞的詞語都掃描出來,速度非常快,但是不能解決歧義
  3. 搜索引擎模式:在精確模式的基礎上,對長詞可以再次切分,提高召回率,適合用於搜索引擎分詞
import jieba
 
s = u'jieba(結巴)是一個強大的分詞庫,完美支持中文分詞 '
cut = jieba.cut(s)
 
#三種模式
print( '【Output】精確模式:')
print (cut)
print ('/'.join(cut))
 
print( '【Output】全模式:')
print ('/'.join(jieba.cut(s,cut_all = True)))
 
print( '【Output】搜索引擎模式:')
print('/'.join(jieba.cut_for_search(s)))

 二、jieba分詞在處理中文文本分析是比較常用的工具,這裏主要是基於自學後得到的實現文本jieba分詞的常用流程:

加載自定義詞典——>獲取關鍵詞——>去除停用詞——>數據處理

1、加載自定義詞典
jieba分詞自帶詞典,可能不能包括一些專業詞彙,會造成分詞結果不準確,可以通過自定義詞典解決這一問題。

# 加載自定義詞典
jieba.load_userdict("newdic.txt")

其中“newdic.txt”是自定義詞典的路徑。其中自定義詞典的格式:一個詞佔一行;每一行分三部分,一部分爲詞語,另一部分爲詞頻(可省略),最後爲詞性(可省略),用空格隔開。

2、獲取關鍵詞
主要藉助jieba.cut()和jieba.lcut()兩個函數完成,兩個函數生成的對象不同,要注意後續操作。

# jieba.cut 生成generator
# 全模式分詞
seg_list = jieba.cut("我來北京上學", cut_all=True)
print("Full Model " + '/'.join(seg_list))

# 精確模式 (默認)
seg_list = jieba.cut("我來北京上學", cut_all=False)

# jieba.lcut 生成List
tags = jieba.lcut(text)
tags_df = pd.DataFrame({'segment': tags})

3、去除停用詞
去除停用詞後可以更精準的進行文本分析,停用詞表可以借鑑網上的中文停用詞詞表。首先要加載本地停用詞表,然後針對不同的對象採用特定的方法進行停用詞去除。

# 去除停用詞
stopword = pd.read_csv("stopwords.txt", header=None, names=['words'], encoding='utf-8')
tags_df = tags_df[~tags_df['segment'].isin(stopword.words)]
print(tags_df)

4、數據處理
文本一般進行停用詞去除後就可以進行後續處理,jieba分詞處理文本後,所得到的關鍵詞是會存在重複的情況,這裏通過計算關鍵詞詞頻進行文本的數據處理,可以得到出現次數較多的關鍵詞。

# 詞頻計數
word_count = tags_df.groupby('segment')['segment'].count().sort_values(ascending=False)
print(word_count[:5])

三、應用實例:

1.詞性標註:

import jieba.posseg as pseg  
test_sent = "jieba分詞在處理中文文本分析是比較常用的工具,這裏主要是基於自學後得到的實現文本jieba分詞的常用流程:"  
test_sent += "jieba分詞在處理中文文本分析是比較常用的工具,這裏主要是基於自學後得到的實現文本jieba分詞的常用流程:"  
result = pseg.cut(test_sent)  
for w in result:  
    print(w.word, "/", w.flag, ", ",)  
print("\n========")    

2.關鍵詞提取

import sys  
sys.path.append('../')  
import jieba  
import jieba.analyse  
from optparse import OptionParser  
USAGE = "usage: python extract_tags.py [file name] -k [top k]"  
parser = OptionParser(USAGE)  
parser.add_option("-k", dest="topK")  
opt, args = parser.parse_args()  
#'''
if len(args) < 1:  
    print(USAGE)  
    sys.exit(1)  
#'''   
file_name = args[0]
#file_name=u"story.txt"  
if opt.topK is None:  
    topK = 10  
else:  
    topK = int(opt.topK)   
content = open(file_name, 'rb').read()  
tags = jieba.analyse.extract_tags(content, topK=topK)  
print(",".join(tags) )

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章