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の関連コンテンツについては、過去の記事を検索するか、以下の関連記事を引き続きご覧ください。
関連
-
pythonを使ったオフィス自動化コード例
-
[解決済み】入力配列を形状(3,1)から形状(3,)にブロードキャストできない。)
-
ValueErrorです。入力に NaN、無限大、または dtype('float32'64) に対して大きすぎる値が含まれています。一般的な処理
-
[解決済み] [Solved] 'list'オブジェクトに'items'属性がないのはなぜですか?
-
[解決済み] Python リストの ndim 配列への再形成
-
[解決済み] そのようなファイルまたはディレクトリはありません:'/usr/local/bin/pip'
-
[解決済み] scikit-learn の TfidfVectorizer 。ValueError: np.nan は無効なドキュメントである。
-
[解決済み] ユーザー登録でエラー:そのようなテーブルがない:auth_user
-
Pythonのnumpy.append()
-
[Problem log] Python run エラー: str に str (not "int") を連結することしかできない。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ライブラリ libxml2 で関数 xmlCheckVersion が見つかりませんでした。libxml2 はインストールされていますか?" というメッセージが表示されます。
-
[解決済み] なぜnumpyでは負の累乗にできないのですか?
-
[解決済み] TkInterのウィジェットの.packと.configureの違い?
-
[解決済み] メニューに戻るオプションを動作させるには?
-
[解決済み] Pythonで末尾のゼロを削除する [重複]。
-
[解決済み] Python インデックスエラー value not in list...on .index(value)
-
[解決済み] defaultdict : 第 1 引数は callable か None でなければならない。
-
[解決済み] Django - render(), render_to_response() と direct_to_template() の違いは何ですか?
-
[解決済み] discord.pyでボットに自分自身のメッセージを編集させる方法
-
TypeError: 'float' object is not callable エラーとその解決法