1. ホーム
  2. スクリプト・コラム
  3. パイソン

Pythonによるjieba分割ライブラリ

2022-01-02 07:31:08
jiebaライブラリは、中国語のテキストを分割して1つの単語を得る必要がある中国語の単語分割のための優れたサードパーティライブラリである

1. jiebaライブラリのインストール

管理者権限でcmdウィンドウを起動し、pip install jiebaとコマンドを入力します。

2. jiebaライブラリの機能紹介

特徴
3つの分割モードに対応。
精密モード。 文章を最も正確に切り刻もうとするもので、テキスト分析に適している
フルモードです。 文中の単語になりうるものをすべて高速にスキャンするが、曖昧さは解消されない
検索エンジンモード。 正確なモードをベースに、長い単語を再度スライスして想起率を向上させる、検索エンジンの単語分割に適している
  • 従来の単語分割に対応
  • カスタム辞書のサポート
スプリットワード機能
jieba.cutとjieba.lcutメソッドは、次のようなものを受け取ります。 2つのパラメータを受け取ります。
  • 最初のパラメータは、分割する文字列です
  • cut_all パラメータは、フルパターンを使用するかどうかを制御するために使用されます。
<ブロッククオート
lcut は、返されたオブジェクトをリストオブジェクトとして返します。
jieba.cut_for_search と jieba.lcut_for_search メソッドは、1つの引数を取ります。
  • 分割する文字列
<ブロッククオート
この方法は、検索エンジンがより細かい粒度で転置インデックスを構築するのに適している
jieba.lcut_for_searchメソッドはリスト型を返します。
カスタム辞書を追加します。
開発者は独自のカスタム辞書を指定し、jieba lexiconにない単語を含めることができます。jiebaには新しい単語認識機能がありますが、独自に新しい単語を追加することで、より高い正答率を確保することができます
使用方法
カスタム辞書ファイルを使用する。
jieba.load_userdict(file_name) # file_nameはカスタム辞書へのパスです。
jiebaを使用して、プログラム内で動的に辞書を変更します。
jieba.add_word(new_words) # new_words は追加したい新しい単語です。
jieba.del_word(words) # 単語を削除する
キーワードを抽出します。
jieba.analyse.extract_tags(sentence,topK) # 最初にjieba.analyseをインポートする必要があります。
sentence は抽出されるテキストです
topKはTF/IDFの重みが最も大きいキーワードをいくつか返す、デフォルトは20
字句のアノテーション。
jieba.posseg.POSTokenizer(tokenizer=None) 新しいカスタムスプリッターで、tokenizerパラメーターは内部で使用するjiebaを指定することができます。
<ブロッククオート
jieba.posseg.dtは、デフォルトの字句注釈スプリッタです。
文の分割後、各単語の字句をictclas互換のマークアップ方式でマークする。

3. ケース

3.1. 正確なモード

import jieba
list1 = jieba.lcut("The People's Republic of China is a great country")
print(list1)
print("Exact pattern: "+"/".join(list1))

3.2. フルパターン

list2 = jieba.lcut("The People's Republic of China is a great country",cut_all = True)
print(list2,end=",")
print("full pattern:"+"/".join(list2))

3.3、サーチエンジンモード

list3 = jieba.lcut_for_search("The People's Republic of China is a great country")
print(list3)
print("Search engine mode: " + " ".join(list3))

3.4, 辞書を修正する

import jieba
text = "CITIC Investment Company has a game, CITIC also invested in a game company"
word = jieba.lcut(text)
print(word)
# Add words
jieba.add_word("CITIC Construction ")
jieba.add_word("investment company")
word1 = jieba.lcut(text)
print(word1)
# Delete the word
jieba.del_word("CITIC Construction ")
word2 = jieba.lcut(text)
print(word2)

3.5. 字句のアノテーション

import jieba.posseg as pseg
words = pseg.cut("I love Beijing Tiananmen")
for i in words:
print(i.word,i.flag)

3.6. 三国志の登場人物の登場回数を数える

三幕のテキストダウンロード
import jieba
txt = open("file path", "r", encoding='utf-8').read() # open and read the file
words = jieba.lcut(txt) # Split the text using exact mode
counts = {} # Store words and their occurrences as key-value pairs
for word in words:
    if len(word) == 1: # Single words are not counted
        continue
    else:
        counts[word] = counts.get(word, 0) + 1 # Iterate through all words, adding 1 for each occurrence   
items = list(counts.items()) # Convert key-value pairs into a list
items.sort(key=lambda x: x[1], reverse=True) # Sort by the number of occurrences of the word from largest to smallest 
for i in range(15):
    word, count = items[i]
    print("{0:<10}{1:>5}".format(word, count))

import jieba
excludes = {"General","but said","Jingzhou","two","not","cannot","so","how"}
txt = open("三国演义.txt", "r", encoding='utf-8').read()
words = jieba.lcut(txt)
counts = {}
for word in words:
    if len(word) == 1:
        continue
    elif word == "诸葛亮" or word == "孔明曰":
        rword = "Kongming"
    elif word == "Guan Gong" or word == "Yun Chang":
        rword = "Guan Yu"
    elif word == "Xuan De" or word == "Xuan De said":
        rword = "Liu Bei"
    elif word == "Mengde" or word == "Prime Minister":
        rword = "Cao Cao"
    else:
        rword = word
        counts[rword] = counts.get(rword,0) + 1
    
for i in excludes:
    del counts[i]
    
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True) 
for i in range(10):
    word, count = items[i]
    print ("{0:<10}{1:>5}".format(word, count))


<スパン



pythonのjiebaについては、この記事がすべてです。pythonのjiebaの関連コンテンツについては、過去の記事を検索するか、以下の関連記事を引き続きご覧ください。