csvファイルを使って全文検索できるようにしました

源氏物語の世界 再編集版で提供している情報をcsv形式に変換し、これを使って全文検索できるようにしたので、ここで紹介します。
なお、ダウンロードは、 SourceForge.jp 源氏物語の世界 再編集版 一括ダウンロード」プロジェクトから行えます。

 


CSV形式の再編集版について

源氏物語の世界 再編集版で提供している情報をcsv形式に変換してみました。

CSV形式にすると、いろいろなプログラムで読み込んでデータを処理することが出来るようになります。例えば、以下のようなことができるようになります。

変換したcsvファイルと、それを使ったプログラムには、以下のものがあります。

分類項目 ファイル名 データ形式・プログラム概要 備考
csvファイル 本文text.csv 帖,章,段,行,"内容" 再編集プログラム
によって、機械的に
作成されるファイル
です。
日本語訳version.csv 帖,章,段,行,"内容"
ローマ字版romaji.csv 帖,章,段,行,"内容"
("内容"の中にダブルクォート(")やコンマ(,)がある場合、
これらはそれぞれ「"」「,」に変換されています。)
注釈notes.csv 帖,章,段,行,注釈番号,状態,"見出し","注釈"
出典source.csv 帖,章,段,行,出典番号,"見出し","引用文","出典"
校訂revice.csv帖,章,段,行,校訂番号,"見出し","校訂"
目次mokuji.csv種別,帖,章,段,"タイトル"
目次(英語)mokujiEnglish.csv種別,帖,章,段,"タイトル"
帖一覧books.csv帖,"タイトル"
章一覧chapters.csv帖,章,"タイトル"
段一覧paragraphs.csv帖,章,段,"タイトル"
挿絵sashie.csv帖,章,段,行,"ファイル名"
和歌waka.csv帖,章,段,行_上の句,行_下の句
登場人物person.csv帖,登場人物,読み,呼称,備考
著作権copyright.csv帖,種別,"著作権"
與謝野晶子訳yosano.csv帖,章,段,行,"内容"
jooxさんの日記
による解説一覧
joox.csv年,月,日,日記タイトル,帖,章,段,行,絵入源氏,メモ当該日記を読んだときに、手作業で作成しています。
csvファイル
(呼称
登場個所
調査結果)
登場人物(追加分)person2.csv帖,登場人物,読み,呼称,備考
person.csvに無い登場人物や呼称を追加する必要がある
とき、ここに追加します。
呼称登場箇所調査
のために作成した
ファイルです。
ただし、現在、まだ
作業中であり、内容
は、完備していませ
ん。

この作業を応援して
くれる人を募集中で
す。

非呼称一覧personNoise.csv帖,非呼称
「宮仕へ」や「大殿籠もり」のように、呼称ではないが、
person.csvとperson2.csvの情報から呼称の使用箇所を抽出
しようとすると、呼称と誤認されてしまう語句を列挙した
ファイルです。
帖=0は、すべての帖に共通の語句であることを意味します。
呼称登場個所一覧PersonReference.csv帖,帖名,章,段,行,字,呼称,登場人物
person.csvとperson2.csvの情報から呼称の使用箇所を機械
的に抽出したファイルです。
呼称登場個所
校正一覧
PersonReference2.csv帖,帖名,章,段,行,字,呼称,登場人物
PersonReference.csvに機械抽出された内容(登場人物)を
変更する必要がある場合、このファイルに、同じキー値(帖,
帖名,章,段,行,字,呼称)で、正しい登場人物を入力します。
呼称登場回数一覧ReferredPersonAs.csv帖,呼称,登場人物,登場回数,タイトル
呼称の登場回数を数えた一覧です。登場人物欄には、その
呼称で呼ばれたすべての登場人物が縦棒'|'で区切って列挙
されます。
登場回数一覧ReferredPerson.csv帖,登場人物,呼称,登場回数,タイトル
登場人物の登場回数を数えた一覧です。呼称欄には、その
登場人物を呼んだすべての呼称が縦棒'|'で区切って列挙
されます。ただし、呼称が指す登場人物の候補が複数ある場合(未調査状態の場合に存在)、そのすべての候補に対して登場回数をカウントします。
プログラム ビューアプログラムviewText.html本文・現代語訳・与謝野晶子訳のcsvファイルを読むための
プログラムで、簡単な検索機能付きです。
インストール不要で簡単に使えます。
 
全文検索プログラムsearchGenji.htaJetデータベースエンジンを使った全文検索プログラムです。
本文、現代語訳、與謝野晶子訳の他に、注釈、出典、校訂、
和歌なども検索できます。
全文検索プログラムの
インストール用ツール
VersionCheck.wsf前提プログラムのバージョンチェック 全文検索プログラムのインストール作業で使用するツールです。以前の提供形態ではこれを使用する必要がありましたが、現在の一括ダウンロードやCDROMによる提供形態では、既にインストール済みなので使いません。
mkGenji.mdb.byDAO.wsf
mkGenji.mdb.byAccess2000.wsf
全文検索用データベース作成ツール
呼称登場個所
調査用ツール
PersonReference.wsf呼称登場個所調査結果のうち、PersonReference.csv、ReferredPersonAs.csv、ReferredPerson.csvの3つのファイルを自動生成するツールです。
このツールの実行後に全文検索用データベース作成ツールを実行すると、このツールの実行結果もデータベースに格納されます。
 


簡単な検索機能付きビューアプログラム

上の一覧表で示したcsvファイルのうち、本文・現代語訳・与謝野晶子訳のcsvファイルを読むための簡単なビューアプログラム(viewText.html)を作りました。
このビューアはHTMLとJavaスクリプトで書かれたプログラムで、Internet Explorer 5.01以降がインストールされていれば実行できます。viewText.htmlを実行してください。

TDCを使っているので、簡単な検索機能もつけてあります。検索結果の一例を以下に示します。
ちなみに、この検索にかかった時間は数秒でした。(cerelon 1060MHz メモリ384MBのマシンで実行した場合)


源氏物語の世界 再編集版 全文検索プログラム

Jetデータベースエンジンを使った全文検索プログラム(SearchGenji.hta)も作ってみました。

全文検索といっても、csvファイル全体をメモリ上に読み込んで全文検索するタイプのものですので、その点は、上のビューアプログラムと変わりませんが、データベースエンジンなので、SQLを使って強力な検索が出来るようになります。
反面、検索時間は長くなります。

下図は、上のビューアプログラムの画面例と同じ条件で検索してみたものです。
本文で検索した結果に対して、現代語訳や與謝野晶子訳、ローマ字版を結合して対照表示されます。もちろん、現代語訳や與謝野晶子訳、ローマ字版などを検索することもでき、その場合も、このように、4者対照表示されます。

  • 検索が終わると、検索ボタンの右には、検索に使用したSQLと検索結果行数が表示されます。
  • 検索結果中で指定された語句に一致する部分は黄色で表示されます。この例にはありませんが、同じ語句が現代語訳や与謝野晶子訳にも現れる場合、これらの役の中の語句も黄色で表示されます。
  • 検索結果の左端の帖番号、章番号、段番号、行番号は、それぞれ、細目次ページの帖見出し、章単位ページの章見出し、段単位ページの段見出し、段単位ページの対応する行、へのリンクになっています。また、帖番号、章番号、段番号の上でマウスカーソルをとめると、帖名、章名、段落名がツールチップで表示されます。

検索対象で「本文(注釈付)」を選ぶと、本文と現代語訳の間に注釈も対称表示されます。他に、「本文(出典付)」「本文(校訂付)」「本文(登場人物付)」もあります。


  • 検索対象で「本文(注釈付)」を選ぶと、本文で検索した結果の各行に対して、注釈が付加されていれば、その注釈を本文と現代語訳の間に表示します。
  • 似た機能に検索対象で「注釈」を選んだ場合があります。この場合は、注釈を検索した結果に対して、関連する本文や現代語訳などを結合したものです。
  • なお、検索対象で「注釈」を選んだ場合、検索対象に「注釈見出し」は含まれません。注釈を検索する場合は、「注釈」と「注釈見出し」を区別して検索する必要があります。
  • 付加された注釈の見出しと同じ語句が、本文や現代語訳などに現れると、その部分を薄い黄色で表示します。ただし、薄い黄色で表示されるのは、注釈見出しと完全に一致するもの(状態=1のもの)だけとなります。HTML版で本文と注釈が正しくリンクされるものであっても、完全には一致しないもの(状態=3のもの)は、全文検索プログラムではマークされずに残ってしまいます。

画面例をもう一つ紹介しましょう。

検索対象には、本文、現代語訳、與謝野晶子訳、ローマ字版の他に、注釈、出典、校訂、登場人物、和歌なども指定できます。そして、指定した検索対象によって、検索結果の列の並びも変わってきます。次の画面例は、出典で検索した場合の例です。

この結果、本文、注釈、出典、校訂、登場人物、和歌、現代語訳、与謝野晶子訳、ローマ字版などのさまざまなデータを、このプログラムで検索できるようになりました。

最後に、検索対象に指定できる項目を以下に示します。

検索対象 キー項目 使用クエリ 検索結果項目の並び
本文(注釈付) 本文 本文注釈付検索クエリ 帖,章,段,行,注釈番号,状態,本文,注釈見出し,注釈,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
本文(出典付) 本文 本文出典付検索クエリ 帖,章,段,行,出典番号,本文,出典見出し,出典引用文,出典,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
本文(校訂付) 本文 本文校訂付検索クエリ 帖,章,段,行,校訂番号,本文,校訂見出し,校訂,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
本文(登場人物付) 本文 本文登場人物付検索クエリ 帖,章,段,行,字,本文,呼称,登場人物,備考,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
本文 本文 本文検索クエリ 帖,章,段,行,本文,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
現代語訳 現代語訳 現代語訳検索クエリ 帖,章,段,行,本文,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
與謝野晶子訳 與謝野晶子訳 與謝野晶子訳検索クエリ 帖,章,段,行,本文,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
ローマ字版 ローマ字版 ローマ字版検索クエリ 帖,章,段,行,本文,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
注釈見出し 注釈見出し 注釈検索クエリ 帖,章,段,行,注釈番号,状態,本文,注釈見出し,注釈,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
注釈 注釈 注釈検索クエリ 帖,章,段,行,注釈番号,状態,本文,注釈見出し,注釈,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
注釈状態 注釈状態 注釈検索クエリ 帖,章,段,行,注釈番号,状態,本文,注釈見出し,注釈,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
出典見出し 出典見出し 出典検索クエリ 帖,章,段,行,出典番号,本文,出典見出し,出典引用文,出典,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
出典(引用文) 出典(引用文) 出典検索クエリ 帖,章,段,行,出典番号,本文,出典見出し,出典引用文,出典,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
出典(文献) 出典(文献) 出典検索クエリ 帖,章,段,行,出典番号,本文,出典見出し,出典引用文,出典,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
校訂見出し 校訂見出し 校訂検索クエリ 帖,章,段,行,校訂番号,本文,校訂見出し,校訂,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
校訂 校訂 校訂検索クエリ 帖,章,段,行,校訂番号,本文,校訂見出し,校訂,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
登場人物 登場人物 登場人物検索クエリ 帖,章,段,行,字,本文,呼称,登場人物,備考,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
登場人物(呼称) 登場人物(呼称) 登場人物検索クエリ 帖,章,段,行,字,本文,呼称,登場人物,備考,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
登場人物(備考) 登場人物(備考) 登場人物検索クエリ 帖,章,段,行,字,本文,呼称,登場人物,備考,現代語訳,與謝野晶子訳,ローマ字版,jooxさんの日記による解説
和歌 本文 和歌一覧注釈付クエリ 帖,章,段,行,注釈番号,本文,注釈,現代語訳,ローマ字版

バージョン1.62以降の再編集版の全文検索プログラムでは、登場人物の検索機能が追加されました。検索対象に「本文(登場人物付)」、「登場人物」、「登場人物(呼称)」、「登場人物(備考)」が追加されたほか、検索条件項目に「登場人物」という項目が追加されました。

この「登場人物」という項目は、上を指定すると使えるようになり、特定の登場人物が登場する行だけを検索したり、「女」や「宮」などのあいまいな呼称で呼ばれている場合でも、特定の登場人物をさすものだけを抽出したりできます。また、行を検索するのではなく、他の条件で検索された行に対して、該当箇所をマークするだけという指定もできます。

ただし、この登場人物関係のデータは、現在、まだ整備中です。整備の終わっていない帖では、この登場人物関係の機能を使用しても、必ずしも適切な結果を返してくれるとは限りません。現在、どこまで整備が終わっているかについては、トップページの「更新履歴」や「今後の課題」を参照してください。

この機能の画面例を紹介しましょう。第4帖夕顔で、登場人物「夕顔」が登場する行を検索すると、以下のようになります。


全文検索プログラムの使用方法

CDROM版の場合、CDROMを挿入すると、自動的に以下のような全文検索プログラムを含んだ初期画面が表示されます。自動的に起動しない場合、およびCDROM版で無い場合は、「autorun.bat」を実行してください。

この画面の上部にある3つのボタンは、各形式の再編集版を表示するためのものです。
ボタンは、HTML形式の再編集版をWebブラウザで表示します。
ボタンは、HTMLヘルプ形式の再編集版をWindowsのHTMLヘルプビューアで表示します。
ボタンは、CSV形式の再編集版の解説ページ(このページ)をWebブラウザで表示します。

ただし、この全文検索プログラムを実行するには、あらかじめ、いくつかの前提プログラムがインストールされている必要があります。
Windows MeかWindows XPをご利用の場合、これらの前提プログラムは標準でインストールされているので、そのままご利用いただけます。
Windows 2000をご利用の場合は、Internet Explorerをバージョン5.5以降にアップグレードするだけでご利用いただけます。
Windows 95/98をご利用の場合は、「前提プログラムのインストール方法」の説明に従ってインストールしてからご利用ください。


Access 2003のセキュリティの警告

全文検索用データベースファイル(Genji.mdb)をAccess 2003などで開こうとすると、以下のようなセキュリティの警告が表示されることがあります。

「詳細」ボタンをクリックしてヘルプを読んでみると、「マクロ、Visual Basic for Applications (VBA) コード、ActiveX コントロールを含むフォームやレポート、アクション クエリ、データ定義クエリ、パススルー クエリ、または更新クエリが検出された場合に、警告が表示されます。」とのことです。このファイルには、このどれも含まれていませんので、このメッセージが出てくること自体が不可解ですが、問題はありませんので、そのまま、「開く」ボタンをクリックして先に進んでください。

なお、この警告が表示されないように設定変更するには、Access 2003の「マクロのセキュリティレベル」を「低」に設定する必要があるようです。その方法は、「詳細」ボタンをクリックしてヘルプに記載されています。参考のため、そのヘルプの主要部分のハードコピーを以下に示します。


前提プログラムのインストール方法

この全文検索プログラムは、Internet Explorerの他にも、いくつかのプログラムを必要とします。Windows Me、XPには、これらはすでにインストールされていますが、Windows 98、2000の場合は、標準ではインストールされていません。しかし、これらのプログラムはマイクロソフトから無償で配布されているので、以下の方法でインストールしてください。

1.前提条件

前提プログラム 動作確認(注) 備考
Internet Exploror(IE) 5.5以降 (6.0SP1以降推奨) IE 6.0SP1
(2.0.2800.1106)
Windows MeにはIE 5.5が、
Windows XPにはIE 6.0が、
標準でインストールされています。
Microsoft Data Access Component(MDAC) 2.5以降 MDAC 2.7SP1
  (2.71.9030)
Windows 2000、MeにはMDAC 2.5が、
Windows XPにはMDAC 2.7が、
標準でインストールされています。
Microsoft Jet 4.0 Jet 4.0 SP8
  (4.0.8015)
Windows 2000、Me、XPにはJet 4.0が
標準でインストールされています。
(注)本プログラムは、ここに示したバージョンでのみ動作確認しています。
      前提プログラムのバージョンは仕様から推定したもので、そのバージョンで動作確認したものではありません。

2.前提プログラムのバージョンの確認方法(その1)

Windows 98など、前提プログラムが標準ではインストールされないOSを使用している場合でも、Microsoft Office(2000以降)のインストールオプションによってはインストールされるなど、使用しているアプリケーションによってMDACやJetがすでにインストールされている場合があります。

そこで、前提プログラムのバージョンを確認するプログラムを作りました。SerachGenjiフォルダの中に入っているVersionCheck.wsfを実行すると、その実行結果によって、バージョンを確認できます。

実行結果 判定
正常に終了し、以下のような画面を表示する。
すでに、前提プログラムはインストールされています。特に前提プログラムをインストールしなくても、そのまま使用できるものと思われます。

ただし、「ADO Version」が2.1以下の場合は、Version 2.5以降のMDACをインストールすることを推奨します。

Microsoft JScript コンパイルエラーになる。
 

Windows Scriptのバージョンが古くなっています。

Windows ScriptはInternet Explorerによってインストールされるので、Windows Updatesに接続して、Internet Explorerを最新版に更新してください。

「DAO.DBEngine.36」のタイプライブラリが見つからないというエラーになる。
DAO Version 3.6がインストールされていません。

DAO 3.6はJet 4.0によって、インストールされます。
Jet 4.0の最新版をマイクロソフトからダウンロードしてインストールしてください。

なお、CDROM版の場合、Windows 95/98/NT4.0用のJet 4.0 SP7のインストーラ(Jet40SP7_9xNT.exe)が入っていますので、ご利用ください。

「adodb.connnection」のタイプライブラリが見つからないというエラーになる。 MDACがインストールされていません。

MDACの最新版をマイクロソフトからダウンロードしてインストールしてください。

なお、CDROM版の場合、Windows 95/98/Me/NT4.0/2000/XP用のMDAC 2.8のインストーラ(MDAC_TYP.EXE)が入っていますので、ご利用ください。

3.前提プログラムのバージョンの確認方法(その2)

もうひとつ、プログラムによらないバージョン番号の確認方法を以下に示します。

(1)Internet Explorerのバージョン番号の確認方法

メニューからヘルプのバージョン情報を選択して確認してください。

(2)Microsoft Data Access Component(MDAC) のバージョン番号の確認方法

次のファイルがあればインストールされています。

C:\Program Files\Common Files\System\ado\msado15.dll

 

バージョン番号は、このdllファイルのマウス右クリックで表示されるコンテキストメニューから「プロパティ」を選択し、表示される「msado15..dllのプロパティ」ダイアログの「バージョン情報」タブを参照してください。

(3)Microsoft Jetのバージョン番号の確認方法

c:\Windows\System32\msjet40.dllがあればインストールされています。バージョン番号は、このdllファイルのマウス右クリックで表示されるコンテキストメニューから「プロパティ」を選択し、表示される「msjet40.dllのプロパティ」ダイアログの「バージョン情報」タブを参照してください。

4.ダウンロード&インストール方法

これらのプログラムが、まだインストールされていなかったり、バージョンが古かったりした場合は、マイクロソフトのダウンロードページから最新版をダウンロードしてインストールしてください。(これらのプログラムはマイクロソフトから無償で配布されています。)

その方法は以下の通りです。

(1)Internet Explorerのバージョンアップ方法

Windows Updatesを使用して最新版にアップグレードすることを推奨します。

(2)Microsoft Data Access Component(MDAC)のバージョンアップ方法

マイクロソフトのダウンロードセンタでキーワードに「MDAC」を指定して検索すると、検索結果一覧の先頭に最新版のダウンロードページが表示されます。そのページの記述にしたがってダウンロード&インストールしてください。

 

なお、CDROM版の場合、Windows 95/98/Me/NT4.0/2000/XP用のMDAC 2.8のインストーラ(MDAC_TYP.EXE)が入っていますので、ご利用ください。

(3)Microsoft Jetのバージョンアップ方法

マイクロソフトのダウンロードセンタでキーワードに「Jet」を指定して検索すると、検索結果一覧の先頭の方にに最新版のダウンロードページが表示されます。そのページの記述にしたがってダウンロード&インストールしてください。
ただし、Windowsの種類によってダウンロードページが異なること、および、あらかじめMDACがインストールされている必要があることにご注意ください。

 

なお、CDROM版の場合、Windows 95/98/NT4.0用のJet 4.0 SP7のインストーラ(Jet40SP7_9xNT.exe)が入っていますので、ご利用ください。

(4)Windows Updatesの実行

これらのプログラムは、どれにも、セキュリティホールの存在が確認されています。最新版をインストールしたからといって、必ずしも安心できません。セキュリティホールが残っていても全文検索プログラムの動作には影響しませんが、安全のため、Windows Updatesに接続して「重要な更新」が残っていたら、それを全てインストールすることを推奨します。

 



以上