らこらこらこ~wと学ぶ機械学習

4

年末年始にTLで突如発生したマルコフ連鎖botブーム

そこで生まれたイカれた奴らを紹介するぜ!

リンク twitter.com 機械化らこ (la0c) on Twitter The latest from 機械化らこ (@la0c). ドーモ!@laco0416製のロボ・ニンジャ、モーターラコ、デス!
リンク twitter.com ささみ君 (sa2mi) on Twitter The latest from ささみ君 (@sa2mi). マルコフ
リンク twitter.com みぞ(おしゃべり) (sqmz) on Twitter The latest from みぞ(おしゃべり) (@sqmz). 勝手に学習して独り言や会話します 返事をたまに無視します なんかあったら@mizofumi0411

機械化らこの作者、laco0416はアルゴリズムの改善を進めたいらしい

リンク http://laco0416.hatenablog.com/ マルコフ連鎖から卒業しようと思っている話 - laco0416's diary 今人工無能botである機械化らこ( @la0c )を稼働している。 現在はコーパスをlaco0416のタイムラインのツイートから得て、形態素解析を行った後にトライグラムのテーブルに保存して、 文章生成はマルコフ連鎖によって行っている。マルコフ連鎖を選んだのは実装が楽でわかりやすいからだったけども、マルコフ連鎖では形態素の情報(品詞など)が失われ、単なる表現文字列の前後関係だけで生成されるため、生成される文全体の構文が破綻する場合がほとんど。 これはせっかく形態素解析したのに勿体無いということで、構文解析の

マルコフ連鎖だと文章が変になることが多いから自然言語処理のアルゴリズムを用いて改善したいとのこと

らこらこアルゴリズムの要点

  • 文脈自由文法を採用したい
  • 文脈自由文法を使うために文章をチョムスキー標準形であらわす
  • 構文(文の要素)と品詞の対応関係のデータを集める
  • 品詞と文字列の対応関係(語彙)を集める
  • 文章構造はランダムあるいは何らかの確率で決め打ちして構文に対応する語彙を当てはめる

チョムスキー標準形やそれに登場する終端記号、非終端記号という用語の解説は以下がわかりやすい
というか形式文法を理解してないとWikipediaの説明は読めない

http://goo.gl/FGWbC1

Kazuya Gokita @kazoo04

@laco0416 脳に障害があるから140文字以上の文章読めないけど頑張ってみる

2014-01-10 00:05:40
Kazuya Gokita @kazoo04

@laco0416 微妙な表現もあるけどほぼあってるしこの考え方でいいしこのアプローチでいけると思う

2014-01-10 00:10:21
Kazuya Gokita @kazoo04

@laco0416 一般に、たとえば文脈自由文法であれば非終端記号として既知の品詞や句を割り当てるわけだけど、実際の文章はあれより高次の概念、あるいはより細分化された低次の概念が存在しているので、それらを機械的に抽出して組み込むと、より複雑な表現を自然に扱えると思ってる。

2014-01-10 00:14:24
Laco @laco0416

@kazoo04 高次の概念ってのは例えば顔文字とか含まれるんかな

2014-01-10 00:17:34
Kazuya Gokita @kazoo04

@laco0416 ああ、それもそうだね。あとはたとえば文としての構成的に、コピペの各単語を置き換えたネタツイとかよくあるじゃん。ああいうのは句の上位概念で文の下位概念みたいな位置づけ(なのか?)だと考えればああいった表現もうまく捉えられるかなと思って。

2014-01-10 00:19:40
やる:包丁 スタバ 傘返す 買う:シャツ 靴 @potetisensei

@kazoo04 @laco0416 それ、ある種テンプレをどうやってgenericに抜き出すかが分からんのだけど

2014-01-10 00:22:52
Laco @laco0416

@kazoo04 「テンプレ」って奴か あれは完成された一つの構文木だって考えると、それは木接合になるのかな

2014-01-10 00:23:01
Kazuya Gokita @kazoo04

@potetisensei @laco0416 教師なし学習で獲得させるしかない。真面目にやろうとすると階層Pitman-Yor過程とか出てくるので猛烈に面倒くさくなる。とおもう。

2014-01-10 00:24:29
やる:包丁 スタバ 傘返す 買う:シャツ 靴 @potetisensei

@kazoo04 ウーン、教師ありでk個の文字列から品詞分解して部分列(要素ni,nj,nk...から構成できるi<j<k)の長さが最大になるようにすればある程度の精度でないかな

2014-01-10 00:33:04
Kazuya Gokita @kazoo04

@potetisensei 長い部分一致文字列は頻繁に出てくる(あいさつとか住所とか)ので、その方法は経験的にうまくいかない。長い文字列ではなくてなんらかの基準でもっともらしい部分文字列が欲しいわけだからね。

2014-01-10 00:35:30
やる:包丁 スタバ 傘返す 買う:シャツ 靴 @potetisensei

@kazoo04 というか良く考えると、教師ありで学習する時点である程度人力でサンプル探すわけだからテンプレを手で入力してテンプレ内の可変箇所に入れることのできる文法のデータとか突っ込んだ方が早い気がするんだけど

2014-01-10 00:41:08
Kazuya Gokita @kazoo04

@potetisensei それが滅茶苦茶大変だから教師なしでやるんじゃん。日本語の階層構造やそれぞれの語や品詞を手でラベリングしていくって地獄だぞ。ただ少数のラベル付きデータと、たくさんのラベルなしデータで学習する方法というのはある(半教師あり学習/準教師あり学習)。

2014-01-10 00:43:03
やる:包丁 スタバ 傘返す 買う:シャツ 靴 @potetisensei

@kazoo04 いや、むしろ教師なし以外でやる価値を見出せてなかった。部分的な教師あり学習は確かに有効な場面があるのか。なるほどなー

2014-01-10 00:44:31
やる:包丁 スタバ 傘返す 買う:シャツ 靴 @potetisensei

kazoo04,そういえばそっち方面の学科出てたんだなとたまに思う

2014-01-10 00:25:19