Outline
  1. Cabocha 形式とは何ですか?
  2. 京大コーパスにおける係り受け種別について教えて下さい。
  3. "I"ラベルについてもう少し詳しく教えて下さい。
  4. ChaKi.NETでの係り受けのタグはどうなっていますか?
  5. 係り受けのタグをカスタマイズすることはできますか?
  6. 文字コードの扱いはどうなっていますか?
  7. コーパス定義ファイル(.defファイル)が作成されたりされなかったりしますが…
  8. 「タグ」にはどのようなものがありますか?
  9. 語彙(Lexeme)属性はカスタマイズ可能ですか?
  10. インポート時に品詞・活用形・活用型の一覧はどのように扱われますか?
  11. アノテーションタグにはどのような種類がありますか?
  12. "Nest" Segmentとは何ですか?
  13. 拡張Cabocha形式とは何ですか?
  14. 拡張Cabocha形式にはタグに関するメタデータが含まれないようですが。
  15. 文節は、"Bunsetsu"というタグを持つSegmentによって表現されるのですか?
  16. "Nest", "Parallel", "Apposition"のようなSegmentと文節との関係がわかりません。
  17. Link/Group 共に、子として持つ Segment は同名 ("Bunsetsu", "Parallel", "Apposition")である必要がありますか?
  18. 拡張Cabocha形式のファイルをインポートする場合、ドキュメントタグはなくともよいのでしょうか? 
  19. 複数ファイルのインポート/エクスポートはできますか?
  20. 英語など空白で語を区切る言語データはどのようにインポートすればよいでしょうか?
  21. インストーラを起動すると、「ファイル c:\...\setup.msi の読み込みに失敗しました。ファイルが存在し、アクセス権があることを確認してください。」と出てそれ以上進めない。
  22. コーパスを開くときに、「Could not load file or assembly 'System.Data.SQLite,... 間違ったフォーマットのプログラムを読み込もうとしました。」と表示され、ロードできない。
  23. ツールバーのボタンが小さすぎて押せない
  24. インストーラーが冒頭で異常終了する

Cabocha 形式とは何ですか?

