昨日の続きです.本日は,支援ツールです.計算機上で動かすものに限りません.
Hyper Estraier
「はいぱー・えすとれいあ」です.全文検索エンジンの一つです.
全文検索エンジンなしで「膨大なテキストから検索」をすると,grepコマンドを使うにせよ,SQLのLIKE演算子を使うにせよ,検索対象テキストのサイズに比例した時間がかかり,効率的とは言えません.全文検索エンジンは,全文検索に適した形でインデックス化を行うので,関係データベースの(数値やキーの)検索と同じく,瞬時に答えが出るようになっています.
全文検索エンジンもいろいろあります.日本語対応となると,Namazuというのがそのさきがけですが,Estraier,そしてHyper Estraierは,作者は違えどその後継と言っていいソフトウェアです.
ただし,Hyper Estraierは最新版が出て2年ほどになり,バージョンアップの予定はなさそうです.同じ作者がTokyo Dystopiaをリリースしており,Tokyo Cabinet,Tokyo Tyrantと合わせて,研究室内でこれから勉強していきたいものです.
全文検索の使い方としては,単体で動作するほかに,DBMSに全文検索機能が付属するものや,DBMSに別途組み込む(Sennaは,研究でも使ったことがあります)というのも,普及しました.
MeCab & CaboCha
「めかぶ」と「かぼちゃ」です.
MeCabは日本語テキストの形態素解析ツール,CaboChaは係り受け解析ツールです.
形態素解析というのは,(日本語を)細かい品詞に分けるものだと考えてください.「私の名前はtakehikomでした」なら,「私 / の / 名前 / は / takehikom / でし / た」と分かれてくれます.「でし」は「です」の連用形であることも教えてくれます.
アンケートなどで日本語テキストを受け取り,上手いこと電子化した(もしくはWebフォームで書いてもらったので電子化処理をしなかった)として,そのテキストをどう分析するかを考えると,頻出語句は何かというのを手早く知るのに,形態素解析ツールは有用です(ただし,「性能向上が見られず残念」といった否定語の扱いをおろそかにはできませんが).また語句の修飾・被修飾の関係を機械的に求めるには,係り受け解析となるわけです.
Subversion
「さぶばーじょん」です.バージョン管理システムです.
一つまたは多数のファイルを,日数をかけて作り上げていく状況を想像してください.不具合があれば,最小の部分だけを修正します.修正した部分にもし不具合が見つかったら,どこに手を加えたのを原因か見定め,不要なところは取り除くことも,必要でしょう.
Subversionは,そういったファイルの管理を,集中型すなわちクライアント/サーバモデルで行います.
Graphviz
「ぐらふびず」です.graphとvisualizeを組み合わせた名称で,グラフ(棒グラフとか折れ線グラフとかではなく,離散数学その他の科目で学んだグラフです.有向グラフや無向グラフのほか,木もグラフです)を描画するソフトウェアです.特に木を描画する際,ノードが少々多くても,線の交差を起こさないよう配慮してくれます.
グラフのノードとリンクの情報をテキストファイルで記述し,dotというコマンドを実行すれば,画像を生成します.出力フォーマットは,JPEGやPNGといったラスタ型画像だけでなく,PostScriptやSVGなどのベクトル型にも対応しています.
diff
「でぃふ」です.基本的には,2つのテキストファイルの「差分」,すなわち違いを出力するプログラムです.
違いというのは,先頭から1行ずつ見比べて,ある行が,一部またはすべて違うという可能性もありますし,特定の行(単一または複数)が,一方にはあるけれどもう一方にはないというケースも考えられます.
その両方を考慮し,なるべく最小個所の違いを計算し,出力してくれます.Subversionの「どこに手を加えたのを原因か見定め」る際にも利用します.
ERD
発音すれば「いーあーるでぃー」ですが,これはEntity-Relationship Diagram,実体関連ダイアグラム(実体関連図)のことです.
データベースを設計し,研究グループ内でアドバイスを得る際には欠かせないツールです.
研究室内では専用の描画ツールを導入しておらず,PowerPointで描いています.
UML
「ゆーえむえる」です.Unified Modeling Languageの略です.オブジェクト指向設計開発と親和性の高い,モデルの表記法です.
KVS
「けーぶいえす」と言う人もいれば,「きーばりゅーすとあ」と言う人もいます.Key-Value Storeの略です.
KVSは,一つのキーに一つの値を結び付けるデータ構造です.キーと値は任意のバイト列です.多数の「キーと値の組」を効率良く格納・管理することに特化したデータ構造と言えます.そして,そういう性能を遺憾なく発揮するような対象に適用すべきでしょう.
KVSという名称ではありませんでしたが,dbmは同じ目的で,古くからUnixで利用可能でした.KVSが脚光を浴びたのは,クラウド・コンピューティングによってです.
KVSは関係データベースと相性が良くありませんが,大規模なデータ管理という方向性では一致しています.ということで,研究室内で深く学んでいきたいと考えています.