EDRDG KANJIDIC Project 由来の13,108個の漢字データベースを基にして、対象漢字の情報取得やプロットが可能なパッケージの紹介です。
KANJIDIC Projectは下記のとおりです。
https://www.edrdg.org/wiki/index.php/KANJIDIC_Project
漢字データベースは漢字だけでなく、Unicode、画数、常用漢字や教育漢字などの漢字範囲、漢字検定レベル、音読み、訓読みなどが収録されています。また、「tbl class」なので直接操作も可能です。
パッケージバージョンは0.14.1。実行コマンドはwindows 11のR version 4.3.3で確認しています。
パッケージのインストール
下記コマンドを実行してください。
# パッケージのインストール
install.packages("kanjistat")
コマンドの紹介
詳細はコマンド、パッケージのヘルプを確認してください。
# パッケージの読み込み
library("kanjistat")
### フォントの準備 #####
# システムにあるフォントを確認
Fontlist <- sysfonts::font_files()
# フォントの情報を取得
Meiryo <- systemfonts::match_font("Meiryo")
YuMincho <- systemfonts::match_font("Yu Mincho")
HGSoeiP <- systemfonts::match_font("HGSoeiPresenceEB")
HGGyoshotai <- systemfonts::match_font("HGGyoshotai")
# 使用できるようにフォントを登録
sysfonts::font_add(family = "Meiryo", regular = Meiryo$path)
sysfonts::font_add(family = "YuMincho", regular = YuMincho$path)
sysfonts::font_add(family = "HGSoeiP", regular = HGSoeiP$path)
sysfonts::font_add(family = "HGGyoshotai", regular = HGGyoshotai$path)
# 確認
sysfonts::font_families()
########
# 13,108収録の漢字データベース:kbase
# 構造の確認
str(kbase)
# Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 13108 obs. of 13 variables:
# $ kanji : chr "人" "一" "大" "日" ...
# $ unicode : 'hexmode' int 4eba 4e00 5927 65e5 51fa 4e2d 672c 5e74 4e0a 5b50 ...
# $ strokes : int 2 1 3 4 5 4 5 6 3 3 ...
# $ class : Factor w/ 4 levels "kyouiku","jouyou",..: 1 1 1 1 1 1 1 1 1 1 ...
# $ grade : int 1 1 1 1 1 1 1 1 1 1 ...
# $ kanken : Factor w/ 12 levels "10","9","8","7",..: 1 1 1 1 1 1 1 1 1 1 ...
# $ jlpt : int 5 5 5 5 5 5 5 5 5 5 ...
# $ wanikani : int 1 1 1 2 2 2 2 4 1 2 ...
# $ frank : int 1 2 3 4 5 6 7 8 9 11 ...
# $ frank_news: int 5 2 7 1 13 11 10 6 35 72 ...
# $ read_on : chr "ジン" "イチ" "ダイ" "ニチ" ...
# $ read_kun : chr "ひと" "ひと-" "おお-" "ひ" ...
# $ mean : chr "person" "one" "large" "day" ...
# 例えば画数で抽出
# tidyverseパッケージの読み込み
# tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
install.packages("tidyverse");require("tidyverse")
}
kbase %>%
filter(strokes < 3)
# # A tibble: 50 × 13
# kanji unicode strokes class grade kanken jlpt wanikani frank frank_news read_on read_kun
# <chr> <hexmode> <int> <fct> <int> <fct> <int> <int> <int> <int> <chr> <chr>
# 1 人 4eba 2 kyouiku 1 10 5 1 1 5 ジン ひと
# 2 一 4e00 1 kyouiku 1 10 5 1 2 2 イチ ひと-
# 3 入 5165 2 kyouiku 1 10 5 1 31 56 ニュウ い.る
# 4 二 4e8c 2 kyouiku 1 10 5 1 61 9 ニ ふた
# 5 力 529b 2 kyouiku 1 10 4 1 65 62 リョク ちから
# 6 十 5341 2 kyouiku 1 10 5 1 140 8 ジュウ とお
# 7 八 516b 2 kyouiku 1 10 5 1 264 92 ハチ や
# 8 九 4e5d 2 kyouiku 1 10 5 1 327 55 キュウ ここの
# 9 七 4e03 2 kyouiku 1 10 5 1 420 115 シチ なな
#10 刀 5200 2 kyouiku 2 9 1 2 913 1794 トウ かたな
# # ℹ 40 more rows
# # ℹ 1 more variable: mean <chr>
# # ℹ Use `print(n = ...)` to see more rows
# 漢字またはUTF-8コードから漢字情報を表示:lookupコマンド
# 漢字またはUTF-8コードを単数,複数を指定:kanjiオプション
# 表示する情報を指定:whatオプション;"readmean","basic","morphologic"
lookup(kanji = "体", what = "readmean")
#体 --> ON: タイ, テイ | kun: からだ, かたち | nanori: なり
#meaning: body, substance, object, reality, counter for images
lookup(kanji = "体", what = "basic")
# kanji unicode strokes class grade kanken
#98 体 4f53 7 kyouiku 2 9
# jlpt wanikani frank frank_news read_on read_kun mean
#98 4 5 42 88 タイ からだ body
lookup(kanji = "体", what = "morphologic")
# kanji strokes radical radvar nelson_c idc components skip mean
#98 体 7 人 亻 <NA> ⿰ 本,木,亻 1-2-5 body
# 漢字を簡単プロット:plotkanjiコマンド
# フォントファミリーを指定:familyオプション
plotkanji(rep("体", 4),
family = c("Meiryo", "YuMincho", "HGSoeiP", "HGGyoshotai"),
width = NULL, height = NULL)
# 指定した漢字のビットマップオブジェクトを作成:kanjimatコマンド
# オブジェクトはkanjimat
Test <- kanjimat(kanji = "体", family = "HGGyoshotai", size = 512)
# 情報を確認
str(Test)
# List of 8
# $ char : chr "体"
# $ hex : 'hexmode' int 4f53
# $ padhex : chr "04f53"
# $ family : chr "HGGyoshotai"
# $ size : num 512
# $ margin : num 0
# $ antialias: logi TRUE
# $ matrix : num [1:512, 1:512] 0 0 0 0 0 0 0 0 0 0 ...
# - attr(*, "call")= chr "kanjimat(kanji = \"体\", family = \"HGGyoshotai\", size = 512)"
# - attr(*, "kanjistat_version")=Classes 'package_version', 'numeric_version' hidden list of 1
# ..$ : int [1:3] 0 14 1
# - attr(*, "Rversion")= chr "R version 4.3.3 (2024-02-29 ucrt)"
# - attr(*, "platform")= chr "x86_64-w64-mingw32"
# - attr(*, "png_type")= chr "cairo"
# - attr(*, "class")= chr "kanjimat"
# プロット
plot(Test)
# 漢字からUTF-8コードを取得:kanjiToCodepointコマンド
kanjiToCodepoint("体")
#[1] "4f53"
# UTF-8コードから漢字を取得:codepointToKanjiコマンド
codepointToKanji("4f53")
#[1] "体"
出力例
・漢字を簡単プロット:plotkanjiコマンド
・指定した漢字のビットマップオブジェクトを作成:kanjimatコマンド
少しでも、あなたの解析が楽になりますように!!