« 2006年07月 | メイン | 2006年09月 »

2006年08月04日

形態素解析MeCabを試してみた

 ブログブームのおかげで世の中に出回るコンテンツ、つまり文章の量がとても多くなってきています。せっかくですので、こういう文章をひとつのデータとしてもっといろいろなことに活かしたいと思います。簡単な例では、いろいろなブログでよく使われる特徴的な単語を抽出してスコアリングすることで、トレンド分析を行うということが挙げられます。

 しかし、この「単語を抽出する」という作業が、日本語の場合思いのほか大変なのです。
 英語の文章は単語と単語の間がスペースで区切られているため、どこからどこまでがひとつの単語か明確です。

This is a pen.

 この場合、[This][is][a][pen][.]というように区切ることができ、プログラムでも簡単に単語に分けることができます。しかし日本語ではこのように簡単には行きません。

これはペンです。

 この場合、[これ][は][ペン][です][。]と区切られるのですが、難しいと思いませんか?人の頭であればなんとなくわかると思いますが(それでも日本語を知っている人じゃないとムリだと思いますが)、プログラムでということになるとほとんどお手上げです。

 そこで登場するのが形態素解析という技術です。

 少し前に、Namazuなどの全文検索がはやっていましたが(もちろん今でも健在です)、この全文検索にも形態素解析は欠かせません。そのため、全文検索に触れるのをきっかけに形態素解析に触れた方も多いのではないでしょうか?

 NamazuではKakasiChasenという形態素解析の仕組みを使っていたと思います。今回紹介するMeCabはこれらより動作速度が速いと言われています。

 それでは早速インストールしてみましょう。まず、下記のサイトから最新のMeCabのソースコードと辞書ファイルを取ってきましょう。

 http://sourceforge.jp/projects/mecab/files/

mecab(MeCab本体) と mecab-ipadic(辞書ファイル)の最新版をダウンロードしてください。
あとは、通常のtar からのインストールを行うだけです。

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

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

インストールが終わったところで、早速、ちょっと長めの文章で試してみました。
mecab.gif
(実行結果:クリックで拡大します)

素晴らしい!
これからいろいろな活用方法を考えて行きたいと思います。

2006年08月01日

「企業サイト、5割に「穴」 コンサル会社が『侵入』調査」というニュースを読んで(2)

企業サイト、5割に「穴」 コンサル会社が「侵入」調査

前回の続きです。下記の3つの原因についてもう少し詳しく考えてみましょう。

2. クライアント(発注側)の意識の低さ
3. SEもしくはPMのクライアントへの説明不足
4. 価格競争のなれの果て

開発を受託する会社がセキュリティに対してクオリティを保つことができるようにするのは、社員の教育をしっかりしたり、トレンドを追いかけたりと、それなりのコスト(時間やお金)がかかることです。さらに、実際に仕事を請け負った場合にも、セキュリティに対する考察と、それを踏まえた実装、そしてテストなどが必要になります。これらの費用は直接的、もしくは間接的に発注側のコスト負担となります。

この場合、クライアント(発注側)の意識が低いと、セキュリティに配慮している開発会社の見積もりが高く見えてしまいます。結局、セキュリティに配慮した会社がコスト面でコンペに負けてしまったりするのです。発注側がセキュリティ脆弱性の危険性を認識していれば、そこにかけるコストは必要経費であると判断することができるのですが、現状はこうではないようです。

また、これは発注側の問題だけでなく、受託側のSEやPMの説得力の問題でもあります。セキュリティ脆弱性の危険性をしっかりと(クライアントにわかるような言葉で)説明することができ、また、それに対してどのような対策を行うのかを説明できなければなりません。こうすることでクライアント側の意識を高めることができれば、コスト面で劣っていても、信頼を勝ち取ることができ、コンペに勝つこともできるのです。

しかし、そうは言っても「お金」は非常に強い力を持っています。前回お話したように、発現しなければ問題ない「セキュリティ脆弱性」に対して、いわば保険のようなコストをかけられるかどうかは、最終的にはクライアントの判断になります。どんなに素晴らしい説明をしたところで、予算の枠に収まっていなければ提案は通りません。

ちなみに、弊社では自社でセキュリティガイドラインを定め、公開しております。こうすることで、お客様に弊社の開発スタンスをご理解いただき、また、開発従事者も全員がセキュリティに対して意識するようになります。

セキュリティ対策には「意識」が非常に大切で、
1. クライアント(発注側)の意識
2. 受託開発会社(もしくはそこのPG)の意識
3. 業界全体の意識
これらが高くならなければ解決しないと思います。

3の業界全体の意識が高まれば、必然的に1,2は高くなってくると思います。
業界全体の意識を高めるような、もっと大きな動きが必要だと思います。

その、「もっと大きな動き」が起こるきっかけが、大きなセキュリティ事故ではないことを祈ります。