基於jieba庫實現中文詞頻統計
阿新 • • 發佈:2018-12-24
要實現中文分詞功能,大家基本上都是在使用 jieba 這個庫來實現,下面就看看怎樣實現一個簡單文字分詞功能。
安裝
python的工具,安裝當然是使用pip安裝了。
pip install jieba
使用
先看一個小例子,下面的程式碼是從一個文字檔案中分詞並統計出現頻率最高的10個單詞,並列印到控制檯。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import jieba
import jieba.analyse
import codecs
import re
from collections import Counter
class WordCounter( object):
def count_from_file(self, file, top_limit=0):
with codecs.open(file, 'r', 'utf-8') as f:
content = f.read()
content = re.sub(r'\s+', r' ', content)
content = re.sub(r'\.+', r' ', content)
return self.count_from_str(content, top_limit= top_limit)
def count_from_str(self, content, top_limit=0):
if top_limit <= 0:
top_limit = 100
tags = jieba.analyse.extract_tags(content, topK=100)
words = jieba.cut(content)
counter = Counter()
for word in words:
if word in tags:
counter[ word] += 1
return counter.most_common(top_limit)
if __name__ == '__main__':
counter = WordCounter()
result = counter.count_from_file(r'/tmp/abc.txt', top_limit=10)
for k, v in result:
print k, v
程式碼說明:
- 程式碼首先從一個文字檔案讀入文字,並作了一些簡單的替換,比如替換多個空格為單空格等。
- 使用關鍵詞提取功能,提取權重最高的10個關鍵詞。
- 使用精確模式對檔案內容分詞。
- 根據關鍵詞和分詞結果,統計詞頻。
- 排序並返回詞頻最高的單詞和出現次數。
多說兩句
分詞模式
jieba 分詞有三種模式:精確模式、全模式和搜尋引擎模式,且分詞結果返回的是一個生成器。:
- 精確模式: jieba.cut(str) 預設實現。
- 全模式: jieba.cut(str, cut_all=True) 全模式是把文字分成儘可能多的詞。
- 搜尋引擎模式: jieba.cut_for_search(str, cut_all=True)
關鍵詞提取功能
jieba提供了關鍵詞提取功能,使用方法如下:
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
sentence 為待提取的文字
topK 為返回幾個 TF/IDF 權重最大的關鍵詞,預設值為 20
withWeight 為是否一併返回關鍵詞權重值,預設值為 False
allowPOS 僅包括指定詞性的詞,預設值為空,即不篩選
使用並行分詞模式
# 開啟並行分詞模式,引數為併發執行的程序數
jieba.enable_parallel(5)
# 關閉並行分詞模式
jieba.disable_parallel()
使用使用者字典分詞
jieba.load_userdict('user_dict.txt')