読者です 読者をやめる 読者になる 読者になる

絶品ゆどうふのタレ

ふと気づいたことを綴るだけのメモ

第2回さくさくテキストマイニング勉強会に行ってきたよ!

先週末のことなので、もう5日ぐらいたっちゃって今更の話だけど、第2回「にこにこ」改め さくさくテキストマイニング勉強会 : ATNDに行ってきました。

職場が変わってからいろいろと余裕が出てきたので、ちょっとずついろんな勉強会への参加を再開し始めてます。

で、勉強会参加するならやっぱれぽーともちゃんと書かないとね、と思ったので、少し間が空いちゃったけど先日参加したさくてきの参加レポートを公開することにしました。


最近の癖で、当日レポートをmarkdownで書いちゃったのだけど、書き直すのは面倒だからそのまま貼り付けますw

いろいろ抜けてたりとかおかしな部分もある気がするんだけど、とりあえずまずは公開することの習慣化を取り戻してる途中って事で、勘弁して下さい><


ともあれ。

勉強会を開催していただいた皆様、発表者のみなさま、良い場を提供して下さって、ありがとうございます!
そして、会場を使わせて下さったOracle++(`・ω・´)です。

テキストマイニング素人なので、また参加したいな−。

第2回 さくさくテキストマイニング勉強会
=======================================

会場:オラクル青山センター
日時:2011/04/16 14:00〜

イベント概要
------------

主に、機械学習やテキストマイニングに興味がある人を対象に、

言語処理学会へ遊びに行ったよ!〜不自然言語処理へのお誘い〜
----------------------------------------------------------

### 発表者

AntiBasyanの人

金融機関で金融工学の研究員。

### 概要

学会で行われていた発表の中で、実務に使えそうな話のフィードバック

### 学会に行ったときのメリット

最新情報がわんさか手に入るよ!
でも、敷居が高いよね!

とにかく10のブログ読めw
 →あとでスライド参照

上から順に難易度が高くなっていくw


### 発表論文目次

7つも紹介書いたけど、時間足りないのでガッつりスキップw


### 総評

Wikipadiaからのコーパス作成とカテゴライズがはやってる
twitterも。
→これのおかげで、即時性も求められている。

      たぶん、わかりやすいサイズの大きなコーパスだからじゃないかね。

高品質な階層構造とタグ付けが行われており、非常に扱いやすいデータなので、人気がある。

ただ、びっくりするほど「やってみたけど失敗した」という発表が多く、精度も良くない。。。


### 不自然言語処理とは

自然言語=MeCabで分析できる物、という状態になっている。

そんな物は自然じゃないw

顔文字、絵文字、AAなんかは今までゴミとして削除されていた。わざわざ正規表現とかで削除。。。
しかし、実際にはここの部分にこそかきてのおもいがあるのでは?ここをまじめに扱ってみよう。


### Soramegraph

Twitter とかでOOをXXと空目した。とかの、似たような文字列の関連性をグラフ化する

### 誤字ぇねれーたー

特定の文字列を、ラスター的に似た別の文字に置き換える。
謎。。。

### 

素っ気ない文章を、気持ちのこもった文に書き換える!
なかなかおもしろいw

### けんりぶっじ大学

人間には読めるが、検索エンジンには認識しづらい難読化をする。

人間が、文の最初と最後があっていれば読めてしまうという研究結果にもとづいて、ごちゃごちゃな文を作り上げる。

### 回文

折り返し固定方
文頭固定法

という二つの方法で、回文を作ってみる。
折り返し固定法はすごく時間かかるにもかかわらず、文頭固定法だとすごく早い。

折り返し固定法は、すごく自由度が高く、候補がものすごく多いので、時間がかかってしまう。


### 顔文字情報と文の評価表現の関連性についての一考察

顔文字=パラ言語
勢いや抑揚といった、周辺言語的要素を持つ文字列であると言える。

顔文字の種類によって、ポジティブだったりネガティブだったりする性質がある、というのが考えられていたが、
実際によく調べてみたら、文脈と共に理解する必要があり、それによって極性がかかわることがあると言うことがわかってきた。

(例)泣き顔を使っていたとしても、うれしい泣き顔なのか、悲しい泣き顔なのかは文脈次第でばらばら

人によって、顔文字の喜怒哀楽がばらばらなので、なかなか精度が高くはならない。
単純に一つの顔文字が喜怒哀楽のうちの1要素だけを持っているわけではなく、喜怒哀楽のすべてを持っていて、それの含まれる割合が何パーセントずつ、というふうに、意味解析の部分にまで持ち込まないとわからなくなってきた。

とはいえ、顔文字自体が、意味を持たない場合もある。
緩衝材や、強調として使う場合もある。

非常に難しいので、高度なテクニックが必要。


### もっと不自然言語で遊ぼう!

不自然言語を使ってコミュニケーションをする相手=普段から仲の良い相手、といえるのでは無いか。
くだけた表現を使って話しているという事が、親密度合いを表す可能性もある。

顔文字は非言語的な情報まで伝達できるかも。

誤字脱字率の変遷によってその人の感情の推定とかも可能になってくるかも。


## 関根先生のお言葉

TF-IDFなど10年前の技術がまだまだ現役で、よく使われている。
いかに高度な技術を使うか、ではなく、いかにノイズを削減するか、というのが最も重要。
すごい研究をするのでは無く、事業に役に立つ研究をしよう。
精度が0.5%高いかどうか、なんて事は実務上は余り関係ない。


今日から使える!みんなのクラスタリング超入門
--------------------------------------------

### 発表者

toilet_lunchの人


### クラスタリングとは

教師無しに、自動的にデータを分類する方法
特徴を捉えて、その特徴ごとにクラス分けする。

グループ分けはわかるけど、中を見てみないことにはどういうグループなのかはわからない。


### k-means

k-means k平均法

一つの図形を、必ず一つのグループにひもづける。ハードクラスタリングの手法の一つ


### k-meansのアルゴリズム

語順とかを一切考えずに、単語の出現頻度によって軸分け、分類する。


クラスの重心をランダムに決める。
その上で、各事例をその重心に近い方にランダムに分ける。

分けた物同士の中で、重心を再計算し、各事例を再分類する。
このような手法で、重心の位置を収束させていく。l
事例を再分類しても、分類の内容が代わらなくなったら、その時点で計算を終了する。

簡単な方法だけど、結構分けられる。


### 問題点

ランダムに決める重心の位置によって、クラスタリングに偏りが出てしまうことがある。

偏ったクラスタリングに不向き
→ クラスタを平均的に分けてしまう。
 分けるクラスタのサイズがある程度わかっているのであれば、k-meansよりも、


### bayon

クラスタリングを仕事で使えない。
mixiの人が作ってた。


その他、
R
CLUTO
GETA


### 質問

最適なクラスタの数は?
人手で決める。勘でやる。複数のパターンでやってみて、探す。などでは。
x-means が、k-meansのクラスタの数を推定してくれる手法
Gap統計というのもある




条件付き頻度分布
----------------

### 発表者

早川さん


パブリックタイムラインとユーザーごとのタイムラインを取得し、その中での出現頻度をプロットしてみた。

今回は日本語だけに絞るため、多言語のタイムラインから日本語だけを抽出
日本語かどうかは、Shift_JISに変更できれば日本語、そうでなければ別の言語と推定。
ちょっとした誤差は無視。

テキストから名詞を取り出すのにはMeCabを利用

### 条件付き頻度分布のプロット

NLTKを使う。
両方のタイムラインに対して、@やRT、httpといった必要のないものを取り除く
1文字の語も(大事じゃないという憶測の元)取り除く

記号類も取り除く

public に 対して、top 100がゴミっぽいので、削除してみた。



〜可視化するだけでもおもしろい〜テキストマイニング最初の一歩
------------------------------------------------------------

### 発表者

篠原さん

### 伝えたいこと

とにかく、可視化するだけでもいろいろおもしろいこともわかるので、とりあえず作ってみよう。

### えごったー

フォローしている・されている人の一覧
口癖分析
よくつぃーとする時間帯
リプライを見られている人一覧
入っているクラスタ分析
リムーブした/された人一覧


### クラスタ分析の仕組み

同じリストに入っているユーザーを見つける。
そのユーザーのプロフィールを連結する。
それを形態素解析する。

出現頻度の高い単語がユーザーの関連語

リストは、他の人がわざわざタグ付けした情報。
これは、へんにつぃーとを分析するよりもずっと信頼できる。

形態素解析はYahooのAPIに投げているだけ。

### 開発を通して思ったこと

意味をくみ取るのは人間の役目!
人間が膨大な文書データを有効活用するためのツールの一つにすぎない。

データの内容を解釈して判断を下すのは人間である。





概観テキストマイニング
----------------------

### 発表者

todesking さん
チームラボの人

### この発表について

テキストマイニングのプロセスを定義することで、概観を紹介する。

### テキストマイニングとは

大量のフリーテキストを含むデータから価値ある情報を取り出すプロセス

大量とは?
* 人間ではハンドリングできないほどのデータ

なぜ大量にするか?
* 統計するなら、データが多い方が有効

大量なので
* 計算機の出番


フリーテキストとは?
* 自然言語による記述
* 構造化されていないデータ
* さまざまなノイズ

計算機で処理するには、クフが必要
* 前処理がいる
* 解析ミスもつきもの

なぜフリーテキスト?
* データ量はパワーである
* ノイズ混じりだが大量にある
* 構造を規定しなくていい


フリーテキストをどうにかするには、構造化されていないデータをどうにかする技術が必要。

### フリーテキストの構造を分析する。

ノイズとの戦い

* 未知の用語
* 誤記
* バリエーション

いかにフリーテキストの構造を解釈するか。
うまい解釈が出来れば、あとはデータマイニングの道具を適用できる。

### データ

フリーテキストがすべてでは無い。
日付、作者、タグなどの構造化されたデータと組み合わせることで、良い解析が出来る。


### 何を出したいのか?

属性間の相関・似たものの抽出。

問題は、道具をどのように使い、結果をどう解釈するか。
元データは不完全。ノイズはバイアスもかかる。
データと道具の性質から、なぜその結果に至ったのかを考えねばならない。


### えられた物の価値

役に立つ情報が欲しい。
テキストマイニングのゴールは価値を生むこと。

価値のある情報は行動の指針となる。
* 仮説の検証が出来る。
* 意外性のある結論が得られる。
** これらで得られた情報は、具体的なアクションに結びつく。


### テキストマイニングで以下に価値を生むか?

* 結果が何を意味するのか?
* 次にすべき行動は?
* その行動は、誰に、どのような価値をもたらすのか?


### プロセス

データをどこからか得る必要があり、分析の結果は別の場所で使われる。

結果が直ちに価値をもたらすことはまれである。
ただし、結果をビジネスプロセスへフィードバックすることで、ビジネスプロセス全体の価値を向上する事が出来る。

★フィードバックによる価値の向上


### 疑問。。。

こういう物の傾向をみたい。。。という最初の発想はどこから来るか?

どういうところから、解析対象を集めてくるか。
→その対象のクラスタが、情報を制限してしまうことはないか?
  それを解決する為のアイデア、手法は無いものか?
  そのクラスタを選定するときの考え方はどうすべきか?



WordNetで作ろう、言語横断検索サービス
-------------------------------------


### 背景

社内Google Codeみたいな物を想定
数が多くなってくると、欲しい物が見つからない。

### システムの特徴

* フィールドが多い

文字数にばらつきがあるので、この辺が徐々に問題になってくる

* ドキュメントの規模は小さい

* 独自実装。Lucineなどは使ってない


### 言語横断検索のアプローチ

* 対訳辞書ベース

### WordNet

単語と単語のつながりをデータ化した物。
visuworks.com

出発地点は英英辞典
最近は多国語対応する動きあり

日本語版はNICTで開発・公開
SQLite3ベースで開発

これは「対訳辞書」として使える!!!

### 類義語の抽出

MeCabで標準形と品詞を崇徳

* 名詞・副詞・動詞・形容詞のみ抽出

* これで一応日英の横断検索はできた。


### 問題点

検索結果が良くない

意図しない検索結果。
含まれる語の頻度が。。。


何が起きたのか?

Recall(再現率)
* 可能性のある文書

Precision(適合率)
* 全検索結果に対して検索要求を満たす結果の割合

この2つを高めたいが、トレードオフ
* ちょっとでも関連する可能性のある文書を何でも入れると、要求への適合率が下がる。

### ベクトル空間モデル

ベクトル空間内で近いベクトルを探す

このベクトルを定義するさいに、各要素をあるなしの2値では無く、重み付けをしたスカラーにしたい。

### TF-IDF

少数のドキュメントに、たくさん出現すると、可能性が高いとみる。

一つのドキュメント率が少なく、複数のドキュメントに現れるものは、可能性が引く

tf ミクロな視点。1つ1つの文章の頻度
idf マクロな視点。全体の中での頻度

この方式では、ダメだった!


### PRP

情報要求に対して、確率論を当てはめるための考え方。

文書とクエリの適合性を確率として表現


#### Binary Independence Model

原始的なモデル。

文章分類を設け、適合しているかどうかを推定することが出来る。
(これだけでは検索には使えない)

#### BM25

傾向を2つのポワソン分布からなると考えることで、高い表現力で表すことが出来る。
バースト部分・ロングテール部分の2つのポワソン分布と考える。

#### BM25F

BM25Fを複数のフィールドに対応させたもの。
各フィールドの平均長などがパラメータに。

これを使って、やっと目的の検索精度が得られた!

ただし、Luceneでこれに対応するのは難しい。



R言語によるはじめてのテキストマイニング
---------------------------------------

### 発表者

yokkunsさん

Tokyo.Rの主催者

### テキストマイニングとは

テキストを対象としたデータマイニング
→ 統計学・パターン認識、人工知能などのデータ解析の技法を大量のデータに網羅的に適用すること。

### R言語

統計解析向けプログラミング言語

### 統計・機械学習の手法を使う

対象は数値データ
テキストデータはそのまま用いることは出来ない。
→数値化する必要がある。

テキスト解析をする!

### RMeCab RCaBoCha

RMeCab - 形態素解析
RCaBoCha - 係り受け解析

→ 初心者には敷居が高い!

### YjdnJlp パッケージ

YahooのAPIを使うパッケージ

Rだけで解析可能に!

### インストールと利用方法

割愛。あとでスライド見る!

### コレスポンデンス分析

都知事選挙の選挙公報の文書を元に、コレスポンデンス分析をやってみる。
-> 時間がないので形態素解析のみで。

### まとめ

Rには、統計・機械学習の手法がそろってる!