Pythonでサードパーティライブラリjiebaを使用してまとめた


尊敬する読者こんにちは:筆者は自分の文章が読めることを喜んでいますが、オリジナルと編集は容易ではありませんので、転載は本文の出所を明記し、本文の住所のハイパーリンクとブロガーのブログの住所を添付しなければなりません.https://blog.csdn.net/vensmallzeng.もし本文があなたに利益があると思ったら、またほめて励ましてください.筆者はここで読者一人一人に感謝します.筆者に連絡する必要がある場合は、メールボックスをメモしてください[email protected]あ、ご協力ありがとうございます!
 
 
 
自然言語処理プロジェクトでは、多かれ少なかれ「jiebaライブラリ」に接触します.知識点の忘れを避けるために、「jiebaライブラリ」に関する知識点をまとめてみましょう.
一、jieba分詞の三つのパターン
1、jiebaは3種類の分詞モードをサポートする
1精確モード:文を最も精確に切開しようとし、テキスト分析に適している.2全パターン:文の中のすべての成語可能な言葉をスキャンし、速度は非常に速いが、曖昧さを解決することはできない.③検索エンジンモード:正確なモードに基づいて、長語を再度切り分け、リコール率を高め、検索エンジンの分詞に適用する.
注意:分詞される文字列は、unicodeまたはUTF-8文字列、GBK文字列です.注意:GBK文字列を直接入力することは推奨されておらず、予想外に誤ってUTF-8に復号化される可能性があります
2、関連アルゴリズム
①接頭辞辞典による効率的な語図スキャンを実現し、文中の漢字の可能なすべての成語を生成する場合に構成される有向無環図(DAG)②動的計画を用いて最大確率経路を探索し、語周波数に基づく最大切り分けの組み合わせを探し出す③未登録語において、漢字成語能力に基づくHMMモデルを用い、Viterbiアルゴリズムを用いた.
3、関数呼び出し方法
① jieba.Cutメソッドは3つの入力パラメータを受け入れます:分詞が必要な文字列;cut_allパラメータは、フルモードを採用するかどうかを制御するために使用されます.HMMパラメータは、HMMモデルを使用するかどうかを制御するために使用される.② jieba.cut_for_searchメソッドは2つのパラメータを受け入れます:分詞が必要な文字列;HMMモデルを使用するかどうか.この方法は検索エンジンが逆インデックスを構築する分詞に適しており、粒度が細い.③ jieba.Cutおよびjieba.cut_for_searchが返す構造は反復可能なgeneratorであり,forループを用いて分詞後に得られる各語(unicode)を得るかjiebaを用いることができる.lcutおよびjieba.lcut_for_searchはlistに直接戻ります.④ jieba.Tokenizer(dictionary=DEFAULT_DICT)は、異なる辞書を同時に使用できるカスタム分詞器を新規作成します.jieba.dtはデフォルトの分詞器であり、すべてのグローバル分詞関連関数がその分詞器のマッピングである.
呼び出しコードの例
# 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       )

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

二.カスタム辞書の追加
1、辞書を載せる
①開発者は、jieba辞書にない単語を含むように、自分でカスタマイズした辞書を指定することができます.jiebaは新語の認識能力があるが、自分で新語を追加することでより高い正解率を保証できる2用法:jieba.load_userdict(file_name) # file_nameはファイルクラスオブジェクトまたはカスタム辞書のパス③辞書フォーマットはdict.txtと同様に、1つの語が1行を占める.各行は3つの部分に分かれている:語、語周波数(省略可能)、語性(省略可能)、スペースで区切られ、順序は逆転できない.file_nameがパスまたはバイナリ方式で開いているファイルの場合、ファイルはUTF-8符号化する必要があります.④ワード周波数省略時に自動計算を用いてそのワードを区別できるワード周波数を保証する.
次のようになります.
    3 i
    5
    nz
  

⑤分詞器(デフォルトはjieba.dt)のtmp_dircache_fileの属性を変更し、キャッシュファイルが存在するフォルダとそのファイル名をそれぞれ指定して、制限されたファイルシステムに使用できます.
例:
カスタムライブラリをロードする前に、李小福/はい/革新/事務/主任/はい/クラウド/コンピューティング/方面/専門家/
カスタム辞書をロードした後:李小福/はい/革新弁公室/主任/はい/クラウドコンピューティング/方面/専門家/
2、辞書の調整
①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)))
「/  /」/  /  /  / /  

三、キーワード抽出
1、TF-IFアルゴリズムに基づくキーワード抽出
jieba.analyse.extract_tags(sentence,topK=20,withWeight=False,allowPOS=()パラメータ1:sentenceは抽出対象テキストパラメータ2:topKはいくつかのTF/IDF重みが最も大きいキーワードを返し、デフォルト値は20パラメータ3:withWeightはキーワード重み値を一括して返すかどうか、デフォルト値はFalseパラメータ4:allowPOSは指定語性の語のみを含み、デフォルト値は空である.つまりフィルタしない
2、TextRankアルゴリズムに基づくキーワード抽出
jieba.analyse.textrank(sentence,topK=20,withWeight=False,allowPOS=(‘ns’,‘n’,‘vn’,‘v’))は直接使用され、インタフェースは同じであり、デフォルトのフィルタ語性に注意する.
この方法の具体的な考え方については、「http://web.eecs.umich.edu/~mihalcea/papers/mihalcea.emnlp04.pdf”.
四、品詞表記
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

五、Tokenize:元の単語の開始位置を返す
①デフォルトモード
呼び出しコードの例:
入力
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

注意:入力パラメータはunicode符号化のテキストのみです.
 
 
 
日がたつにつれて、君と共に進み、小結を増やし、未完に続く.