スライド 1

川幡 太一
1
 「漢字の構造」の表現
 Ideographic
Description Sequenceの略
 ISO/IEC 10646:2003 Annex Fにて用法を規定
構
⿰
木
⿰木冓
冓
⿰木⿱𠀎冉
⿱
𠀎
冉
⿱𠀎冉
2
 漢字構造情報の電子的表現

漢字字形の定義・検索に利用可能。
 漢字が7万文字を超えると、従来の方法では検索
は困難に。

異体字の照合や判定・フォント合成・文字認
識・OCR等にも応用可能。
 IDSの問題
同じ漢字を複数の方法で表現できる。
 同じ符号で包摂可能な漢字を異なる符号で表
現できる。

3
http://kanjidatabase.sourceforge.net/
 様々な漢字情報を収集/整理
 漢字字形はIDSでデータ化

UCS漢字
 GB 7589/7590 の漢字
 チュノム
 拡張漢字E候補漢字
 日本の国字(和製漢字の辞典)


ある「漢字」が符号化されているか、または
上記データにあるかをIDSで判別できるか?
4
必ずしも漢字部品の全てが、符号化さ
れているとは限らない
 I.

例:乌 →
⿹乌一(乌は符号文字にない)
 この問題については、台湾
CDP (Chinese
Document Processing) の作成した「漢字部品外
字フォント」が豊富な部品バリエーションがあり、
多くの漢字の分解に利用可。
特定の漢字符号に対して、IDSは必ず
しもユニークにならない
 II.

→ 「正規化」による「比較可能性」が必要
5
 分割点によるIDSの相違
例
傾
傾
傾
⿰
⿰
⿲
亻 頃
化 頁
亻 匕頁
⿰亻頃
⿰化頁
⿲亻匕頁
6
 分割レベルによるIDSの相違
例:
峠
峠
⿰
⿰
山 𠧗
山 ⿱
上 下
⿰山𠧗
⿰山⿱上下
7
 垂/繞のかかる範囲の違い
⿰
⿺
麥 面
麥 面
⿰麥面
⿺麥面
⿸
⿱
鹿 射 鹿 射
⿸鹿射
⿱鹿射
8
 統合可能な字形の違い
⿰
⿰
忄 青
忄 靑
⿱
⿱
衛 心 衞 心
同じ符号が異なるIDSで表記できる場合の他にも、同じIDSが複数の符号
に対応する、「重複符号化」の問題もある。
9
 「意味的」IDSと「表示的」IDSの違い
旗
⿸
㫃 其
VS.
旗
街
⿰
⿴
方 ⿱
𠂉 其
行 圭
街
VS.
⿲
彳圭亍
説文解字などを重視して意味的に漢字を分解しよう、という意識が働く
とき、実際の物理的な分解方法とは異なるIDSが構成される可能性がある。
10
現実のIDSは、上記の5つの問題が複雑に絡
み合い、「同一性」の判定をIDS文字列の単
純な比較だけで行うのは困難。
 解決に向けての4つの手段

IDS入力ルールの明確化
 IDCの統合
 IDS木構造の「正規化」
 統合可能な漢字部品 (DC)の「正規化」または
「同一視化」


過去に、IRG N1154として分解アルゴリズム
を提案したことがあったが、処理が重すぎた。
11
 入力時のルールを、Annex
F.3 に追加。
重ね合わせIDSは極力避ける
 「意味論的」ではなく「表現的」なIDSのみ

 例:辧(説文「判也。从刀。辡聲。」)は「⿴辡
刀」とせず「⿲辛刀辛」とする。
辧
辧
⿴
⿰
辡 刀
辛 刀辛
12
 IDSの比較の際、⿵⿸⿹は⿱に、⿺⿶⿷は
⿰に統合し、また⿶はノードの左右を入
れ替えて、⿱に統合する。
凶
凶
⿶
⿱
凵 㐅
㐅 凵
13
 IDSの「⿲/⿳」と「⿰/⿱」の曖昧さを
避けるため、⿲ABCは⿰A⿰BC等に置き換
える。
傾
傾
⿲
⿰
亻 匕 頁
亻
⿰
匕 頁
14
 IDSの「分割点」の曖昧さを避けるため、
木のノードのIDCと、その左枝のIDCが同
じ場合は、当該IDCを右側に移動する。
儲
儲
⿰
⿰
⿰
亻 言
者
亻
⿰
言 者
15
 前ページのルールは、ノードのIDCの左下
の漢字が、当該ノードのIDCと同じIDCで
分解可能な場合にも、分解して適用する。
(儲)
(儲)
(儲)
⿰
⿰
⿰
信
者
「信」は「⿰亻言」と
展開でき、右上ノード
とIDCが一致する。
⿰
亻 言
者
亻
⿰
言 者
16

IDSの縮約

