31
青虫の生態について 大西 (aomushi510) 20091124日火曜日

Casual-Talk #1 青虫の生態について

Embed Size (px)

DESCRIPTION

2009/11/20に開催された(Perl) Casual-Talk #1の発表資料です。Algorithm::NaiveBayesを使ったベイジアンフィルタの実装についてお話しました。

Citation preview

Page 1: Casual-Talk #1 青虫の生態について

青虫の生態について大西 梓(aomushi510)

2009年11月24日火曜日

Page 2: Casual-Talk #1 青虫の生態について

aomushiの生態• 五反田系perl女子

• 監視ツール開発チーム

• casual-perlのIRCに入って、声をかけて頂きました

2009年11月24日火曜日

Page 3: Casual-Talk #1 青虫の生態について

aomushiの生態

• 思いがけずJPAの会報誌に><

2009年11月24日火曜日

Page 4: Casual-Talk #1 青虫の生態について

最近はまっていること

• Algorithm::NaiveBayesを使って投稿内容をOK/NGとカテゴライズすること

2009年11月24日火曜日

Page 6: Casual-Talk #1 青虫の生態について

ベイジアンフィルタ

分かち書き 学習

分かち書き 判定

2009年11月24日火曜日

Page 7: Casual-Talk #1 青虫の生態について

分かち書き

• まずMecabで分かち書きをする

aomushiは発表で緊張しているのでプリンが食べたくなった。

2009年11月24日火曜日

Page 8: Casual-Talk #1 青虫の生態について

分かち書き

• まずMecabで分かち書きをする

aomushiは発表で緊張しているのでプリンが食べたくなった。aomushi 名詞,固有名詞,組織,*,*,*,*

は 助詞,係助詞,*,*,*,*,は,ハ,ワ,,

発表 名詞,サ変接続,*,*,*,*,発表,ハッピョウ,

ハッピョー,,

で 助詞,格助詞,一般,*,*,*,で,デ,デ,,

緊張 名詞,サ変接続,*,*,*,*,緊張,キンチョウ,キンチョー,,

し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ,,

て 助詞,接続助詞,*,*,*,*,て,テ,テ,,

2009年11月24日火曜日

Page 9: Casual-Talk #1 青虫の生態について

分かち書き

• NaiveBayesは分かち書きをしたトークン数の比率を取る

• ノイズを除くため名詞だけ抽出

aomushiは発表で緊張しているのでプリンが食べたくなった。aomushi 名詞,固有名詞,組織,*,*,*,*

発表 名詞,サ変接続,*,*,*,*,発表,ハッピョウ,

緊張 名詞,サ変接続,*,*,*,*,緊張,キンチョウ,キンチョー,,

プリン 名詞,一般,*,*,*,*,プリン,プリン,プリン,,

2009年11月24日火曜日

Page 10: Casual-Talk #1 青虫の生態について

分かち書き 28 for (my $node = $self->mecab->parse($text); $node; $node = $node->next) { 29 my $info = $node->feature; 30 my $word = $node->surface; 31 next unless $info; 32 if ( $info =~ /^名詞/ ) {

33 next 34 if $info =~ /数|非自立|語幹|代名詞|接尾|副詞可能/;

35 next if List::MoreUtils::any { $word eq $_ } @{ $self->_skip_word }; 36 $data->{$word}++; 37 } 38 } 39 return $data;

2009年11月24日火曜日

Page 11: Casual-Talk #1 青虫の生態について

mecabの辞書• naist-dicとwikipedia

• deepnekoさんの記事を参考にさせて頂きました

• http://deepneko.dyndns.org/kokotech/2009/06/mecabwikipedia.html

• オリジナルNGワードも辞書に追加

2009年11月24日火曜日

Page 12: Casual-Talk #1 青虫の生態について

学習• 学習ワード数

• NGワードを最初に学習する

• OKとNGを同じくらいの比率で学習すると良い

• それぞれ10000語くらい学習してみた

2009年11月24日火曜日

