漢字を構成する部首/偏旁のデータセット
2018-08-06

kanji_header

kanjivg-radicalは、漢字を構成する部首偏旁を容易に扱えるように対応付けしたデータセットです。

「脳」という漢字は、「月」「⺍」「凶」のように幾つかのまとまりごとに細分化できます。このように意味ある要素に分解しデータセットにすることで、漢字を文字的に分解して扱ったり、逆に特定の部首/偏旁を持つ漢字を一括して検索することができます。

このデータセットは、KanjiVGで公開されているsvgデータを抽出および加工して作成されています。そのため、本データセットに含まれる部首/偏旁のアノテーションはすべてKanjiVGに準拠します。


ダウンロード

以下のGitHubレポジトリからjson形式のファイルをダウンロードできます。data/配下にある各種jsonファイルが、データセットの本体です。

yagays/kanjivg-radical


データセットの詳細

kanjivg-radicalには4種類のデータが含まれています。

  1. 漢字と部首/偏旁の変換データ
  2. 漢字と要素の変換データ
  3. 漢字と部首/偏旁の変換データのうち、左右に分割できる漢字
  4. 漢字と部首/偏旁の変換データのうち、上下に分割できる漢字

以下では、部首/偏旁はradical、要素はelement、左右はleft_right、上下はtop_buttomと表現しています。

1. 漢字と部首/偏旁の変換データ

漢字と部首/偏旁を対応付けしたデータセットです。漢字から部首/偏旁と、部首/偏旁から漢字の2種類のデータがあります。

# kanji2radical.jsonのサンプル
"脳": [
    "月",
    "⺍",
    "凶"
]
# radical2kanji.jsonのサンプル
"月": [
    "肝",
    "育",
    "胆",
    "朦",
    "脱",
...

2. 漢字と要素の変換データ

漢字と要素を対応付けしたデータセットです。漢字から要素と、要素から漢字の2種類のデータがあります。

ここで使用している「要素」いう言葉は、部首/偏旁を構成する更に細かい単位での漢字のことを指しています。言語学的に定義された単語ではなく、KanjiVGで利用されていたelementの対訳として用いています。

このデータでは構成している要素をすべて列挙しているので、結果の中には重複が含まれます。以下の例だと脳には「凶」という要素が含まれていますが、同時に「乂」という要素も含まれているため、どちらもkanji2elementの結果として出力されます。

# kanji2element.jsonのサンプル
"脳": [
    "乂",
    "凶",
    "丿",
    "凵",
    "⺍",
    "月"
]
# element2kanji.json
"月": [
    "溯",
    "齟",
    "蔡",
    "羂",
    "肝",
    "育",

3. 漢字と部首/偏旁の変換データのうち、左右に分割できる漢字

1.のデータセットのうち、漢字の構成が左と右の2つに分割できるものだけを集めたデータです。3つ以上に分割される漢字や、左右のどちらかが複数に分割される漢字は含まれていません。

# kanji2radical_left_right.jsonのサンプル
{'乢': ['山', '乙'],
 '嶋': ['山', '鳥'],
 '恥': ['耳', '心'],
 '擦': ['扌', '察'],
...

4. 漢字と部首/偏旁の変換データのうち、上下に分割できる漢字

1.のデータセットのうち、漢字の構成が上と下の2つに分割できるものだけを集めたデータです。3つ以上に分割される漢字や、上下のどちらかが複数に分割される漢字は含まれていません。

# kanji2radical_top_buttom.jsonのサンプル
{'云': ['二', '厶'],
 '賃': ['任', '貝'],
 '輩': ['非', '車'],
 '雪': ['雨', '⺕'],
 ...

統計

登録漢字数 登録部首/偏旁/要素数
kanji2radical 6,279 1,300
kanji2element 6,279 1,306
kanji2radical_left_right 3,190 1,013
kanji2radical_top_buttom 1,088 643

使い方

配布しているjsonファイルを、ハッシュ関数や辞書形式など任意のプログラミング言語で読み込んで使用します。

ここでは、Pythonでの利用方法を例示します。

import json

def load_json(filename):
    with open(filename) as f:
        d = json.load(f)
    return d

kanji2radical = load_json("kanji2radical.json")
radical2kanji = load_json("radical2kanji.json")    
kanji2radical["脳"] # kanji to radicals

radical2kanji["月"] # radical to kanjis

より詳細な利用方法はexample/basic_usage.ipynbを参照ください。

作成方法

KanjiVGで公開されているすべての漢字に対して、svg内に含まれるgタグのkvg:element属性を抽出しています。抽出方法により、データセットに以下の違いがあります。

  • kanji2radical.jsonなどの漢字と部首/偏旁の変換データは、対象となる漢字の直下に含まれるkvg:element属性のみを抽出
  • kanji2element.jsonなどの漢字と要素の変換データは、すべてのkvg:element属性を再帰的に抽出

対象としたバージョンは最新版である2016/04/26リリースであり、variantを含まないkanjivg-20160426-main.zipを利用しています。

ちなみに、このデータセットには含まれていませんが、KanjiVGには他にも一画ごとのストロークの形状をkvg:typeとして分類し記録しています。そういったより詳細な漢字の図形的情報が必要な場合は、本家のデータセットを参照ください。

Format - KanjiVG

ライセンス

このリソースはクリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

参考

CHISE 漢字構造情報データベースの方が、より網羅性が高いデータセットです。CJK統合文字の拡張を含めてアノテーションが付けられています。

このエントリーをはてなブックマークに追加