NLP - jieba(キーワード抽出(TFIDF / TextRand))

キーワード抽出-TFIDF

単語の出現頻度(TFと略す用語頻度):単語の最大数が表示される
ここに画像を挿入説明
単語は比較的まれであるが、それはかつてこの記事のより多く表示されたら、
それはこの記事の特性を反映している可能性が高い、まさに私たちです必要なキーワード。
「逆ドキュメント頻度」(IDF)
ここに画像を挿入説明
TF-IDFと、正比例全体言語の単語の出現回数に反比例し、文書内の単語の出現回数

TF-IDFアルゴリズムに基づいてキーワード抽出

輸入jieba.analyse

  • jieba.analyse.extract_tags(文章、TOPK = 20、withWeight =偽、allowPOS =())
    • テキストを抽出する文
    • 最大のキーワードのいくつかのTF / IDF重量を返すことTOPK、デフォルト値は20です
    • withWeightあなたはまた戻って右のキーワード値を試すかどうかで、デフォルトはFalseです
    • allowPOSはフィルタリングしない単語の音声の唯一の指定された部分を、デフォルトは空である、などが
import jieba
import jieba.analyse as analyse

lines=open('NBA.txt',encoding='utf-8').read()
print ("  ".join(analyse.extract_tags(lines, topK=20, withWeight=False, allowPOS=())))
韦少  杜兰特  全明星  全明星赛  MVP  威少  正赛  科尔  投篮  勇士 
球员  斯布鲁克  更衣柜  张卫平  三连庄  NBA  西部  指导  雷霆  明星队

TF-IDFアルゴリズムのキーワード抽出サプリメント

  • テキストコーパスキーワード抽出経路に使用される逆文書頻度(IDF)は、カスタマイズされたコーパスに切り替えることができます
    • 使用法:jieba.analyse.set_idf_path(FILE_NAME)#file_nameにカスタムコーパスパス
      • カスタムコーパスの例では、参照ここ
      • 使用例を参照してくださいここに
  • ワード(ストップワード)キーワード抽出テキストコーパスは、コーパスを切り替えるカスタムパスに使用することができます停止
    • 使用法:jieba.analyse.set_stop_words(FILE_NAME)#file_nameにカスタムコーパスパス
      • カスタムコーパスの例では、ここを参照してください
      • 使用例を参照してくださいここに
  • 一緒に再値の例をキーワードに復帰する権利を持つキーワード
    • 使用例を参照してくださいここに

キーワードに基づいて抽出アルゴリズムTextRank

jieba.analyse.textrank(文章、TOPK = 20、 withWeight =偽、allowPOS =( 'NS'、 'N'、 'VN'、 'V')は) 直接使用され、同一のインタフェースは、デフォルトの音声を濾過することに注意してください。
jieba.analyse.TextRank()新しいカスタムTextRankインスタンス
の基本的な考え方:

  • テキストは、キーワードは単語ある抽出されます
  • 固定ウィンドウ・サイズ(スパン属性を調整することにより、デフォルト5)において、単語間の共起関係を、図コンストラクト
  • PageRankの中図の計算ノード、無向重み付きノート図。
import jieba.analyse as analyse
lines = open('NBA.txt').read()
print "  ".join(analyse.textrank(lines, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')))
print "---------------------我是分割线----------------"
print "  ".join(analyse.textrank(lines, topK=20, withWeight=False, allowPOS=('ns', 'n')))

スピーチのタグ付け

  • jieba.posseg.POSTokenizerパラメータトークナイザ(トークナイザ=なし)新しいカスタムトークナイザは、内部使用のjieba.Tokenizerトークナイザを指定します。jieba.posseg.dtスピーチタグ付けはデフォルトのワードブレーカです。
  • スピーチの言葉、および互換性のictclas表記を使用した後、それぞれの文の単語をラベリング。
  • 計算スピーチテーブルの特定の部分を参照すると、中国の音声タグのセットを
import jieba.posseg as pseg
words = pseg.cut("我爱自然语言处理")
for word, flag in words:
    print('%s %s' % (word, flag))

パラレル単語

原理:対象のテキストプレスラインセパレータ、かなりのアップグレード複数のPythonのプロセスの並列語にテキストの各行に割り当てられ、その後、スピードベースの単語を得るために、結果をマージは、Windowsをサポートしていない現在、Pythonのマルチプロセッシングモジュールが付属しています

用法:
jieba.enable_parallel(4)#オープンパラレルワードモードでは、パラメータは、並列処理の数である
jieba.disable_parallel()#近い文モードパラレル
結果:4コア3.4GHz以上のLinuxマシン上で、金庸正確な単語の全集、アクセス1MB /秒の速度、およびプロセスの3.3倍つのバージョンです。

注意:パラレル言葉は、デフォルトのトークナイザのjieba.dtとjieba.posseg.dtをサポートしています。

import sys
import time
import jieba

jieba.enable_parallel()
content = open(u'西游记.txt',"r").read()
t1 = time.time()
words = "/ ".join(jieba.cut(content))
t2 = time.time()
tm_cost = t2-t1
print('并行分词速度为 %s bytes/second' % (len(content)/tm_cost))

jieba.disable_parallel()
content = open(u'西游记.txt',"r").read()
t1 = time.time()
words = "/ ".join(jieba.cut(content))
t2 = time.time()
tm_cost = t2-t1
print('非并行分词速度为 %s bytes/second' % (len(content)/tm_cost))

トークン化:元のテキスト内の単語の開始と終了を返します。

入力パラメータはUnicodeのみを受け入れることに注意してください

print "这是默认模式的tokenize"
result = jieba.tokenize(u'自然语言处理非常有用')
for tk in result:
    print("%s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))

print "\n-----------我是神奇的分割线------------\n"

print "这是搜索模式的tokenize"
result = jieba.tokenize(u'自然语言处理非常有用', mode='search')
for tk in result:
    print("%s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))

おすすめ

転載: blog.csdn.net/lgy54321/article/details/90670902