(今後、これ以外のイベントも紹介します)
インストールと利用のデモ
#amazon(4254516029)処理 | 形態素解析(短単位)→ | (長単位解析)→ | 文節係り受け解析→ | 解析結果の管理・利用 |
---|---|---|---|---|
BCCWJの場合 | MeCab(解析器)+UniDic(辞書)→ | Comainu→ | → | (大納言→)中納言 |
一般向けツール | MeCabなど(解析器)+UniDicなど(辞書) Web茶まめ→ | (Comainu)→ | (CaboCha)→ | Chaki.net |
(テキストデータは別途用意するのを前提として)
テキストのレベル | ツール | 必要な技術 |
---|---|---|
プレーンテキスト | テキストエディタ | grepと正規表現 |
構造化テキスト | ひまわり→ Excel | XML・マークアップの基礎,ピボットテーブル |
形態素解析済みテキスト | UniDic+MeCab→中納言・ChaKi | 形態素解析の知識,ChaKiの使い方 |
(正規表現ライブラリ同梱)
サンプルテキスト
(ミニコーパス作成に向けて)
Public Function LogLikelihood(ByVal target As Long, comparison As Long, targetTotal As Long, comparisonTotal As Long) As Variant a = target b = comparison c = targetTotal - a d = comparisonTotal - b If a = 0 Then aloga = 0 Else aloga = a * Log(a) If b = 0 Then blogb = 0 Else blogb = b * Log(b) LogLikelihood = 2 * (aloga + blogb + c * Log(c) + d * Log(d) - (a + b) * Log(a + b) - (a + c) * Log(a + c) - (b + d) * Log(b + d) - (c + d) * Log(c + d) + (a + b + c + d) * Log(a + b + c + d)) If target / targetTotal < comparison / comparisonTotal Then LogLikelihood = LogLikelihood * (-1) End Function
自分で作ったミニデータベースを検索して値を取り出すようなことができる関数
単に頻度をみるのではなく、2つの語が本当に共起しやすいのかを図る指標
(アルバイト募集)
(前回補足コメント)
yahari<-matrix(c( 1,2,0,9,4,0, 20,12,1,30,23,0, 31,54,13,17,31,2 ) ,3,6,byrow = T) colnames(yahari)<-c("雑誌","書籍","新聞","ブログ","知恵袋","白書") rownames(yahari)<-c("ヤッパ","ヤッパリ","ヤハリ") #MASSパッケージを読み込む library(MASS) (yahari.ca<-corresp(yahari,nf=3)) biplot(yahari.ca) #固有値 固有値<-yahari.ca$cor^2 round(固有値,3) #累積寄与率 round(100*固有値/sum(固有値),2)
参考リンク:Rと対応分析
negi<-matrix(c( 42,93,2,129,90,7,0,1,12,23,47,0, 33,36,0,65,87,6,4,36,11,0,61,6, 5,30,5,33,9,1,0,1,8,0,2,0, 97,336,0,215,225,39,0,3,15,0,92,4, 3,23,0,31,86,0,3,0,0,0,28,2 ) ,5,12,byrow = T) colnames(negi)<-c("P雑誌","P書籍","P新聞","L書籍","ブログ","ベストセラー","韻文","教科書","広報誌","国会会議録","知恵袋","白書") rownames(negi)<-c("タマネギ","たまねぎ","玉ネギ","玉ねぎ","玉葱") library(MASS) (negi.ca<-corresp(negi,nf=5)) biplot(negi.ca) 固有値<-negi.ca$cor 2 round(固有値,3) #累積寄与率 round(100*固有値/sum(固有値),2)
キー: (語彙素="バイオリン" OR 語彙素="バイオレット" OR 語彙素="バイタリティ" OR 語彙素="バイキング" OR 語彙素="バカンス" OR 語彙素="バチカン" OR 語彙素="バニラ" OR 語彙素="バラエティ" OR 語彙素="バリエーション" OR 語彙素="バリュー" OR 語彙素="ビーナス" OR 語彙素="ビオラ" OR 語彙素="ビザ" OR 語彙素="ベール" OR 語彙素="ベテラン" OR 語彙素="ベトナム" OR 語彙素="バージン");
雑誌 | 書籍 | 新聞 | ブログ | 知恵袋 | 白書 | |
ヤッパ | 1 | 2 | 9 | 4 | ||
ヤッパリ | 20 | 12 | 1 | 30 | 23 | |
ヤハリ | 31 | 54 | 13 | 17 | 31 | 2 |
data <- matrix(c( 9,4,30,23,17,31), ncol=2, byrow=T) chisq.test(data)
帰無仮説(H0):二つのレジスターと「やはり」類の使用頻度には差がない
検定の結果、p<0.05であれば0.05(= 5%)水準でH0は棄却される =二つのレジスターに差がある(レジスターと関係がないのに偶然こうなる可能性は5%以下)
yahari<-matrix(c( 1,2,0,9,4,0, 20,12,1,30,23,0, 31,54,13,17,31,2 ) ,3,6,byrow = T) colnames(yahari)<-c("雑誌","書籍","新聞","ブログ","知恵袋","白書") rownames(yahari)<-c("ヤッパ","ヤッパリ","ヤハリ") yahari <- t(yahari) #行と列を入れ替え yahari.d<-dist(yahari) #距離の計算 yahari.d result <- hclust(yahari.d, method="ward.D") #word法でクラスター分析 plot(result,hang=-1) #デンドログラムを描く