管理人 について : 参考ページ 統計的言語処理: 形態素解析パッケージ RMeCab
RCaBoChaパッケージ
日本語の係り受け関係を R で解析できるようにします.形態素解析パッケージRMeCabもご参照ください.
RCaBoCha関数 : CaBocha? の単純な出力を返す.
> kekka <- RCaBoCha("今日は鰻が食べたいな。")
FROMAT_TREE =
<DATE>今日</DATE>は---D
鰻が-D
食べたいな。
EOS
> kekka # D1 は句の連番,D2 はその係り受け関係を表す
Term1 Term2 POS D1 D2
1 今日 今日 名詞 1 2
2 は は 助詞 1 2
3 鰻 鰻 名詞 2 2
4 が が 助詞 2 2
5 食べ 食べる 動詞 3 -1
6 たい たい 助動詞 3 -1
7 な な 助詞 3 -1
8 。 。 記号 3 -1
RCaBoChaFreq?関数 : 否定の係りを判定して頻度を測る
> kekka <- RCaBoChaFreq("今日は鰻が美味しいな.
+ 昨日は鰻が美味しくなかった。")
> kekka
Term1 Freq
1 が 2
2 た 1
3 な 1
4 は 2
5 今日 1
6 昨日 1
7 美味しい 1
8 美味しい+ない 1
9 鰻 2
RCaBoChaFile?関数 : ファイルを対象に否定の係りを判定して頻度を測る.引数rmT = c("助詞", "記号") などとして,抽出しない品詞を指定可能.デフォルトは記号のみ. ただし半角スペースと全角スペース,"!?.。.!?"は常に削除する.
> kekka <- RCaBoChaFile("綺麗な花.txt")
file = 綺麗な花.txt
> kekka
Term1 Freq
1 あの 1
2 この 1
3 その 1
4 だ 1
5 だ+ない 2
6 は 2
7 は+ない 1
8 も 1
9 綺麗 1
10 綺麗+ない 2
11 花 3
RCaBoChaDF関数 : データフレームの指定列を対象に否定の係りを判定して頻度を測り,ターム・文章行列を作成.引数 rmT = c("助詞", "記号") などとして,抽出しない品詞を指定可能.デフォルトは記号のみ. ただし半角スペースと全角スペース,"!?.。.!?"は常に削除する. また minFreq引数で,全文書を通じての総頻度の閾値を指定可能.
> dat <- read.csv("data/flower.csv")
> kekka <- RCaBoChaDF(dat[,"Reply"], rmT = c("助詞"))
> kekka
OBS.1 OBS.2 OBS.3 OBS.4 OBS.5
あの 0 0 1 0 0
う 0 0 0 0 1
が 0 0 0 1 0
この 0 1 0 0 0
その 1 0 0 0 0
だ 0 1 0 1 0
だろ 0 0 0 0 1
で 1 0 1 0 0
な 0 0 0 1 1
の 0 0 0 0 1
は 1 1 0 0 1
は+ない 0 0 1 0 0
も 0 0 1 0 0
やっぱり 0 0 0 1 0
バラ 0 0 0 1 0
花 1 1 1 0 0
桜 0 0 0 0 1
綺麗 0 1 0 1 1
綺麗+ない 1 0 1 0 0
#### 重み付けも可能 TD IDF を計算して、標準化するには
> res <- RCaBoChaDF(dat[,"Reply"],rmT =c("記号","助詞"),
weight = "tf*idf*norm")
> nrow(res)
[1] 15
> res
OBS.1 OBS.2 OBS.3 OBS.4 OBS.5
あの 0.0000000 0.0000000 0.6665896 0.0000000 0.0000000
う 0.0000000 0.0000000 0.0000000 0.0000000 0.4354663
この 0.0000000 0.7009370 0.0000000 0.0000000 0.0000000
その 0.6665896 0.0000000 0.0000000 0.0000000 0.0000000
だ 0.0000000 0.4899340 0.0000000 0.4205811 0.0000000
だろ 0.0000000 0.0000000 0.0000000 0.0000000 0.4354663
で 0.4659261 0.0000000 0.4659261 0.0000000 0.0000000
な 0.0000000 0.0000000 0.0000000 0.0000000 0.4354663
の 0.0000000 0.0000000 0.0000000 0.0000000 0.4354663
やっぱり 0.0000000 0.0000000 0.0000000 0.6017155 0.0000000
バラ 0.0000000 0.0000000 0.0000000 0.6017155 0.0000000
花 0.3485455 0.3665051 0.3485455 0.0000000 0.0000000
桜 0.0000000 0.0000000 0.0000000 0.0000000 0.4354663
綺麗 0.0000000 0.3665051 0.0000000 0.3146243 0.2276961
綺麗+ない 0.4659261 0.0000000 0.4659261 0.0000000 0.0000000
> apply(res^2, 2, sum) ## 各列の自乗の合計は1
OBS.1 OBS.2 OBS.3 OBS.4 OBS.5
1 1 1 1 1
RCaBoChaMx?関数 : フォルダ全体あるいは単独ファイルを対象に否定の係りを判定して頻度を測り,ターム・文章行列を作成.引数 rm = c("助詞", "記号") などとして,抽出しない品詞を指定可能.デフォルトは記号のみ. ただし半角スペースと全角スペース,"!?.。.!?"は常に削除する. また minFreq 引数で,全文書を通じての総頻度の閾値を指定可能.
> kekka <- RCaBoChaMx("data/flower")
file_name = data/flower/hana1.txt opened
file_name = data/flower/hana2.txt opened
file_name = data/flower/hana3.txt opened
file_name = data/flower/hana4.txt opened
file_name = data/flower/hana5.txt opened
> kekka
hana1.txt hana2.txt hana3.txt hana4.txt hana5.txt
あの 0 0 1 0 0
う 0 0 0 0 1
が 0 0 0 1 0
この 0 1 0 0 0
その 1 0 0 0 0
だ 0 1 0 1 0
だろ 0 0 0 0 1
で 1 0 1 0 0
な 0 0 0 1 1
の 0 0 0 0 1
は 1 1 0 0 1
は+ない 0 0 1 0 0
も 0 0 1 0 0
やっぱり 0 0 0 1 0
バラ 0 0 0 1 0
花 1 1 1 0 0
桜 0 0 0 0 1
綺麗 0 1 0 1 1
綺麗+ない 1 0 1 0 0
### 重み付けも可能 TD IDF を計算して、標準化するには
> res <- RCaBoChaMx("C:/data/flower" ,rmT =c("記号","助詞"),
weight = "tf*idf*norm")
file_name = C:/data/flower/hana1.txt opened
file_name = C:/data/flower/hana2.txt opened
file_name = C:/data/flower/hana3.txt opened
file_name = C:/data/flower/hana4.txt opened
file_name = C:/data/flower/hana5.txt opened
> nrow(res)
[1] 15
> res
hana1.txt hana2.txt hana3.txt hana4.txt hana5.txt
あの 0.0000000 0.0000000 0.6665896 0.0000000 0.0000000
う 0.0000000 0.0000000 0.0000000 0.0000000 0.4354663
この 0.0000000 0.7009370 0.0000000 0.0000000 0.0000000
その 0.6665896 0.0000000 0.0000000 0.0000000 0.0000000
だ 0.0000000 0.4899340 0.0000000 0.4205811 0.0000000
だろ 0.0000000 0.0000000 0.0000000 0.0000000 0.4354663
で 0.4659261 0.0000000 0.4659261 0.0000000 0.0000000
な 0.0000000 0.0000000 0.0000000 0.0000000 0.4354663
の 0.0000000 0.0000000 0.0000000 0.0000000 0.4354663
やっぱり 0.0000000 0.0000000 0.0000000 0.6017155 0.0000000
バラ 0.0000000 0.0000000 0.0000000 0.6017155 0.0000000
花 0.3485455 0.3665051 0.3485455 0.0000000 0.0000000
桜 0.0000000 0.0000000 0.0000000 0.0000000 0.4354663
綺麗 0.0000000 0.3665051 0.0000000 0.3146243 0.2276961
綺麗+ない 0.4659261 0.0000000 0.4659261 0.0000000 0.0000000
> apply(res^2, 2, sum) ## 各列の自乗の合計は1
hana1.txt hana2.txt hana3.txt hana4.txt hana5.txt
1 1 1 1 1
## 単独ファイルも読み込み可能
> res <- RCaBoChaMx("C:/data/flower/hana1.txt")
file_name = C:/data/flower/hana1.txt opened
> res
hana1.txt
その 1
で 1
は 1
花 1
綺麗+ない 1
ここからダウンロードして,インストールしてください.
Windowsではファイルをダブルクリックし,文字コードは Shift-JISを選び,後は[続ける]を押すだけです.
Linux や Mac OS X ではかなり面倒な手続きが必要です.ここを参考にしてください.
RCaBoCha_0.05.zip (R-2.7.1)
と
付属の環境設定ファイル
インストール手順
[1] "C:/PROGRA~1/R/R-2*~*.*/library"のように (*の部分はバージョン番号)なっていれば,R 本体と同じ場所にあります.以下の手順の4.までを実行してください.
[1] "C:\\Document and Settings\\ishida\\Documents/R/win-library/2.7"あるいは
[1] "C:\\Users\\ishida\\Documents/R/win-library/2.7"のようにユーザー名を含んでいる場合は,ユーザーフォルダにライブラリはインストールされています.以下の手順の4. は飛ばして,手順の5.,場合によっては 6. までを実行してください.
> .libPaths() [1] "C:\\Users\\ishida\\Documents/R/win-library/2.7" [2] "C:/PROGRA~1/R/R-27~1.1/library"この場合は libcabocha.dll とlibcrftt.dll を win-library/2.7 の中のRCaBoCha\libs? というフォルダの中に手作業でコピーしてください。
ご利用は自己責任でお願いします.
RCaBoCha_0.05.tgz (R-2.7.1)
R_LIBS=/Users/ishida/Rlibsishida の部分は terminal 画面の $ マークの前に表示されているログイン名に変えてください.terminal上では以下のようにしても作成できます.
$ echo 'R_LIBS=/Users/ishida/Rlibs' > .Renviron $ cat .Renviron
以上です。なお、R 終了時にはワークスペースを保存しないことをお勧めします。言語解析結果は、一般に大きなオブジェクトになり、容量を必要とします。
ご利用は自己責任でお願いします.
RCaBoCha_0.05.tar.gz (R-2.7.1)
R コンソールで次のように実行してください.
> install.packages("RCaBoCha_0.05.tar.gz", lib.loc = ".",
repos = NULL)
> library(RCaBoCha)
以上です。なお、R 終了時にはワークスペースを保存しないことをお勧めします。言語解析結果は、一般に大きなオブジェクトになり、容量を必要とします。