python中国語分詞ツール:結巴分詞jieba

5189 ワード

http://blog.csdn.net/pipisorry/article/details/45311229
結巴分詞jieba
特長
    3つの分詞モードをサポートします.        正確なモードで、文を最も正確に切開しようとして、テキスト分析に適しています.        全モードは、文の中のすべての成語可能な言葉をスキャンし、速度は非常に速いが、曖昧さを解決することはできない.        検索エンジンモードは、正確なモードに基づいて、長語を再び切り分け、リコール率を高め、検索エンジンの分詞に適しています.    繁体字分詞のサポート    カスタム辞書のサポート
アルゴリズム#アルゴリズム#
接頭辞辞書による効率的な語図スキャンを実現し,文中の漢字の可能な成語をすべて生成する有向無環図(DAG)を生成するために動的計画を用いて最大確率経路を探索し,語周波数ベースの最大分割組合せを探し出して未登録語に対して漢字成語能力ベースのHMMモデルを採用し,Viterbiアルゴリズムを用いた.
分詞方法の説明
    jieba.cutメソッドは3つの入力パラメータを受け入れます:分詞が必要な文字列;cut_allパラメータは、フルモードを採用するかどうかを制御するために使用されます.HMMパラメータは、HMMモデルを使用するかどうかを制御するために使用されます.    jieba.cut_for_searchメソッドは2つのパラメータを受け入れます:分詞が必要な文字列;HMMモデルを使用するかどうか.この方法は検索エンジンが逆インデックスを構築するための分詞に適しており,粒度が比較的細い    分詞される文字列は、unicodeまたはUTF-8文字列、GBK文字列であってもよい.注意:GBK文字列を直接入力することは推奨されておらず、予想外に誤ってUTF-8に復号化される可能性があります    jieba.cutおよびjieba.cut_for_searchが返す構造は反復可能なgeneratorであり,forループを用いて分詞後に得られる各語(unicode)を得るか,あるいは    jieba.lcutおよびjieba.lcut_for_searchはlistに直接戻り、list(cul())を使用して変換することをお勧めします.ソースコードもこのようにして、関数呼び出しを少なくします.    jieba.Tokenizer(dictionary=DEFAULT_DICT)は、異なる辞書を同時に使用するためのカスタム分詞器を新規作成します.jieba.dtはデフォルトの分詞器であり、すべてのグローバル分詞関連関数がその分詞器のマッピングである.
 
