2chのゆるゆり板を使って、共起グラフを書いてみた

今日は、こんなグラフを作ってみました。

やったことを下に箇条書きで書いていく。

  • ゆるゆり♪♪\298アッカリーン/ の過去ログを1まで辿りテキストを収集した。
  • htmlを解析して、発言のみを取り出した。
  • 今回重要な当順人物の名前の辞書を作成した。
  • また、同時に表記のブレに対応するための辞書を作成した。

例:

あかり	あかり
あかり	アカリ
あかり	あかりん
あかり	あっかり〜ん
あかり	アッカリ〜ン
  • MeCabを利用して、単語を切り出した。
  • その後、一つの発言毎に共起語を求めて、出現回数をカウントした。
  • 単語毎にカウントの合計を求め、割合を求めた。

例:

あかり	ちなつ	2298
あかり	京子	1553
あかり	綾乃	1466
京子	綾乃	5022
京子	ちなつ	1910
京子	あかり	1728

というデータがあったら、

あかり	ちなつ	0.38191
あかり	京子	0.258102
あかり	綾乃	0.243643
京子	綾乃	0.5799076
京子	ちなつ	0.2205543
京子	あかり	0.1995381

という風に計算した。
あかり、ちなつの場合では、

2298 / (2298 + 1553 + 1446)

となる。

  • この方法では、あかり,京子などのペアは2つ出来てしまうので、値が大きい方のみ利用するようにした。
  • R言語のigraphパッケージを利用して共起グラフを作成した。この時に、割合の値を調節しながら、見やすいグラフとなる閾値を探していった。今回は、0.12となった。

今回は、コーパスとして2chゆるゆり板を使ったわけだが、2chであっても実況板やtwitterの情報を利用する方がより良いグラフが得られるかもしれないと感じた。公式サイトに載っている登場人物の相関図を作成するのが目標だったりした。

"言語処理のための機械学習入門"の一章を読んで

本書の一章では、機会学習を学んでいくにあたって必要な数学の知識が記されている。節としては、

  • 準備と本書における約束事
  • 最適化問題
  • 確率
  • 連続確率変数
  • パラメータ推定
  • 情報理論
  • この章のまとめ

がある。記述されている言葉は、平易で読みやすく書かれていて、この分野の数学を初めて学ぶ人であっても、理解しやすいと思った。
また、例題や練習問題が数多く掲載されていて、実際に手を動かしながら、読み進めていくこともできる。例題の解説では、数式の展開が目で追っていける程度に細かく書かれていた。

少し駆け足気味で読んでいったが、一章を読むのに90分ほどかかった。(章末問題は解いていない)
これからは、時間のある時にこの本を少しずつ読んでいこうと思う。