Page 13: Casual-Talk #1 青虫の生態について

学習 59 while ( my ( $label, $ref ) = each %$categories ) { 60 my $words = $self->_get_words($ref->{display}); 61 foreach (@$words) { 62 my $tokenizer = MyFilter::Util::Tokenizer->new; 63 my $word_set = $tokenizer->tokenize(\$_, $self->threshold); 64 65 $brain->add_instance( 66 attributes => $word_set, 67 label => $label, 68 ); 69 } 70 $brain->train; 71 } 72 $brain->save_state($save_file) if $save_file;

2009年11月24日火曜日

Page 14: Casual-Talk #1 青虫の生態について

判定

31 sub categorize { 32 my ($self, $word_set) = @_; 33 34 return $self->brain->predict( attributes => $word_set ); 35 }

2009年11月24日火曜日

Page 15: Casual-Talk #1 青虫の生態について

判定

• badの確率が閾値を越えた場合、非表示とみなす

「今日はこんなに働くつもりじゃなかったのに。働くほどに時間単価が下がるとかクソくらえだよ」$result = { good => 0.092, bad => 0.996,};

2009年11月24日火曜日

Page 16: Casual-Talk #1 青虫の生態について

問題点• 隠語に絵文字が入っているとうまく分かち書きができない

• つのだ☆ひろパターン

• ao★shiパターン

• 監視基準が難しい案件は文脈判定が難しい

2009年11月24日火曜日

Page 17: Casual-Talk #1 青虫の生態について

一旦完成したので

• データがほしい・・・・><

2009年11月24日火曜日

Page 18: Casual-Talk #1 青虫の生態について

そして

• 今日の参加者のみなさんのこともっと知りたい・・・><

2009年11月24日火曜日

Page 19: Casual-Talk #1 青虫の生態について

てか

• 欲から入るプログラミングもありだと思うし

2009年11月24日火曜日

Page 20: Casual-Talk #1 青虫の生態について

というわけで

2009年11月24日火曜日

Page 21: Casual-Talk #1 青虫の生態について

P-1

2009年11月24日火曜日

Page 22: Casual-Talk #1 青虫の生態について

P-1グランプリ ルール説明

• ついったーの過去200投稿のうち、NGとひっかかった(ぴー!の)投稿数を競います!

• 一番のかたには「セクシープレゼント」がっ☆

2009年11月24日火曜日

Page 23: Casual-Talk #1 青虫の生態について

第3位

2009年11月24日火曜日

Page 24: Casual-Talk #1 青虫の生態について

第3位

ぴー!

2009年11月24日火曜日

Page 25: Casual-Talk #1 青虫の生態について

第2位

2009年11月24日火曜日

Page 26: Casual-Talk #1 青虫の生態について

第2位

ぴー

2009年11月24日火曜日

Page 27: Casual-Talk #1 青虫の生態について

第1位

2009年11月24日火曜日

Page 28: Casual-Talk #1 青虫の生態について

第1位

ぴー

2009年11月24日火曜日

Page 29: Casual-Talk #1 青虫の生態について

まとめ

• ベイジアンフィルタ

• Algorithm::NaiveBayes使うと簡単

• mecab辞書に工夫

• yusukebeさんはすごい

2009年11月24日火曜日

Page 30: Casual-Talk #1 青虫の生態について

ありがとうございました☆

2009年11月24日火曜日

Page 31: Casual-Talk #1 青虫の生態について

参考にさせて頂きました

• Algorithm::NaiveBayes

• http://search.cpan.org/~kwilliams/Algorithm-NaiveBayes-0.04/lib/Algorithm/NaiveBayes.pm

• mecab辞書にwikipediaのタイトル名を追加

• http://deepneko.dyndns.org/kokotech/2009/06/mecabwikipedia.html

• Lingua::JA::Categorize

• http://search.cpan.org/~miki/Lingua-JA-Categorize-0.01001/lib/Lingua/JA/Categorize.pm

2009年11月24日火曜日