【Python】漢字を分解するライブラリを使ってみた【部首分解】
Python で漢字を部首やさらに細かい部分に分解してくれるライブラリがあったので使ってみました。
このライブラリを使うと、ある漢字を与えると、その漢字を自動的に分解して部首(偏・旁・冠)や部分をリスト形式で返してくれます。
kanjivg-radical というライブラリで、以下のURLからダウンロードし、解凍します。
https://github.com/yagays/kanjivg-radical
Contents
json 形式のファイル読み込む
kanjivg-radical では json 形式のファイルを読み込むため、以下のような関数を用意します。
1 2 3 4 5 6 7 |
import json # json 形式ファイルを読み込むための関数 def load_json(filename): with open(filename, encoding='utf-8') as f: d = json.load(f) return d |
kanjivg-radical の特徴
このライブラリでできることは、大きく分けて以下の2つがあります。
- 漢字を部分(部首など)に分解する
- 部分(部首など)を含む漢字を抽出する
それぞれいくつか細かい特徴が異なる関数が用意されています。
漢字を部分(部首など)に分解する系
これは、「kanji2xxxx」となっている関数が該当します。
基本的に漢字を1文字与えると分解したものをリストで返します。
それぞれ使い方と結果を示します。
kanji2radical
文字を一回だけ分解します。
1 2 3 |
kanji2radical = load_json("./kanjivg-radical-master/data/kanji2radical.json") print(kanji2radical["砂"]) |
結果は以下のようになります。
[‘石’, ‘少’]
kanji2element
文字を再帰的に分解していきます。
1 2 3 |
kanji2element = load_json("./kanjivg-radical-master/data/kanji2element.json") print(kanji2element["砂"]) |
結果をみると、kanji2radical と比較して、細かく分解されていることが分かると思います。
[‘石’, ‘丿’, ‘少’, ‘口’, ‘小’]
kanji2radical_left_right
文字を「偏」と「旁」に分解します。「偏」と「旁」に分解できない漢字についてはエラーとなります。
1 2 3 |
kanji2radical_left_right = load_json("./kanjivg-radical-master/data/kanji2radical_left_right.json") print(kanji2radical_left_right["砂"]) |
結果は以下のとおり。
[‘石’, ‘少’]
kanji2radical_top_buttom
文字を「冠」と「脚」に分解します。「冠」と「脚」に分解できない漢字についてはエラーとなります。
1 2 3 |
kanji2radical_top_buttom = load_json("./kanjivg-radical-master/data/kanji2radical_top_buttom.json") print(kanji2radical_top_buttom["省"]) |
結果は以下のとおり。
[‘少’, ‘目’]
部分(部首など)を含む漢字を抽出する系
これは、「xxxx2kanji」となっている関数が該当します。
部分を与えると、それが含まれる漢字をリストで返します。
それぞれ、コードと結果のみを以下に示します。
radical2kanji
1 2 3 |
radical2kanji = load_json("./kanjivg-radical-master/data/radical2kanji.json") print(radical2kanji["少"]) |
[‘尠’, ‘沙’, ‘鈔’, ‘抄’, ‘眇’, ‘秒’, ‘省’, ‘劣’, ‘杪’, ‘紗’, ‘雀’, ‘歩’, ‘賓’, ‘炒’, ‘隲’, ‘毟’, ‘妙’, ‘砂’]
element2kanji
1 2 3 |
element2kanji = load_json("./kanjivg-radical-master/data/element2kanji.json") print(element2kanji["少"]) |
[‘尠’, ‘瀕’, ‘沙’, ‘鈔’, ‘濱’, ‘抄’, ‘鯊’, ‘頻’, ‘鬢’, ‘捗’, ‘眇’, ‘秒’, ‘殯’, ‘省’, ‘擯’, ‘莎’, ‘劣’, ‘嬪’, ‘渉’, ‘裟’, ‘杪’, ‘紗’, ‘雀’, ‘渺’, ‘顰’, ‘歩’, ‘賓’, ‘炒’, ‘繽’, ‘陟’, ‘蘋’, ‘緲’, ‘隲’, ‘毟’, ‘妙’, ‘檳’, ‘砂’, ‘娑’]
radical2kanji_left_right
1 2 3 |
radical2kanji_left_right = load_json("./kanjivg-radical-master/data/radical2kanji_left_right.json") print(radical2kanji_left_right["少"]) |
[‘尠’, ‘沙’, ‘鈔’, ‘抄’, ‘眇’, ‘秒’, ‘杪’, ‘紗’, ‘炒’, ‘妙’, ‘砂’]
関連記事
-
-
【Python】プログレスバーを表示させる【tqdm】
Python でスクリプトの実行時間が長くなると、進捗状況が知りたくなったので、標準出力にどのくらい
-
-
【Python】時系列データ(為替データ)をグラフ表示してみた。
今回は、pandas・matplotlib ライブラリを使って、時系列データ(為替データ)をグラフ表
-
-
【Atomエディタ】Python 開発用にインストールしてみた。
Python でプログラミングするときの エディタ を探していたのですが、とりあえず Atom とい
-
-
【Anaconda】Prompt 上で Git コマンドを実行する方法。
Anaconda のコマンドプロンプト(Anaconda Prompt)上で、Git Hub からダ
-
-
【Pandas】 DataFrame のインデックスを置き換える方法【Python】
今回は、Pandas の DataFrame型で、インデックス(index)を分かりやすいものに置き
-
-
【OpenCV】検出した顔画像部分を切り出す方法【Python】
OpenCV を使って、Python で画像の中から顔部分を切り出したときのメモです。 顔部分
-
-
【Spyder】引数のあるスクリプトを実行する方法。
Python の統合開発環境(IDE)である Spyder では、簡単にスクリプトを実行できます。
-
-
【Python】API を使って Amazon の商品情報を収集する方法。
AmazonAPI ライブラリをインストール 以下のコマンドで python-amazon-sim
-
-
【Pandas】 DataFrame のある列の最大値を含む行のインデックス値を取得する方法。
今回は、Pandas の DataFrame において、ある列で最大値を求めて、その最大値をもつ行に
-
-
【Pandas】 DataFrame で2行の列ごとの差を計算する方法【Python】
今回は、Pandas の DataFrame で、2行間の列ごとの値の差を計算し、その結果を Dat
- PREV
- 地図上に円を描いて直線距離を計測する方法
- NEXT
- 【競馬】即PATで入金する方法。