ChaKi.NETにおいて、「Cabocha形式」と呼んでいるテキスト形式は、cabocha(http://chasen.org/~taku/software/cabocha/) の出力オプション "-f1" を指定した場合の出力を指しています。これは、Mecab, Chasen等の形態素解析レイヤの出力に、 行頭が"*"で始まる係り受け解析結果を埋め込んだ形式です。この係り受け情報は、京都大学コーパスにおいて 使用されているものと同一です。

例:
* 0 1D 0/1 2.19100439

ChaKi.NETは、Cabochaファイルをインポートする際に、この係り受け情報のうち

  • カラム2: 文節番号
  • カラム3: 係り先文節番号と係り受けの種別

を利用しています。

京大コーパスにおける係り受け種別について教えて下さい。

以下のようなアルファベット1文字のラベルが存在します。

  • "D":一般の係り受け
  • "P":並列(Parallel)
  • "A":同格(Apposition)
  • "I":部分並列構造の対応する文節列中の文節が末尾の文節へ係るラベル

これ以外に、Cabochaの係り受け判定でどこにも係らないと判定された文節からダミー文節(文節番号 -1 で表される 仮想的な文節)への係り受けに対して、Cabochaは "O" というラベルをアサインします。 Cabochaの係り受け構造は、全ての文節が 1 つの係り先を持つというルールに従っているため、係り受けがないと 判定されても、必ずダミー文節への係り受けを持つような構造を出力します。(ラベルを分けているのは 正しく係り受けがあると判断されたものと区別するため。)

"I"ラベルについてもう少し詳しく教えて下さい。

第1行が文節番号,2行目が文節,3行目が係り先と係り受けラベル とすると,以下のようなタグ付けになります.

  0    1      2    3    4    5
今年は, 4月に 統一地方選挙, 7月に 参院選が あります.
  5D   2I      4P   4I   5D   -1D

これに対し,日本語コーパス(BCCWJ)のタグ付けでは,以下のようになり, 別途,「4月に統一地方選挙」と「7月に参院選」が並列構造として Parallelというリンクで結ばれます.

  0    1      2    3    4    5
今年は, 4月に 統一地方選挙, 7月に 参院選が あります.
  5D   5D      4P   5D   5D   -1D

4Pの係り受けが「7月に」5Dと交差しますが,これを認めています. この文が「今年は,4月に統一地方選挙が,7月に参院選があります」 のように,統一地方選挙の後ろに「が」が入ると,係り関係を 5D とし, 交差がない文になります.

ChaKi.NETでの係り受けのタグはどうなっていますか?

CabochaのラベルがChaKi.NETにおけるLinkアノテーションの種類(タグ)に一致します。ラベルとして、 "D", "P", "A", "I", "O"を認識しますが、係り受け編集においては、"D"のみを使用して行うことが推奨されます。

"P", "A", "I"については、SegmentとGroupによるアノテーション("Parallel" Group, "Apposition" Group)を用いる方が汎用性が高く、係り受けによる表現は今後は用いない方針を取っています。

係り受けのタグをカスタマイズすることはできますか?

現在は、上記の標準タグセット("DPAIO")をインポート時に初期状態として必ず定義するようにしていますが、 今後、出現するもののみを初期状態のタグセット定義とするように変更する予定です。

一旦作成したDBのタグセットについては、TagSetDefinitionEditorツール(ChaKi.EXEと同じフォルダにあります)を介して 変更することができます。

文字コードの扱いはどうなっていますか?

インポート時にソースの文字コードを指定します。DB内部では、UTF-16を使用しています。 内部文字コードを変更することはできません。

コーパス定義ファイル(.defファイル)が作成されたりされなかったりしますが…

コーパス定義ファイルは、"Create Corpus"のGUIを介して自動生成される、RDBアクセスのための設定ファイルです。

旧ChaKiと異なり、新しいコーパス定義ファイルにはServer/Client型のRDBにおける接続情報のみが格納されます (POS情報など旧版にあったこれ以外の情報は、DB内のテーブルに格納しています)。そのため、Server/Client型でないSQLiteの場合は.defファイルは 不要です。DBファイルのパス名のみでアクセスが可能だからです。

「タグ」にはどのようなものがありますか?

大別して、

  1. 語(Lexeme)の持つ情報(Mecab等で解析時に使用した辞書による)
  2. 各種のSegment, Link, Group
  3. Document単位で与えられる文書情報

の3種があります。これらはDBスキーマ上は異なる形で扱われます。 特にこれらを区別するために、1を「Lexeme属性」、2を「アノテーションタグ」、3を「書誌情報」と呼ぶこともあります。 2には文節・係り受け情報が含まれます。なお、TagSearchについては、1のみを検索条件とします。

語彙(Lexeme)属性はカスタマイズ可能ですか?

検索に使用される基本9種(Surface, Reading, LemmaForm, Pronunciation, BaseLexeme, Lemma, ParOfSpeech, CType, CForm)は固定です。ただ、表示設定により表示名称を変えたり、表示させないようにすることは可能です。 さらに、UniDicなどの持つ多様な語彙属性のフィールドを追加情報として格納するため、customというフィールドを 持っています。 インポート元のChasen/Mecabのデータから基本9種の属性へのマッピング、およびcustomフィールドの定義については、 「インポート形式をカスタマイズする」に 詳細があります。 なお、customフィールドの値は、語の上にカーソルを持って行ったときに、基本属性と共に Attributeパネルに展開されて表示されます。

インポート時に品詞・活用形・活用型の一覧はどのように扱われますか?

インポートソースに出現する語彙から自動収集して、DB内のテーブル(PartOfSpeech, CType, CForm)に格納します。

アノテーションタグにはどのような種類がありますか?

アノテーションタグは性質に応じてSegment, Link, Groupという3種に分かれます。 Segment(文字範囲にアサインされるアノテーション)に分類されるタグとしては "Bunsetsu", "Nest", "Parallel", "Apposition"というタグがデフォルトでハードコーディングによりDBに登録されます。 "Bunsetsu"タグが文節を表します。他は文内の任意の文字列範囲に付与されるアノテーションです。

現状では、デフォルトでこれらのタグが自動定義されます(変更は可能)。

"Nest" Segmentとは何ですか?

Nestは、「埋め込み要素」ということになるかと思います。構文的に全体から独立している一部 (注記・引用など)、または構文ツリーの親子関係のうち独立性の高い子の部分(副文など)を表すアノテーションです。

拡張Cabocha形式とは何ですか?

Cabocha形式に追加する形で、アノテーション(Segment, Link, Group)を保存できるようにしたものです。 詳細は、「拡張Cabochaフォーマットへのエクスポート」にあります。

拡張Cabocha形式にはタグに関するメタデータが含まれないようですが。

Segment, Link, Groupタグのメタデータ(タグセット定義)については、今のところ含まれません。 メタデータから生成するのではなく、固定的なタグセットがインポート時に自動生成されます。 (但し、DOCIDは DOCタグに対するメタデータであると言えます。)

文節は、"Bunsetsu"というタグを持つSegmentによって表現されるのですか?

はい。Cabocha/拡張Cabocha形式では文節はCabocha形式によって表現されており、インポート時にこれが "Bunsetsu"というタグを持つSegment要素に変換されます。逆にエクスポート時には内部表現としてのSegmentから Cabocha形式を生成しています。

拡張Cabocha形式では、"Bunsetsu" Segmentや "D" Linkをアノテーションとして表現することもできますが、 これは今のところ認めていません。

Segment/Linkで文節を表すと自由度が高すぎるのですが、Cabochaの文節には下記のような制約があります:

  • 1文(表層)が、連続した重複のない文字列群で区切られていること。1つの区切りが文節。
  • 全ての文節からただ1つの係り受け関係が出ていること。
  • 交差は存在してもよい(warning扱い)

ChaKi.NETでは、この制約を満たさない文節は扱えません。

"Nest", "Parallel", "Apposition"のようなSegmentと文節との関係がわかりません。

Segmentは文字単位で開始終了位置を指定された文字列の連続範囲にアサインされる単純なアノテーションです。 これらのSegmentは、文節との相互作用はありませんし、制約も受けません。

Link/Group 共に、子として持つ Segment は同名 ("Bunsetsu", "Parallel", "Apposition")である必要がありますか?

一般的には(アノテーションタグの元となるSLATの考え方からは)、特に同名でなくても構いません。 異なるタグを持つSegment間に張られるLink, Groupというものも仕様上は可能です。 しかし、ほとんどのタグは意味上の制約を持ちます。例えば、係り受け構造を表現するものはCabochaの制約に従っている必要がありますし、 "Parallel" Group が"Apposition" Segment を子として持つことは意味をなしません。

「このSegmentはこのLink/Groupにしか対応しない」という形の制約は、現在のところGUI操作制約により実現していますが、 インポート時には制約を満たさないデータも入力になりえます。これについてはチェックは特に行っていません。

拡張Cabocha形式のファイルをインポートする場合、ドキュメントタグはなくともよいのでしょうか? 

ドキュメントタグがなく、かつ書誌情報ファイル(.bibファイル)を指定しなければ、入力全体で1ドキュメントとして扱います。 この場合、書誌情報は付加されません。

複数ファイルのインポート/エクスポートはできますか?

複数ファイルの入力はフォルダを指定して 一括インポートが可能です。この場合、自動的にファイル名からドキュメントタグを生成してファイル=ドキュメントと します。エクスポートは単一ファイルにしかできません。

英語など空白で語を区切る言語データはどのようにインポートすればよいでしょうか?

Mecab/Chasen/Cabocha形式・拡張Cabocha形式いずれも語の列が基本なので、やりとりにおいて 空白情報は失われてしまうか、さもなければ空白も語として扱うか、どちらかを選ばなければなりません。 後者の選択というのは、原文の文字構成が重要である場合とか語分割済みでない場合(punctuation そのまま込みで1文を長い1語とみなす)であるかと思います。

語のレベルで考えると、ChaKiは基本的に検索ツールなので、簡単な例として「語A+語B」という 出現条件で検索することを考えると、AとBの間に語要素としての空白が入るのは、 条件が無意味に複雑になり好ましくありません。 従って、この側面を重視するなら、前者(空白は無視)しか選択肢はなくなります。

文節レベルで考えると、ChaKiの別の重要な機能である係り受け編集の対象になるためには、 前述の通り、Cabochaの制約を満たす"Bunsetsu" SegmentとLinkが必要です。(Cabocha形式は 自動的にこれを満たします。)

こうして見ると、

  1. 英語等での語間スペースは無視する。(表層は、Mecab/Chasen形式の語のSurface列から逆生成することになる。)
  2. Cabochaの制約を満たす係り受けのみを用いる。
  3. 他のアノテーションがある場合、空白を除いてindexした文字位置を用いる。

という線がボトムライン要求としてあることがわかります。


※仕様は将来変更される可能性があります。

インストーラを起動すると、「ファイル c:\...\setup.msi の読み込みに失敗しました。ファイルが存在し、アクセス権があることを確認してください。」と出てそれ以上進めない。

setup.msiをダウンロードしたフォルダの権限が不足しているため、そこに置いたsetup.msiファイルの 権限も同様に不足してしまっています。SYSTEMユーザーが「読み取りと実行」できる権限を付与すれば 解決しますが、難しい場合は「ドキュメント」フォルダにsetup.msiファイルをコピーして試してみてください。

コーパスを開くときに、「Could not load file or assembly 'System.Data.SQLite,... 間違ったフォーマットのプログラムを読み込もうとしました。」と表示され、ロードできない。

64bit環境に32bitのインストーラでインストールを行った場合には、このようなメッセージが出て正しく動作しません。ChaKi.NETは、起動モジュールを64bit/32bitで共通のものとしているため、64bit環境では64bitプロセスとなります。このため、32bitインストーラに含まれる一部の32bitネイティブモジュール(SQLiteのdllなど)のロードに失敗します。

ツールバーのボタンが小さすぎて押せない

文字がぼやける・アイコンが小さくなるなどDPIの問題に対応する をご覧ください。

インストーラーが冒頭で異常終了する

インストールファイル ChaKiSetup64.msi または ChaKiSetup.msi を実行したとき、インストーラーダイアログが一瞬表示されただけで消えてしまい、インストールが進まないことがあります。 対応策として、(1)Windowsから一旦サインアウトする、(2)Windowsを再起動する、のいずれかを取ることによりこの問題が解消することが確認されています。