python中国語分詞ツール
6679 ワード
python中国語分詞ツール jieba,https://github.com/fxsjy/jieba jieba_fast,https://github.com/deepcs233/jieba_fast nltk,https://github.com/nltk/nltk FoolNLTK,https://github.com/rockyzhengwu/FoolNLTK/blob/master/README_CH.md thulac,https://github.com/thunlp/THULAC-Python genius,https://github.com/duanhongyi/genius snownlp,https://github.com/isnowfy/snownlp pynlpir,https://github.com/tsroten/pynlpir
jieba
「結巴」中国語の分詞:https://github.com/fxsjy/jiebaアルゴリズム1)接頭辞辞書に基づいて効率的な語図スキャンを実現し,文中の漢字の可能なすべての成語状況からなる有向無環図(DAG)を生成する.2)動的計画を採用して最大確率経路を探し、語周波数に基づく最大切り分けの組み合わせを探し出す.3)未登録語については,漢字成語能力に基づくHMMモデルを用い,Viterbiアルゴリズムを用いた.
1、分詞
3つの分詞モードをサポートします:正確なモード、文を最も正確に切開しようとして、テキスト分析に適しています;全モードは、文の中のすべての成語可能な言葉をスキャンし、速度は非常に速いが、曖昧さを解決することはできない.検索エンジンモードは、正確なモードに基づいて、長語を再び切り分け、リコール率を高め、検索エンジンの分詞に適しています.
出力:
特に:jieba.Cutおよびjieba.cut_for_searchが返す構造は反復可能なgeneratorであり,forループを用いて分詞後に得られる各語を得るかjieba.lcutおよびjieba.lcut_for_searchはlistに直接戻ります.
2、品詞表記
出力:
3、キーワード抽出
TF-IDFアルゴリズムに基づくキーワード抽出構文:jieba.analyse.extract_tags(sentence,topK=20,withWeight=False,allowPOS=()sentenceは抽出されるテキストtopKがいくつかのTF/IDF重みを返す最大のキーワードであり、デフォルト値は20 withWeightがキーワード重み値を一括して返すかどうかであり、デフォルト値はFalse allowPOSが所定の語性を指す語のみを含み、デフォルト値は空であり、フィルタリングされない
出力:
TextRankアルゴリズムに基づくキーワード抽出構文:jieba.analyse.textrank(sentence,topK=20,withWeight=False,allowPOS=(‘ns’,‘n’,‘vn’,‘v’))は直接使用され、インタフェースは同じであり、デフォルトのフィルタ語性に注意する.論文:Mihalcea R,Tarau P.TextRank:Bringing Order into Texts[J].Emnlp, 2004:404-411. 基本思想:抽出対象キーワードのテキストを分詞して固定ウィンドウサイズ(デフォルトは5、span属性調整)で、語間の共起関係を構築し、図計算図中のノードのPageRankを構築し、無方向帯権図であることに注意する
出力:
jieba_fast
cpythonを用いてjieba辞書で計算されたDAGとHMMのvitrebi関数を書き換え,速度を大幅に向上させた.https://github.com/deepcs233/jieba_fast
jieba
「結巴」中国語の分詞:https://github.com/fxsjy/jiebaアルゴリズム1)接頭辞辞書に基づいて効率的な語図スキャンを実現し,文中の漢字の可能なすべての成語状況からなる有向無環図(DAG)を生成する.2)動的計画を採用して最大確率経路を探し、語周波数に基づく最大切り分けの組み合わせを探し出す.3)未登録語については,漢字成語能力に基づくHMMモデルを用い,Viterbiアルゴリズムを用いた.
1、分詞
3つの分詞モードをサポートします:正確なモード、文を最も正確に切開しようとして、テキスト分析に適しています;全モードは、文の中のすべての成語可能な言葉をスキャンし、速度は非常に速いが、曖昧さを解決することはできない.検索エンジンモードは、正確なモードに基づいて、長語を再び切り分け、リコール率を高め、検索エンジンの分詞に適しています.
import jieba
seg1 = jieba.cut(" python, 。", cut_all=True)
print(' :', ' '.join(seg1))
seg2 = jieba.cut(" python, 。", cut_all=False)
print(" ( ):", ' '.join(seg2))
seg3 = jieba.cut_for_search(" python, 。")
print(" :", ' '.join(seg3))
print("
")
seg_list1 = jieba.lcut(" python, 。", cut_all=True)
print(seg_list1)
seg_list2 = jieba.lcut(" python, 。", cut_all=False)
print(seg_list2)
seg_list_search = jieba.lcut_for_search(" python, 。")
print(seg_list_search)
出力:
: python
( ): python , 。
: python , 。
[' ', ' ', ' ', ' ', 'python', '', ' ', '', '']
[' ', ' ', 'python', ',', ' ', '。']
[' ', ' ', 'python', ',', ' ', '。']
特に:jieba.Cutおよびjieba.cut_for_searchが返す構造は反復可能なgeneratorであり,forループを用いて分詞後に得られる各語を得るかjieba.lcutおよびjieba.lcut_for_searchはlistに直接戻ります.
2、品詞表記
import jieba.posseg as pseg
words = pseg.cut(" , 。")
for word, flag in words:
print('%s %s' % (word, flag))
出力:
n
, x
l
。 x
3、キーワード抽出
TF-IDFアルゴリズムに基づくキーワード抽出構文:jieba.analyse.extract_tags(sentence,topK=20,withWeight=False,allowPOS=()sentenceは抽出されるテキストtopKがいくつかのTF/IDF重みを返す最大のキーワードであり、デフォルト値は20 withWeightがキーワード重み値を一括して返すかどうかであり、デフォルト値はFalse allowPOSが所定の語性を指す語のみを含み、デフォルト値は空であり、フィルタリングされない
import jieba.analyse
keyword = jieba.analyse.extract_tags(' , , 。')
print(keyword)
keywords = jieba.analyse.extract_tags(' , , 。',
topK=5, withWeight=True)
print(keywords)
出力:
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
[(' ', 1.33032263925), (' ', 1.20652280124125), (' ', 1.1546548197325), (' ', 1.02799048121375), (' ', 0.90122942182)]
TextRankアルゴリズムに基づくキーワード抽出構文:jieba.analyse.textrank(sentence,topK=20,withWeight=False,allowPOS=(‘ns’,‘n’,‘vn’,‘v’))は直接使用され、インタフェースは同じであり、デフォルトのフィルタ語性に注意する.論文:Mihalcea R,Tarau P.TextRank:Bringing Order into Texts[J].Emnlp, 2004:404-411. 基本思想:抽出対象キーワードのテキストを分詞して固定ウィンドウサイズ(デフォルトは5、span属性調整)で、語間の共起関係を構築し、図計算図中のノードのPageRankを構築し、無方向帯権図であることに注意する
import jieba.analyse
keyword = jieba.analyse.textrank(' , , 。')
print(keyword)
keywords = jieba.analyse.textrank(' , , 。',
topK=30, withWeight=True)
print(keywords)
出力:
[' ', ' ']
[(' ', 1.0), (' ', 0.9961264494011037)]
jieba_fast
cpythonを用いてjieba辞書で計算されたDAGとHMMのvitrebi関数を書き換え,速度を大幅に向上させた.https://github.com/deepcs233/jieba_fast