IDS木の正規化後、IDS木の葉が符号化漢字(DC)
の場合は、ノードのIDSをデータベースから検索、
該当漢字があれば置換を行う。
(儲)
(儲)
(儲)
⿰
⿰
儲
亻
⿰
亻
諸
言 者
17
 IDS木構造の正規化例(1)
⿰
⿲
⿰
A
B
⿰
⿰
C
⿰
A1 A2 A3 B
C
A1 ⿰ B
A2
⿲
A1 A2 A3
処理ノードのIDCが横方向に
分解でき、かつその左側の文
字Aが、IDSデータベース上は
⿲A1A2A3と横方向に分解でき
る場合、Aはいったん、正規化
のために分解する。
⿰
⿰
C
A3
ノード左の漢字をIDS木構造に分解した
場合は、そのノードに対しても正規化
処理を再帰反復実行する。
18
 IDS木構造の正規化例(2)
一致
⿰
⿰
⿰
A1 ⿰ B
A2
⿰
⿰
A1
⿰
A2
A3
⿰
A1
⿰
⿰
C
A3
一致
A2
B C
⿰
⿰
A3
B
処理ノードの左側が同じIDCの場合、
当該IDCの左側を処理ノードの左側
(A1)に、右側を新設した処理ノード
右側ノードの左側に、処理ノード右
側を新設ノードの右側に移動する。
C
移動後、処理ノードを右側ノードに
移動し、同様の処理を再帰反復する。
19
 IDS木構造の正規化例(3)
⿰
A1
⿰
⿰
A2
A1
⿰
B
⿰
A2
⿰
A3
⿰
A3
A1
⿰
⿰
A2
X
⿰BC
C
処理ノードの左右がDCの場合、IDCと
の組み合わせで、IDSのデータベース
(ハッシュまたはトライ木)を検索す
る。該当漢字が検索できない場合は文
字列を上ノードに返す。
⿰BCがIDSデータベースに存在していな
くても、⿰A3⿰BCに対して、Xがデータ
ベースに存在する場合がある。
20
漢字の構成部品として「同等」と考えられる
ものが存在する。
 異符号を持つ同等な部品の判定には2つの方
法がある。

1.
IDSデータの格納時に「片寄せ」正規化


2.
メリット:単純/高速
デメリット:硬直的/片寄せ処理の無限ループ化を
防止する方法が必要
IDSデータ比較時に全「同等パターン」組み合
わせを生成、全比較


メリット:柔軟性/応用性が高い
デメリット:比較処理が複雑で遅くなる。
21

片寄せ時の無限ループ問題

「犬/大」のような部品は、同等とみなして「犬」に寄せ
ると、「大」と「丶」に分解され、分解がループする。
臭
犬
分解
分解
⿱
自
大
片寄せ正規化
大

片寄せ正規化
⿺
丶
無限ループ化
対策として、同等と考えられる部品のうち、「画数が
もっとも小さいもの」に寄せる。

「漢字画数データベース」を整備
22

IDS木構造の最上位ノードから正規化処理を行う






対象ノードのIDCが⿵⿶⿷⿸⿹⿺/⿲⿳ならばIDCを正規化する。
対象ノードのIDCと、左側IDCが一致したら、木の組み替えを行
う。(⿰⿰ABC → ⿰A⿰BC)
対象ノードのIDCと、左側文字の潜在IDCが同じならば、左側
ノード文字のIDS分解と正規化を行う。
対象ノードの左側DCを(片寄せの場合は)正規化し、右側ノー
ドを対象ノードにして再起的に処理を行う。
左右のノードがDCのノードに到達したら終了。
IDS木構造の最上位ノードから文字合成処理を行う。

対象ノードの全子ノードがDC/IDSならば、ノード全体でIDSを
構築してIDSデータベースを検索する。




符号化漢字がヒットしたらその文字列を返す。
符号化漢字がヒットしない場合は、IDSをそのまま返す。
対象ノードの子ノードが木構造なら再帰処理を行う
処理終了時には正規化IDSが完成
23
 アルゴリズムが単純
(全分解して、可能性のある全パターンを検索
する方法※に比較した場合)
 再帰を使えば非常に短いコードで記述可能。
 高速動作
 低メモリ消費
※ IRG N1154で発表し、IRGにおける重複漢字チェックに使用した
アルゴリズム
24
IDSは漢字構造を記述。(部品としてはCDP
外字が便利)
 IDSは漢字の検索/照合/フォント合成/
OCRなど、様々な応用が考えられる。
 IDSによる照合処理には正規化が必要。
 IDSの正規化には、「意味的 vs. 表示的
IDS」「分割点」「IDCの正規化」「DCの正
規化」の問題がある。
 本発表で提案するアルゴリズムは、上記の課
題を高速・低メモリで解決することを可能に
する。

25