川幡 太一 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
© Copyright 2024 ExpyDoc