第22回R勉強会@東京(#TokyoR)に参加&LTしてきました。

今回は、「らくがき!」というタイトルで緩い発表をしました。LT時間は5分でありましたが、3分程度しか場が持ちませんでした。後の懇親会では、発表の仕方のアドバイスなどを頂き、感謝です。

以下、汚いRのコード

basyo <- function(x,y){
if( y <= -0.5 * x && y >= 0.5 * x){
return(1)
}
if( y <= -0.5 * x && y <= 0.5 * x){
return(2)
}
if( y >= -0.5 * x && y <= 0.5 * x){
return(3)
}
if( y >= -0.5 * x && y >= 0.5 * x){
return(4)
}
}

plot(0,0,type="n",ylim=c(-1,1),xlim=c(-1,1))
iro=rainbow(100)
for( i in 1:20000){
points(runif(1,min=-1,max=1),runif(1,min=-1,max=1),pch=16,col=iro[sample(1:100,1)])
}


a <- locator(1)
ataix <- c(a$x)
ataiy <- c(a$y)
for( i in 1:18){
b <- locator(1)
ataix <- c(ataix,b$x)
ataiy <- c(ataiy,b$y)

lines(c(a$x,b$x),c(a$y,b$y),col="white",lwd=8)

katamuki = (b$y-a$y)/(b$x-a$x)
seppen = b$y - katamuki * b$x

s <- ifelse(a$x > b$x, b$x, a$x)
e <- ifelse(a$x > b$x, a$x, b$x)
print(b)
print(basyo(x=b$x, y=b$y))

if( basyo(x=b$x,y=b$y) == 1){
 for( ii in seq(s, e, 0.0001) ){
  lines(c(-1,ii-0.001), c(katamuki*ii + seppen, katamuki*ii + seppen), col="blue")
 }
}

if( basyo(x=b$x,y=b$y) == 2 ){
 for( ii in seq(s, e, 0.0001) ){
  lines(c(ii,ii), c(-1, katamuki*ii + seppen - 0.001), col="blue")
 }
}

if( basyo(x=b$x,y=b$y) == 3){
 for( ii in seq(s, e, 0.0001) ){
  lines(c(ii - 0.001 ,1), c(katamuki*ii + seppen, katamuki*ii + seppen), col="blue")
 }
}

if( basyo(x=b$x,y=b$y) == 4 ){
 for( ii in seq(s, e, 0.0001) ){
  lines(c(ii,ii), c(katamuki*ii + seppen - 0.001, 1), col="blue")
 }
}

a <- b
}

source("http://aoki2.si.gunma-u.ac.jp/R/src/plot.R", encoding="euc-jp")

a <- locator(1)
for( i in seq(0,0.06,0.0001)){
plot.circle(a$x,a$y,r=i,col="white")
}
a <- locator(1)
for( i in seq(0,0.06,0.0001)){
plot.circle(a$x,a$y,r=i,col="white")
}


for(i in seq(-1,min(ataix),0.001)){
lines(c(i,i),c(-1,1),col="blue",lwd=6)
}
for(i in seq(max(ataix),1,0.001)){
lines(c(i,i),c(-1,1),col="blue",lwd=6)
}
for(i in seq(-1,min(ataiy),0.001)){
lines(c(-1,1),c(i,i),col="blue",lwd=6)
}
for(i in seq(max(ataiy),1,0.001)){
lines(c(-1,1),c(i,i),col="blue",lwd=6)
}

他大学の研究室のゼミ資料でお勉強

茨城大学新納浩幸のホームページに、研究室で行ってるゼミの資料が公開されていたので、
僕もその資料を読んで、こっそりと勉強をさせてもらおうと思う。

今年度に読んでいる本が2冊あるようで、Rで学ぶベイズ統計学入門(ゼミ資料)と、カーネル多変量解析(ゼミ資料)が公開されている。

余裕があったら、過去のゼミ資料も読みたいと思う。

UEC合同新歓を開催しました

電気通信大学で、新入生に向けてのサークルの合同新歓を行いました。
1. 開会の挨拶
2. 団体紹介

  • TeRes
    • なんでもやってるサークルです。折り紙もやってるよ!
  • 工学研究部
    • ゲームを通じて、工研をデモ体験。クオリティ高い!
  • MMA
    • サーバ構築、プログラミング、各種製作。
    • 花火を打ち上げます!(隅田川の花火大会の最大級と同じ)
  • x680x0同好会
    • スライドとかちゃちなものを使わないぞ!ゲームを作ってます!

3. LT前半

  • TeRes 一人目
  • x680x0 numa08さん
    • android勉強会!
    • 翻訳版を作ろうと声がかかったり、雑誌に紹介されたりした。
    • 注意:android勉強会は、単位は出ません。ものづくりを楽しもう!
  • TeRes henteko07さん
    • 仮面ライダー変身アプリ
    • いつでもどこでも変身したいけど、ベルトを持ち歩くのが大変だから、androidで変身しよう!
    • 端末を振って、変身だ。
  • 工学研究部
  • 工学研究部
    • ゲームをしながら、回路の描き方を説明。
    • エジソンは、偉い人。非反転増幅回路を覚えて帰ってください。
    • ギャルゲで発表は、無理でした。

4. 休憩
5. LT後半

  • MMA Aruさん
    • サーバ所有のススメ
    • レポートを忘れても、自分のサーバに置いてあるから大丈夫。
    • クラウドも良いよね。
  • MMA hiro1357さん
    • Arudinoでkagisysを作ろう。
    • Felicaで認証して、ドアのサムターンを回転させて、鍵の開け閉めを行う。
  • MMA nomeaningさん
  • x680x0同好会 rinatsutさん
    • ゲームを制作してます。薄い本をフルカラーで作った。
    • 講座を開いて、みんなでゲームを作ろう。
    • ピザ襲来
  • x680x0同好会 S_wyvernさん
    • デモムービーを流しながら、今まで作った作品の説明。
    • 音楽も絵も弾幕も気合入ってます。
  • x680x0同好会 Hirokiさん
    • ゲーム制作だけじゃ、ありません。サーバや、動画制作、ソフトウェア作成など。
    • Server & Network Team ( SNT )

6. 懇親会

    • お菓子を食べながら、新入生とお話します。


MMAに新入部員が来てくれると嬉しいです。兼部もokです。