オープンソースの形態素解析「Mecab」をインストールしてみた

なにかしら興味のあるテーマを設定して導入してみる、という部内の試み。
何をやろうかと考えた末に形態素解析をやってみようと思いました。

ゆくゆくはサービスに転用できればいいなぁと思いつつ。

ただ、レコメンドなどを業務で調べていくうちに甘いもんじゃないぞ、、、と気付き始め。

(´・ω・`)

ま、まずは、やってみることが肝心ですよね!


◆1.情報収集

sourceforge上のMecabページ
http://mecab.sourceforge.net/


◆2.ソースコードのダウンロード

2008/07/09時点の最新版をダウンロード。
mecab-0.97.tar.gz

解析用に辞書データが必要になります。推奨されているIPA辞書をダウンロード。
mecab-ipadic-2.7.0-20070801.tar.gz
※11M…やっぱりかなりのボリュームです。
※新語などについては随時更新していかないといけない…よね。
※常に更新を追うのはしんどいから、web上のリソースをうまく使いたい。
※やっぱりGoogleとかWikipediaとの連携を考えるべきか?


◆3.インストール

ソースコードをサーバ上に配置。

/usr/local/src/ 以下に設置します。

まずはMecab本体からインストールを開始。

% tar zxfv mecab-0.97.tar.gz
% cd mecab-0.97
% ./configure
% make
% make check
% su
# make install

make checkをした時点で、なんかエラーが出た。
が、特に気にすることはなさそう。


続いて、辞書データのインストール。

% tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
% cd mecab-ipadic-2.7.0-20070801
% ./configure
% make
% su
# make install

これでインストール完了!
あとは動作を確認するフェーズに入ります。

今日はここまでー。

XML-DB設計覚え書き

xmldb開発を行うことになりそうなので、資料を通読中。
抑えておきたいポイントについて覚え書き。

//////////////////////////////

XMLDBとは?】
…略。

【データ定義のやり方】
xmlスキーマ(文書の型式定義)とxmlインスタンス(実際のデータ)によって構成。

ルール記述
W3C XML Schema

xmlスキーマ設計(xmlスキーマ=xmlの構造(http://www.atmarkit.co.jp/fxml/rensai2/schema01/schema01.html))
・要素の命名
・型の命名(「要素名+Type」がお勧め)

インスタンスにおいて一意となるIDの設定
 xs:unique

インスタンスにおいての一意となるIDが別インスタンスのキーとして使用される場合
 xs:keyref

xmlスキーマ記述パターン
 入れ子構造の検討
 目的に応じて4つのパターンがある。
 長期的にカスタマイズを含めて運用していく?

xmlスキーマxmlインスタンスは1:1で関連付ける
xmlスキーマ内にはコメントを付与し、可読性を高める
  <特に必要な記述>
   ・非依存の関係(外部キーの参照)
   ・バージョン/更新の記録
   ・
xmlスキーマxmlインスタンスは運用の過程で変化していくため、バージョン情報を記載する

RDBXMLDBを連携する場合
 XMLDBは型の制約が緩いため、緊密な連携が必要な場合は型指定をきっちりと指定する

・多言語対応は属性で指定
 日本語でメッセージ

・関連
 「依存」「非依存」「汎化(継承)」

xmlスキーマ/xmlインスタンスのモデル作成
・ツールを利用
 物理データモデルからW3C XML Schemaを生成 … Rational Data Architect(RDA)
 ⇒導入金額が800,000円ほど。…無理だろ(ノ∀`)


■データ型
・型が日付や数値のときは、空要素はエラー扱いに。


XMLスキーマ設計の成果物
XMLスキーマ(xsdファイル)
XMLインスタンスのサンプル(xmlファイル)


XMLDB物理設計
・データ容量、パフォーマンスを検討した上でデータ配置を考える。

・pureXMLのXMLデータ型への格納方法
 1) インライン格納…RDBのデータ構造と同じ領域に格納
 2) XDA(XML Data Area)格納…XDA専用の領域(バッファプール)に格納

 ★お勧めはインライン格納。
 【メリット】
  ・データ格納領域の節減
  ・アクセス効率の向上
  ・行圧縮の使用が可能
 
 【ページサイズの設定】
  ・ページサイズは格納予定の最大データ長で作成する


・索引
 ・リージョンインデックス(自動作成)
 ・パスインデックス(自動作成)
 ・XMLインデックス(ユーザが指定)


・妥当性の検査(クエリのチューニング)
 ・XMLスキーマをXSR(XML Schema Repository)に登録する。
 ・register xmlschema


XMLデータの操作
 ・XQuerySQL/XML


XMLスキーマ変更方法の検討
 ・妥当性検査の方法(変更内容により影響範囲は異なる)

■パフォーマンスチューニング
 ・インスタンス内のノード数
 ・空要素の省略

■実装への詳細検討
 ・データ型の検討
  ・dateTImeはタイムゾーンまで含めて指定する。未指定の場合は世界標準時UTC)として処理
 ・使用文字の制約
  【XML名に使用可能】
   ・最初の文字は、文字または「_」のみ。
   ・半角英数字、全角ひらがな、全角カタカナ、記号「.」「-」「_」
   ・漢字も使えるがとりあえず規約外で。
 ・文字コードの制約
  UTF-8以外の文字コードでデータを格納する場合、内部変換がかかるため実質容量が膨張する。

 
■表スペースの設計
■バッファプールの設計
■統計情報の収集
 ・RUNSTATS, db2cat

enable-zend-multibyte

初のはてな日記が障害調査の経緯とは。


■現象

PHPで構築したWebアプリが、使用を続けていると突然parse errorを出して動かなくなる。

突然、なんて言葉は使いたくないんだけど、今のところそうとしか言いようがない(´・ω・`)

                                                                                                                                  • -

Parse error: parse error, unexpected T_STRING in x[ファイル名]x

                                                                                                                                  • -

・リロードしても変化なし。
・同サーバで動くWebアプリ build by PHP 全てに影響する。
apache再起動で正常動作に戻る。


■調査方針

・エラー発生時にphpinfo()の挙動はどうなるか?←未確認
・サーバ・プログラム変更がない運用状態からのparse error発生に関して調査。
・再現性の有無(頻発するものの原因が掴めていない)


XOOPSの導入事例に似たような現象が散見される。

原因として挙げられているのは、configure時のオプション「--enable-zend-multibyte」の存在。
これを外して再makeすれば直るとのこと。

ただ、同オプションを付与したサーバは他にもあるんだけど問題は起こしていないんだよね…。


■疑惑の種
そこで思い至ったのは、そもそも「zend-multibyte」って何さ?という話。
軽く調べた感じでは、PHPスクリプトをShift-JISで記述できるようにするための設定とのこと。
php.iniの設定項目である「mbstring.script_encoding」を使うためのようです。

…で、これがどうしてメモリ管理と競合するんだろう???


<追記:2008/10/17>

解決策に辿り着けずしばらく放置していたんですが、俄かに該当サーバの使用頻度が高まったため再調査です。
検索したところ、以前よりもヒットする情報がありました。

http://okwave.jp/qa4349618.html
↑で紹介されていた、.htaccessphp.iniの設定値「mbstring.script_encoding」の値を書き換える対応を行いました。

ソースコードUTF-8で記述しているため、

                                                                                  • -

php_value mbstring.script_encoding UTF-8

                                                                                  • -

を各ツールのディレクトリに設置しました。

現在、仮運用中ですが問題がなければこのまま本運用としたい所存です。

…エラー報告の間隔は減った気がします。無事にいきますように(-人-)