平成19年5月19日 第3版 東京大学理学部生物化学図書室 前田 朗 「ことわけWeb」 内部仕様書 平成19年5月19日 第3版 東京大学理学部生物化学図書室 前田 朗
コンテンツ システム構成 基本データ型 モジュール化する部分 URIの設計 システム構成と、個々について簡単に説明 各モジュール間でのデータの受け渡しに使う仕様をまとめたもの。 モジュール化する部分 URIの設計
Lighttpd (with FastCGI) 第1章.システム構成 TermExtact ほかPerl モジュール Catalyst(Perlベースの Webフレームワーク) 茶筅 MySQL (RDB) オリジナル Perlコード Algorithm:: Cluster Template Toolkit によるHTML雛形 インターフェイス Cプログラム 連想検索エンジン GETA Lighttpd (with FastCGI) 赤のブロックが要作成のコード 緑もSQLでDBを要構築
Lighttpd Apacheより軽量(高速)なWebサーバプログラム FastCGIとの組み合わせで高速レスポンスを目指す
Catalyst PerlベースのWebフレームワーク MVCモデルの実装(ModelとViewは選択可能) MVCモデル(Model, View, Controller の分割)によるWebアプリケーションが作成可能 Perl版”Ruby on Rails”ともいわれる MVCモデルの実装(ModelとViewは選択可能) Model --- MySQL Vew ----- TempleteToolkit Controller -- Perl
MySQL オープンソースのリレーショナルデータベース バージョン 5 を使用 UNIXユーザ mysql で動作させる バージョン 5 を使用 UNIXユーザ mysql で動作させる MySQLユーザ termcluster データベースtermcluster テーブルは3種(詳細は別紙) プロジェクト・テーブル (Project) 文書テーブル (Document) クラスタ・テーブル(Cluster)
TermExtact 「言選Web」のコアである専門用語自動抽出Perlモジュール 「茶筅」(形態素解析器)と連携して専門用語抽出を使う 重要度のオプションに、TF(Term Frequency)を使う
GETA NIIが開発した、連想検索エンジン。クラスタリング用のC言語ライブラリ(libcs)も付属しており、これを使う。
Algorithm::Cluster C言語のクラスタリングライブラリ”Cluster 3.0”のPerlインターフェイス GETAでは実装していない、K-means法やSOM(自己組織化マップ)が作成できる 単語文書行列をPerlの2次元配列の形で用意する必要がある GETAと違い、TF*IDFの処理を自分でコーディングする必要あり。
第2章.基本データ型 MySQLのデータベーススキーマ 文書中の用語と頻度(TF)のリスト クラスタリング結果 プロジェクトテーブルと文書テーブル 文書中の用語と頻度(TF)のリスト クラスタリング結果
クラス図 プロジェクト 文書 1 0..* クラスタ 1 0..* [脚注] クラスは、RDBのテーブルにて表現 プロジェクトID 文書名 テキスト本文 用語リスト プロジェクトID プロジェクト名 パスワード メールアドレス 氏名 所属 クラスタリング結果 パラメータ コメント 1 0..* 用語リストからクラスタリング結果を求める クラスタ 1 0..* プロジェクトID クラスタNo 用語リスト 各プロジェクトのクラスタリング結果を収める [脚注] クラスは、RDBのテーブルにて表現
Project (プロジェクト)テーブル 「作成日時」でインデックス 作成(ソートに使用) 名称 列名 制約 project_id ユニークキー。英数20文字以内 プロジェクト名 project_name 日本語255バイト以内 必須項目 パスワード password 英数8文字以内。必須 メールアドレス e_mail 英数255バイト以内。必須項目 氏名 name 所属 belonging コメント comment 日本語でTEXT型 クラスタリングパラメータ params 日本語,varchar型で255 ステータス Status プロジェクトの状態を示す 0 (登録前) 1 (登録済) 9 (停止) 名称 列名 制約 登録No Registry_no 英数256文字以内。最初の登録時のみ使用 作成日時 Create_date 作成日時 Datetime型 更新日時 Update_date 更新日時 timeptamp型 「作成日時」でインデックス 作成(ソートに使用)
Document (文書)テーブル 「プロジェクトID」+「文書名」の組を ユニークキーにする 名称 列名 制約 project_id 英数20文字以内。 インデックス用意。 文書名 documentt_name 日本語で255バイト以内 必須項目 用語リスト Term_list テキスト型。JSONで用語とTFの組にしたリストを格納 登録No Registry_no 英数255文字以内。最初の登録時のみ使用 作成日時 Create_date 作成日時 Datetime型 更新日時 Update_date 更新日時 timeptamp型 「プロジェクトID」+「文書名」の組を ユニークキーにする
「プロジェクトID」+「クラスタNo」の組を Cluster(クラスタ)テーブル 名称 列名 制約 プロジェクトID project_id 英数20文字以内 インデックス用意。 クラスタNo cluster_no 整数 用語リスト Term_list テキスト型。JSONで用語リストを格納 「プロジェクトID」+「クラスタNo」の組を ユニークキーにする
文書中の用語と頻度(TF)のリスト (基本データ型 2) JSON(JavaScript Object Notation)を使い、言語に依存しない形(RFC 4627)でDBに格納する 用語と頻度のハッシュ(連想配列)をシリアライズ(直列化)
クラスタリング結果 (基本データ型 3) ただの配列データだが、JSONを使い、言語に依存しない形でDBに格納する
潜在的意味解析 当面実装しない PerlモジュールPDFを用いて、潜在的意味解析に必要な固有値解析(LSA)を行えるとことまでは調査すみ
URIベース設計 URI アクション / メインページ /user/login ログイン画面 /user/project プロジェクト登録画面 /user/password パスワード変更 /termextract 用語リスト表示画面(1) /termextract/ドキュメント名/ 用語リスト表示画面(2) /culuster/disp/クラスタno/ページ/ クラスタリング結果表示 /download ダウンロード設定画面