June 27, 2007

読書メモ: テキストマイニングを使う技術/作る技術

この本すごくわかりやすくてためになる。

テキストマイニングを使う技術/作る技術―基礎技術と適用事例から導く本質と活用法 テキストマイニングを使う技術/作る技術―基礎技術と適用事例から導く本質と活用法
那須川 哲哉

東京電機大学出版局 2006-11
売り上げランキング : 11313

Amazonで詳しく見る by G-Tools

以下、読書メモ(かなりの部分が本書からの抜粋です)。

テキストマイニング

テキストマイニングとは

複数の文章の内容を分析する技術

注意点

分析そのものを機械化するのがテキストマイニングではない

あくまで人間が膨大な文書データを有効活用するためのツールであり、データ内容を解釈して判断を下すのは人間である

テキストマイニングによる分析

テキストの分析で機械的に確実な判断が可能なのは「どのような文字列を含んでいるか」というレベルに過ぎない

しかし、「ある文字列からなる表現を含むデータが何件あるか」といった分析なら、ある程度信頼性の高い分析が望める

例えば次のような分析が可能になる

読書関連表現を含むデータは、10年前と比べて増えているか減っているか

どのような年代や地域で読書関連表現を含むデータが増減しているか

作家や作品およびそのジャンルの出現数がどう推移しているか

注意点

どのような知見を抽出し、それをどう役立てるかは分析者のアイデア次第であり、テキストマイニングの成果はこの活用方法に関するアイデアに大きく依存する

テキストマイニングの仕組み

主な技術的課題

文章中に記述された内容をいかにして統計的に分析可能な状態にするか

文章中に記述されている内容に対して、どのような統計的分析が可能か

処理の流れ

自然言語処理 マイニング処理

自然言語処理

形態素解析

構文解析

マイニング処理

相関ルール抽出(バスケット分析)

サポート(支持度)

特定の組み合わせが一緒に存在するデータの件数

「オムツ + ビール」の数

コンフィデンス(確信度)

「オムツ」全件に対する「オムツ + ビール」の割合

自然言語処理の難しさ

曖昧性の問題

絶対値が上がる

赤い紐の靴

プログラマーをしている

誤りの問題

文法的な誤り

誤字脱字

テキストマイニングにおけるマイニング処理の難しさ

相関ルール抽出を行うにしても、どういうデータを食わせるかで結果が全然違ってくる

アプリケーションCD、英語版、など

なぜなら、対象とする文字列データの意味が曖昧だったり、粒度がまちまちだったりするので

そのため、分析目的の設定とそれに応じたデータの構造化が必要になってくる

明確な分析目的を設定せずに同じ文章中に出現しやすい表現の組み合わせを抽出しても、雑多な相関ルールの山が得られるのみで役に立つ結果につながらないのはいわば当然である。(引用)

絶対的な件数に価値を求める危険性

概念の抽出が100%の制度で実現できたとしても、それにより得られたデータの絶対的件数をそのまま利用するのは危険

なぜなら、記述されていないデータがあるかもしれないから

相対的な件数や比較に意味を見い出すほうが健全

テキストマイニングの価値は、基本的には比較による特徴の抽出にある

各々の絶対的な件数には意味がない

ピザを食べた人の方が寿司を食べた人よりも実際に多いかどうかを確認するには、また別の調査が必要

しかし、ピザを食べた人の年齢の分布と寿司を食べた人の年齢の分布を比較したり、ピザを食べた時間帯と寿司を食べた時間帯の分布を比較したりすることには意味がある

また、同じ抽出条件で5年前や5年後のデータにおける件数の割合を比較することにも意味があるかもしれない

適合率と再現率

やっぱりここでもこの二つはトレードオフの関係

テキストマイニングにおいては、適合率を優先して上げる方が効果的で効率が良い

なぜなら、膨大なテキストデータの中から抽出対象とすべき残りのデータを探し出すには大変な努力が必要となるので

June 26, 2007

言語とは、人類が世界をための認識するフレームワーク

言語とは、人類が世界を認識するためのフレームワークなんじゃないかと。

我々個々が別々に世界を認識しているんじゃないんです。
人類の一部としてそれをやっているんです。

どんなにひきこもっててもそのフレームワークからは逃れられない。
絶対にどこかで人類の言語認識フレームワークとつながってるんです。

だから、相手が何を考えているのかがわかったりする。
フレームワークでつながってるから。

なんかトンデモっぽく聞こえるけど、つまりそういうことなんですよ。

June 24, 2007

娘と一緒に読書

DSCF3453.JPG

いろいろ教えてもらっているところです。

評判分析のための好不評表現の自動認識

ふと本屋で気になったので買いました。
この本。

テキストマイニングを使う技術/作る技術―基礎技術と適用事例から導く本質と活用法 テキストマイニングを使う技術/作る技術―基礎技術と適用事例から導く本質と活用法
那須川 哲哉

