itbファイル形式 の変更点

Top > itbファイル形式


GETAssocで連想計算を行なうためには、まずデータをitbファイル形式に変換し、このitbファイルからインデックスを作成する必要があります。本ページはitbファイル形式について説明します。

#contents

*Itbファイル形式

- itbファイル形式は、データを行単位で定義しており、行頭の記号で各データの種類を指定する形式を取っています。そのため改行文字自身をデータとして扱うことはできません。
- itbファイルの文字コードはUTF8限定です。

#ref(http://getassoc.cs.nii.ac.jp/img/itb_file.png)

- 文書の本文は、連想検索用と全文検索用と別々に記述する必要があります。連想検索用本文は、文書・単語行列としてインデクシングされ、連想検索や類似度を考慮した検索ができますが、複数の単語が隣接するようなフレーズによる検索はできません。一方、全文検索用本文は、接尾辞配列としてインデクシングされ、任意のフレーズ検索が可能ですが、類似度を伴なった検索はできません。
- 連想検索だけを行う場合は、全文検索用インデックスを作成する必要はありませんが、あるフレーズを必ず含む/含まないといったフィルタ条件を指定するためには、連想検索用インデックスと全文検索用インデックスを両方作成する必要があります。

*データベース全体の項目
** @'''name=value'''
コーパスの項目はcatalogueファイルに格納され、gss3プロトコルを用いて必要に応じて取得することができます。「''@''」から始まる行に「name=値」を記述します。これらの行は各文書を記述した行よりも前になければなりません。「'''name'''」を構成する文字列は[[XML nameのサブセット>#xmlname]]である必要があります。次の項目がよく使用されます。
: title | データベースの名前
: description | データベースについての説明

例:
 @title=サンプルデータ
 @description=動作を確認するためのデータ

なお、項目名 @name=, @properties=, @created=, @number-of-articles=, @stemmer=, @servers= は、システムで予約されているため使用することはできません。


* 全文一致検索用オプション

** $ioptions='''value'''
全文一致検索で使用できるオプションを指定します。
全文一致検索では、ここで指定したもののサブセットが使えるようになります。
(match-head、match-tailはいつでも使用できるので個々で指定する必要はありません)

例:
 $ioptions=ignore-case,ignore-space,collapse-zdz


*各文書の項目

各文書は、行頭に「''i''」を持つ行から始まり、次の「''i''」を持つ行の直前の行までとなります。

**文書情報
*** i'''ID'''
行頭の「''i''」は各文書の始まりを示すとともに、続く文字列はその文書を一意に識別するIDを表します。
IDが重複した場合、先に現れた記事が有効になります。例:
 i000001234
 iDOC20090101-1234

*** #'''property=value'''
「''#''」から始まる行は、その文書のプロパティを表わします。よく使われるプロパティ名には、'''title''', '''link'''などがあります。「'''property'''」を構成する文字列は[[XML nameのサブセット>#xmlname]]である必要があります。1つの文書で同じプロパティ名が複数行出現したときは、空白文字を区切り文字として、すべての値を1つの文字列に結合します。例:
 #title=ドキュメント1
 #link=http://hogehoge/geta/?doc1
 #desc=ドキュメント1の説明

**連想検索用本文

*** b1'''value'''
「''b1''」から始まる行は、行頭の「b1」を除いてstemmerに渡されます。そして単語ごとに分割され、インデックスの要素になります。「b1」から始まる行は1文書に複数行記述することができます。

*** ''数値''[space]'''value'''
行頭に数値([1-9][0-9]*)があり、続いて空白文字がある行は、'''value'''の単語が「数値」の頻度でその文書に出現したことを表します。つまりstemmerには渡されずにそのままの文字列がインデックスの要素として扱われます。'''value'''は、UNICODE正規化(NFKC)をしておいた方がよいでしょう。

*** [space]'''value'''
行頭が空白文字から始まる行は、最初の空白文字を除いた'''value'''の単語が1回文書で出現したことを表わします。つまり「1 '''value'''」と同値です。'''value'''の中に空白文字があっても'''value'''全体で1つの単語となります。

**全文一致用本文

標準的な使い方は、各文書の本文から改行コードを削除して、1行の大きな文字列として記述します。全文一致用本文は、各行ごとにsegment番号が振られます(0から順に31まで)。GETAssocでは、segment番号を指定して全文検索範囲を限定することができるので、複数行に分けて記述すれば、本文を多少構造化できます。
標準的な使い方は、各文書の本文から改行コードを削除して、1行の大きな文字列として記述します。全文一致用本文は、各行ごとにsegment番号が振られます(0から順に31まで)。GETAssocでは、segment番号を指定して全文検索範囲を限定することができるので、文書を構造化し複数行に分けて記述すれば、構造に対応した全文検索ができます。

*** !'''value'''
「''!''」から始まる行は、'''value'''が全文一致検索の対象となります。'''value'''の文字列はUNICODE正規化(NFKC)されます。

*** +'''value'''
「''+''」から始まる行は、「!'''value'''」と同じく全文一致検索の対象となりますが、UNICODE正規化されません。

* itbファイルの例
以下は、itbファイルのサンプルです。

** サンプル1
 @description=Wikipedia日本語版 文書・単語行列
 @title=Wikipedia日本語版
 i1
 #title=アンパサンド
 #link=http://ja.wikipedia.org/wiki/アンパサンド
 b1アンパサンド (ampersand, &) とは「~と...」を意味する記号である。
 b1英語の "and" に相当するラテン語の "et" の合字で、"etc." を "&c." と記述することがあるのはそのため。
 b1Zに続くラテン文字アルファベットの27字目とされた時期もある。
 ...
 !アンパサンド
 !アンパサンド (ampersand, &) とは ... である。英語の"and"に ... そのため。Zに続く ...
 i2
 #title=...
 #link=...
 b1...

全文一致検索用本文を、タイトルと文書の本文と2行に分けることにより、タイトルだけに限定した全文一致検索(segment=0を指定)が可能になります。

**サンプル2
 @title=APOD [1995.01]
 iap000101.html
 #title=The Millennium that Defines Universe
 #link=http://antwrp.gsfc.nasa.gov/apod/ap000101.html
  welcome
  to
  the
  millennial
 !Welcome to the millennial ...
 iap000102.html
 #title=The Largest Rock Known
 #link=http://antwrp.gsfc.nasa.gov/apod/ap000102.html
  there
  that
  faint
  dot
 !The ...
 iap000103.html
 #title=Cas A Supernova Remnant in X-Rays
 #link=http://antwrp.gsfc.nasa.gov/apod/ap000103.html
  the
  complex
  shell
  of
 !The complex shell of ...

構築したitbファイルから[[stp>各種コマンド/stp]]を用いて連想検索・全文一致検索用のインデックスを作成します。詳細は[[stp>各種コマンド/stp]]をご覧ください。

&aname(xmlname);
* XML nameのサブセット
 subset of XML name:
      name ::= (LetterSubset | '_' | ':') (NameCharSubset)*
      NameCharSubset ::= LetterSubset | DigitSubset | '.' | '-' | ':'
      LetterSubset ::= [#x0041-#x005A] | [#x0061-#x007a]
      DigitSubset ::= [#x0030-#x0039]

TOP