内部仕様 - 専門用語(キーワード)自動抽出システム

Download Report

Transcript 内部仕様 - 専門用語(キーワード)自動抽出システム

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