東京電機大学出版局 2006-11
売り上げランキング : 11313

Amazonで詳しく見る by G-Tools

まだちゃんと読んでないんですけど、後ろの方の章に興味深いことが書かれてました。

筆者らが評判分析に取り組み,好不評表現を調査する過程で気づいたのが,「好不評表現は,まとまって出現する傾向が強い」という性質である.
[略]
例えば,商品や飲食店などを評価する際に,

・美味しいから気に入っています.
・長持ちするのでお勧めです.

のように,「気に入っています」「お勧めです」といった好評を示す表現とともに,その具体的な理由として好評の内容を示すことが多い.このようなパタンを認識できれば,好不評の理由の部分を新たな好不評表現として認識することができる.
— p.195

「から」や「ので」などの言葉の左右には似たような評価を示す表現が出現する確率が高いと。

好評と不評で2パターンありますね。

・「好評表現」ので好評表現」
・「不評表現」ので不評表現」

この仮定に従えば、「接客が最悪だったのでもう二度と行きたくない」という文章が与えられて、かつ「接客が最悪」という表現が不評表現だと判明している場合、「もう二度と行きたくない」という表現が不評表現であると認識できます。

[略] 良い内容と悪い内容を示す場合には,

・「解像度は落ちるんですけど,小さくて軽いので使っています」(デジタルカメラの評価の例)
・「役者の演技は素晴らしかった,ストーリーがパッとしなかった」(映画の評価の例)

のように,好評と不評が入れ替わる際に,「けど」「が」「しかし」「でも」といった反転を示す接続表現が挿入されている場合が多い.
— p.197

「けど」「が」「しかし」「でも」といった言葉に着目することで、反対の評価表現も認識できると。

これも2パターンありますね。

・「好評表現」けど不評表現」
・「不評表現」けど好評表現」

「接客は最悪だったけど料理は美味しかった」という文章が与えられて、かつ「接客は最悪 = 不評表現」だった場合、「料理は美味しかった」が好評表現であると認識できます。

しかし、

もっとも自然言語処理には例外がつきものであり,必ずそうとは限らない.例えば,

・「このレストランはサービスが良い上に美味しいけれど低料金であり,お勧めできる.」

のように,なかなか共存しない性質が成り立っている場合などには,反転を示す接続表現があっても好評表現が連続することがある.
— p.197

とのこと。

ま、でもこういうケースは比較的少ないらしいです。

この理論を用いて大量の文章を解析することで、好不評表現を機械に自動学習させることができるそうです。
まず初めに、種表現を決める必要があります。例えば「満足する」など。
この種表現を起点に、「から」「ので」「けど」「しかし」などの言葉を手がかりにして連鎖的に好不評表現を集めていきます。

実際に自動学習を実行するにあたって、あらかじめノイズとなる文章を減らすようにしたりだとかの工夫が必要だったそうです。

ふと思ったんですが、自然言語処理で気をつけないといけないのは、対象とする文章のほとんどが自分が想定したとおりに書かれているはずであると盲目的に信じてしまうことだと思います。
だから常に確実な検証が必要です。
ていうか、たぶん検証が一番しんどい。

June 23, 2007

William Spencer Hollarado!

skate_1.png

skate_2.png

skate_3.png

skate_4.png

なんなんだコイツは。。。

↓実際の映像はこちら。

Private/Public - 高木正勝

Private/Public Private/Public
高木正勝

Pヴァイン・レコード 2007-05-03
売り上げランキング : 2078

Amazonで詳しく見る by G-Tools

これ、iTMS でアルバムごと買って今聞いてますけど、すばらしい。
ホント、この人ものすごく才能あると思う。
音楽の良さって、それがどんだけイマジネーションを喚起するか、じゃないかな。
ま、そんな説明なんて無しに良い音楽は即座に良いと思える。
そこが音楽の不思議なところですね。

サイト:
Takagi Masakatsu
Private/Public

関連:
System.exit(); - くもんのCMのBGM

June 22, 2007

Webrick

複数人が仕事で使う簡単なツールを Web アプリとして作ったりしてるんですけど、Webrick で作るのがめちゃくちゃお手軽で、かつ楽しいです。
大量のテキストデータを素早く検索して表示するアプリケーションを作る必要がありました。
Webrick 起動時にデータをメモリ上に読み込み、そこから検索して結果を返すようにして高速をはかりました。

ちなみに、サーブレットはこんな感じで作れます。

require 'webrick'

class HogeServlet < WEBrick::HTTPServlet::AbstractServlet
  def do_GET(request, response)
    response.status = 200
    response['Content-Type'] = "text/plain"
    response.body = "Hoge"
  end
end

server = WEBrick::HTTPServer.new( :Port => 2000 )
server.mount “/”, HogeServlet
trap(”INT”){ server.shutdown }
server.start