カスタム辞書の追加
辞書に載せる    開発者は、jieba辞書にない単語を含むように、自分でカスタマイズした辞書を指定することができます.jiebaは新語認識能力があるが,自分で新語を追加することでより高い正解率を保証できる.    使用法:jieba.load_userdict(file_name) # file_nameはファイルクラスオブジェクトまたはカスタム辞書のパスです.    辞書のフォーマットはdict.txtと同じで、1つの語が1行を占めています.各行は3つの部分に分かれている:語、語周波数(省略可能)、語性(省略可能)、スペースで区切られ、順序は逆転できない.file_nameがパスまたはバイナリ方式で開いているファイルの場合、ファイルはUTF-8符号化する必要があります.    ワード周波数省略時に自動計算を用いて,そのワードを区別できるワード周波数を保証する.例えば、革新弁公室3 iクラウドコンピューティング5ケイトリンnz台で分詞器を変更する
(デフォルトはjieba.dt)のtmp_dirとcache_fileプロパティ.制限されたファイルシステムに使用するキャッシュファイルが存在するフォルダとそのファイル名をそれぞれ指定できます.    例:        カスタム辞書:https://github.com/fxsjy/jieba/blob/master/test/userdict.txt         使用例:https://github.com/fxsjy/jieba/blob/master/test/test_userdict.py             以前:李小福/は/革新/弁/主任/も/クラウド/コンピューティング/方面/の/専門家/            カスタム辞書をロードした後:李小福/はい/革新弁/主任/も/はい/クラウドコンピューティング/方面/の/専門家/調整辞書    add_の使用word(word,freq=None,tag=None)とdel_word(word)はプログラム内で辞書を動的に修正することができる.    suggest_の使用freq(segment,tune=True)は、単一の語の語周波数を調整し、それを分けることができる(またはできない)ようにすることができる.    注意:自動計算の頻度は、HMM新語発見機能を使用しても無効になる場合があります.コード例:>>>print('/'.join(jieba.cut('postに入ればエラー.',HMM=False))/post/中将/エラー/>>jieba.suggest_freq(('中','将'),True)494>>>>print('/'.join(jieba.cut('postに入ればエラー.',HMM=False))/post/中/エラー/print('/'.join(jieba.cut('「台中」は正しくは切られないはず',HMM=False)))「/台/中/」/正しく/されない/切られないはず>>jieba.suggest_freq('台中',True)69>>>print('/'.join(jieba.cut('「台中」は正しくは切られないはず',HMM=False)))」「/台中/」/正しく/正しく/切開されない「ユーザカスタム辞書による曖昧誤り訂正能力の強化」---https://github.com/fxsjy/jieba/issues/14
へいれつぶんご
    原理:ターゲットテキストを行ごとに区切った後、各行のテキストを複数のPythonプロセスの並列分詞に割り当て、結果を集計し、分詞速度の大幅な向上を得る    pythonが付属するmultiprocessingモジュールに基づいて、Windowsは現在しばらくサポートされていません.    使用方法:        jieba.enable_parallel(4)#パラレル分詞モードを開き、パラメータはパラレルプロセス数        jieba.disable_parallel()並列分詞モードを閉じる    例:https://github.com/fxsjy/jieba/blob/master/test/parallel/test_file.py     実験結果:4コア3.4 GHz Linuxマシン上で金庸全集を正確に分詞し,単プロセス版の3.3倍の1 MB/sの速度を得た.    注:パラレル分詞は、デフォルトの分詞器jieba.dtおよびjieba.posseg.dtのみをサポートします.
jieba分詞のインストール
仮想環境でのインストール
cd /media/pika/files/mine/ENV/ubuntu_env
pika:/media/pika/files/mine/ENV/ubuntu_env$. bin/activate (ubuntu_env) pika:/media/pika/files/mine/ENV/ubuntu_env$pip install jieba
直接システムにインストールして使用
pip install jieba
またはpython 3にインストール:pip 3 install jieba
皮皮Blog
 
 
jieba中国語分詞の使用
例1:異なる分割モード
コードの例
# encoding=utf-8
import jieba

seg_list = jieba.cut("         ", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list))  #    

seg_list = jieba.cut("         ", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))  #     

seg_list = jieba.cut("          ")  #        
print(", ".join(seg_list))

seg_list = jieba.cut_for_search("               ,          ")  #       
print(", ".join(seg_list))

出力:
【   】:  /   /   /   /     /   /   

【    】:  /   /   /     

【    】: ,   ,  ,   ,   ,       (  ,“  ”       ,    Viterbi       )

【      】:   ,   ,   ,  ,   ,   ,   ,    ,      ,   ,    ,  ,  ,   ,   ,   ,       ,   

例2:カスタム辞書
 
import jieba
sentences = ["      ","         ","           ", 'costumer service']
# jieba.suggest_freq('  ', True)
# jieba.suggest_freq('  ', True)
words = [list(jieba.cut(doc)) for doc in sentences]
print(words)

[[' ', '  ', ' ', '  '],
 ['  ', ' ', ' ', '  ', ' ', '  '],
 [' ', ' ', '  ', '  ', '  ', ' ', '  '],
 ['costumer', ' ', 'service']]

[https://github.com/fxsjy/jieba]
皮皮Blog
from:http://blog.csdn.net/pipisorry/article/details/45311229
ref:公式サイトhttps://github.com/fxsjy/jieba*