120 likes | 248 Views
SLAT2/ChaKi.NET DB Model 解説資料 (兼 ChaKi-SLAT 統合状況の経過説明). 2009-06-26. (有) 総 和 技 研 森田 敏生 morita@sowa.com. ChaKi と SLAT の機能範囲. ChaKi.NET. SLAT2. ・ KWIC 検索・表示 ・文節 / 係り受けアノテー ションに特化した編集 ・文 - 語構造の表現 ・ Lexicon の管理 ・コロケーション / 統計 ・用途に応じた複数の RDBMS サポート ・ Windows / Rich Client
E N D
SLAT2/ChaKi.NET DB Model 解説資料(兼 ChaKi-SLAT 統合状況の経過説明) 2009-06-26 (有)総 和 技 研 森田 敏生 morita@sowa.com
ChaKiとSLATの機能範囲 ChaKi.NET SLAT2 ・KWIC検索・表示 ・文節 / 係り受けアノテー ションに特化した編集 ・文-語構造の表現 ・Lexiconの管理 ・コロケーション / 統計 ・用途に応じた複数のRDBMSサポート ・Windows / Rich Client ・Standalone or Client-Server ・アノテーションの 高度な編集 ・タグセットの作成支援 ・Web Application Thin Client ・Client-Server ・ドキュメントの表示 ・アノテーションの 表示/基本編集 ・アノテーションプロ ジェクトの管理 SLAT ChaKi ~ 2008 ~ 2008
現在のDatabase Model • 別紙1: SLAT2 DB Model(ER図) • 別紙2: ChaKi.NET DB Model(ER図) • 別紙3: ChaKi.NET のオブジェクトマッピング (クラス図) • 両者は共通部分において可能な限り互換に作成している。
DocumentとDocumentSet • Document • コーパス(DB)は、1つ以上のDocumentを持つ。 • Documentは、文字(内部表現はUCS-2)の一次元配列である。 • 文字インデックス(0, … , Ndoc-1) はDocumentに固有。 • 平文表現 {C(0), …, C(Ndoc-1)} をlarge textとして保持する。 • ChaKiの”String Search”(文字列検索・正規表現検索)は、この平文に対して行われる。 • Documentの例) bccwjの単一ファイル、新聞記事、書籍一冊、etc. • DocumentSet • アノテーション作業の対象とするDocumentの集合であり、コーパスに含まれるすべてのDocumentの部分集合である。 • DocumentSet間でDocumentを共有することはできない。(任意のDocumentは必ず1つのDocumentSetに属する。) • アノテーションを行う場合に必ず定義する必要がある。 • ChaKiでは、文節・係り受け情報インポート(=最初のアノテーション)の際に、全Documentを含む唯一のDocumentSetを作成する。つまり、ChaKiでは、コーパス=DocumentSetとみなす。
DocumentSet – Project – User Project1 DocumentSet1 User1 Project2 DocumentSet2 User2 Project3 DocumentSet 1 : n Project n : n User Projectとは、一連のアノテーションが実施・保持される作業環境であり、ひとつの Projectに複数の作業者が参加可能である。(※「一連の」=「同一基準によって付加された」)
Project – TagSet Project1 TagSet1 Project2 TagSet2 Project3 TagSet3 Project n : n TagSet ・ひとつのProjectで複数のTagSetを組み合わせて利用可能 ・TagSetはProject間で共有可能
Tagの特徴 Tag ::= Segment | Link | Group 1. SegmentはDocumentの連続部分文字列 [Cstart, Cend] • Documentをまたぐことは不可。(0 ≦ start ≦ end < Ndoc) 2. Linkは2個のSegment間の関連であり、方向・推移性の有無が設定可能。 • Linkは同一DBに属する限りDocumentをまたぐこともできる。 • これを利用すると、本文外への参照要素とのLinkを作りたいような場合に、あらかじめ特別なDocumentを作成して本文に現れないSegmentを(いくつでも必要なだけ)収めておき、それらへのLinkを張ることでそのようなLinkを実現できる。 3. GroupはTagの集合である。 ※ Tagは個々のアノテーションインスタンスである。Tagの種別・制約条件をあらかじめ定義したTagDefinitionとは区別しなければならない。 ※ Tagのインスタンス毎に、 • 複数のAttribute(Key-Valueペア)を付加可能 • 付加したUserを識別可能 • 更新時刻を取得可能 • 更新された時点で使用していたTagSetのバージョンを取得可能
TagSetのバージョン管理(例) MyProject 定義の変遷 アノテーション結果 TagDefinition の追加削除 TagSet1 Seg_Aを追加 Rev.1と関連付けられる。 Seg_A ・・・ ・・・ Rev.1 Seg_Bを追加 Rev.2と関連付けられる。 Seg_B 追加 ・・・ ・・・ Rev.2 Link_X(= Seg_A -> Seg_B) Link_Xを追加 Rev.3と関連付けられる。 追加 Rev.3 ・・・ ・・・ 明示的に削除 Seg_BとLink_Xを削除 残ったSeg_AはRev.1と関連付けられたまま。 無効j化 × ・・・ ・・・ 現在 Rev.4
Sentence/Word構造とDocument.Text • アノテーションはDocument内のTextの文字位置に対して設定される。 • 一方、ChaKiではCorpus以下にSentence-Wordの構造があり、Document.Textと併存している。 Corpus … Sentence Sentence Word Word … Word … ※ … ※英語などでは、Word間に空白を自動挿入 Lexemeの表層形 + Lexemeの表層形 + 一致 T e x t … Document.Text = {C(0), …, C(Ndoc-1)}
DBサイズの評価(ChaKi.NET) ※1) 改行は1文字とカウント ※2) 文節をSegment, 係り受けをLinkとして変換
ChaKi実装における既知の問題点 • 英語における空白自動挿入の問題 • 原文にない空白が挿入される • 入れ子Sentenceの扱い • Document.Textを密に分割する構造的なMain-Sentence (前頁のSentence)以外に、Segmentで表現されたSub-Sentenceを導入する予定。 • 複合語構造をSegmentとして扱うか? • 複合語構造はLexiconの問題であり、Document内の出現毎にタグ付けするのはふさわしくないのではないか。
本ドキュメントの保管場所 PowerPointファイル 付属のChaKi.NETモデルファイル(PDF) http://sourceforge.jp/projects/chaki/docs/?category_id=920