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