1. 程式人生 > >基於jieba庫實現中文詞頻統計

基於jieba庫實現中文詞頻統計

要實現中文分詞功能,大家基本上都是在使用 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

程式碼說明:

  1. 程式碼首先從一個文字檔案讀入文字,並作了一些簡單的替換,比如替換多個空格為單空格等。
  2. 使用關鍵詞提取功能,提取權重最高的10個關鍵詞。
  3. 使用精確模式對檔案內容分詞。
  4. 根據關鍵詞和分詞結果,統計詞頻。
  5. 排序並返回詞頻最高的單詞和出現次數。

多說兩句

分詞模式

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')