RCaBoCha のバックアップ(No.27) - アールメカブ

アールメカブ


RCaBoCha のバックアップ(No.27)


管理人 について : 参考ページ 統計的言語処理: 形態素解析パッケージ RMeCab


RCaBoChaパッケージ

日本語の係り受け関係を R で解析できるようにします.形態素解析パッケージRMeCabもご参照ください.

  • テキストマイニング入門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.00000 0.00000 0.66658 0.00000 0.00000
う        0.00000 0.00000 0.00000 0.00000 0.43546
この      0.00000 0.70093 0.00000 0.00000 0.00000
その      0.66658 0.00000 0.00000 0.00000 0.00000
だ        0.00000 0.48993 0.00000 0.42058 0.00000
だろ      0.00000 0.00000 0.00000 0.00000 0.43546
で        0.46592 0.00000 0.46592 0.00000 0.00000
な        0.00000 0.00000 0.00000 0.00000 0.43546
の        0.00000 0.00000 0.00000 0.00000 0.43546
やっぱり  0.00000 0.00000 0.00000 0.60171 0.00000
バラ      0.00000 0.00000 0.00000 0.60171 0.00000
花        0.34854 0.36650 0.34854 0.00000 0.00000
桜        0.00000 0.00000 0.00000 0.00000 0.43546
綺麗      0.00000 0.36650 0.00000 0.31462 0.22769
綺麗+ない 0.46592 0.00000 0.46592 0.00000 0.0000
> 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.00000 0.00000 0.66658 0.00000 0.00000
う       0.00000 0.00000 0.00000 0.00000 0.43546
この     0.00000 0.70093 0.00000 0.00000 0.00000
その     0.66658 0.00000 0.00000 0.00000 0.00000
だ       0.00000 0.48993 0.00000 0.42058 0.00000
だろ     0.00000 0.00000 0.00000 0.00000 0.43546
で       0.46592 0.00000 0.46592 0.00000 0.00000
な       0.00000 0.00000 0.00000 0.00000 0.43546
の       0.00000 0.00000 0.00000 0.00000 0.43546
やっぱり  0.00000 0.00000 0.00000 0.60171 0.00000
バラ     0.00000 0.00000 0.00000 0.60171 0.00000
花       0.34854 0.36650 0.34854 0.00000 0.00000
桜       0.00000 0.00000 0.00000 0.00000 0.43546
綺麗     0.00000 0.36650 0.00000 0.31462 0.22769
綺麗+ない 0.46592 0.00000 0.46592 0.00000 0.00000
> 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

RCaBoChaCnt?関数 : 単独のファイルを引数として,そのファイルを文に分割し,各文の形態素数と句数をデータフレームとして出力する.

> kekka <- RCaBoChaCnt("data/merosu.txt")
file = data/merosu.txt  #『走れメロス』を解析
> kekka
    Nr. Terms Phrases
1     1     5       2
2     2    17       6
3     3     7       3
4     4     8       3
5     5    12       5
... 以下略

文の区切りは " !?.。.!?" である.これも引数で指定できた方が良いかな?

_ CaBoCha 0.60

ここからダウンロードして,インストールしてください.

Windowsではファイルをダブルクリックし,文字コードは Shift-JISを選び,後は[続ける]を押すだけです.

Linux や Mac OS X ではかなり面倒な手続きが必要です.ここを参考にしてください

_ 現在のヴァージョン

_ バージョン 0.13 (R-2.9.0) 2009 年 04 月 20 日 大幅修正版

大幅に修正。今までは Linux の UTF-8 作成したC++ソースファイルやDESCRIPTIONは UTF-8 のまま、しかし R ソース、Man ファイルを、Windows常でバイナリを作成する場合には Shift-Jisに変換してコンパイルするという手抜きをしていたが、そろそろ限界なので UTF-8で作成した C++ ソース内で、Riconv_open("", "UTF-8") を使って文字コードをプラットフォームにあわせて変換する処理を行うことにして R ソースや man ファイルから日本語文字列を削除した。

_ バージョン 0.12 (R-2.9.0) 2009 年 04 月 18 日

_ バージョン 0.11 (R-2.8.1) 2008 年 12 月 24 日

以前の R-2.8.0 には文字コードに不具合があるので,できれば最新の R を利用してください.

_ バージョン 0.10 (R-2.8.0) 2008 年 11 月 10 日

微調整

_ バージョン 0.09 (R-2.8.0) 2008 年 11 月 07 日

文字コードまわりの修正を行った

_ バージョン 0.07 (R-2.7.1) 2008 年 9 月 26 日

_ Windows 版バイナリ のインストール方法

fileRCaBoCha_0.13.zip (R-2.9.0) fileRCaBoCha_0.11.zip (R-2.8.1), fileRCaBoCha_0.07.zip (R-2.7.1) fileREADME_RCaBoCha.txt (Shift-JIS) と 付属の環境設定ファイル (CaBoChaへのPATHをWindowsの環境設定に追加したい場合は不要)

インストール手順

  1. まずCaBoChaをインストールしてください.ここ から win32バイナリをダウンロードしてインストールします.インストール先は標準設定のまま C:\Program Files\CaBoCha とします.また文字コードは Shit-Jis のままとします.なお自身のある方はCaBoChaへのPATHをWindowsの環境設定に追加してください.C:\Program Files\CaBoCha\binをPATHに追記.)
  2. 次に RCaBoCha_***.zip をRにインストールします.*** の部分はバージョン番号です.Rのメニューから[パッケージ][ローカルにあるzipファイルからのパッケージのインストール]を選んで,ダウンロードした RCaBoCha_***.zipファイルを選んでインストールします.[win-libraryを作成したいのですか] と聞いてきた時は OK を押してください(この際,R はユーザーフォルダを作成します). CaBoChaへのPATHをWindowsの環境設定に追加した方は,続く3.以下の処理は不要です.詳しくは fileREADME_RCaBoCha.txt (Shift-JISファイル)をご覧ください.
  3. ここで,Rのライブラリフォルダがどこにあるかを確認してください.Rのコンソール画面で .libPaths() を実行すると分かります.通常はRがインストールされたフォルダになります.
    1. この結果の最初の出力 ([1] のすぐ右横の表示内容)
      [1] "C:/PROGRA~1/R/R-2*~*.*/library" 
      のように (*の部分はバージョン番号)なっていれば,R 本体と同じ場所にあります.以下の手順の4.までを実行してください.
    2. .libPaths() 最初の出力
[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. までを実行してください.

  1. 続いて, CaBoCha と R の両方が標準的なフォルダにインストールされた状態であり,またRのライブラリフォルダが R 本体と同じ場所にあれば,fileRCaBoChaInstall.bat をダブルクリック してください.これでインストールは完了です.さっそく機能を試してみてください.なお試用データセットを用意しました.
  2. CaBoCha はデフォルトのままインストール先を変更しなかったが,Rのライブラリフォルダがユーザフォルダになっている場合,XPのユーザーであればfileRCaBoChaInstallXP.bat を,またVistaのユーザーはfileRCaBoChaInstallVista.bat を実行して,環境設定を行ってください.これでインストールは完了です.
  3. 以上です。なお、R 終了時にはワークスペースを保存しないことをお勧めします。言語解析結果は、一般に大きなオブジェクトになり、容量を必要とします。
  4. ここまでの手順でうまく動作しない場合
    1. CaBoCha と R のインストール先を独自に変更した場合や RCaBoCha が動作しない場合は以下を手作業で実行してください.
      1. CaBoChaをインストールしたフォルダ内の bin フォルダに libcabocha.dll libcrtff.dll というファイルがありますので,この二つを R のライブラリ関連フォルダ library にインストールされた RCaBoChaパッケージフォルダ内の libs フォルダ内にコピーします.
      2. R のインストール先に RCaBoChaパッケージ用のライブラリフォルダが存在しない場合,別の場所,すなわちユーザーフォルダにインストールされた可能性があります. 例えば個人名のフォルダの中に 「ドキュメント」->「R」->「win-library」->「2.*」があり,その中に RCaBoCha\libs フォルダがあるかもしれません。Rのコンソール画面で .libPaths() と実行すると分かります.以下は Vista Home Basic にR-2.7.1をインストールし、続いてRCaBoCha をインストールした直後に実行した結果です。
> .libPaths()
[1] "C:\\Users\\ishida\\Documents/R/win-library/2.7"
[2] "C:/PROGRA~1/R/R-27~1.1/library" 

この場合は libcabocha.dlllibcrftt.dllwin-library/2.8 の中のRCaBoCha\libs? というフォルダの中に手作業でコピーしてください。

ご利用は自己責任でお願いします.

_ Mac 版バイナリ のインストール方法

fileRCaBoCha_0.13.tgz (R-2.9.0), fileRCaBoCha_0.11.tgz (R-2.8.1), fileRCaBoCha_0.07.tgz (R-2.7.1)

  1. CaBoChaをインストールします.かなり面倒です.ここを参考にしてください
  2. R を起動します. メニューから [パッケージとデータ]→[パッケージインストーラ]を選びます.一番上のCRANと表示されているメニューを[このコンピューター上のバイナリパッケージ]に変更します.右下の installボタンを押して,ダウンロードした RCaBoCha_***.tgzを選びます.*** の部分はバージョン番号です.
    1. インストールする権限がないといわれた場合は,自分のホームに例えば RLibs などというフォルダを新規作成します。そして,やはりホームに .Renvironというファイルを作成し,中身を次のように編集してください.
      R_LIBS=/Users/ishida/Rlibs
      ishida の部分は terminal 画面の $ マークの前に表示されているログイン名に変えてください.terminal上では以下のようにしても作成できます.
      $ echo 'R_LIBS=/Users/ishida/Rlibs' > .Renviron
      $ cat .Renviron
    2. その上で,Rを起動しなおして,再びRCaBoCha_***.tgz パッケージをインストールする手続きを行い、ファイルを選ぶ前に ウィンドウ下の [ユーザーエリア] にチェックを入れておきます.

以上です。なお、R 終了時にはワークスペースを保存しないことをお勧めします。言語解析結果は、一般に大きなオブジェクトになり、容量を必要とします。

ご利用は自己責任でお願いします.

_ Linux 版バイナリ & ソース のインストール方法

fileRCaBoCha_0.13.tar.gz (R-2.9.0), fileRCaBoCha_0.11.tar.gz (R-2.8.1), fileRCaBoCha_0.07.tar.gz (R-2.7.1)

  1. CaBoChaをインストールします.かなり面倒です.ここを参考にしてください
  2. R コンソールで次のように実行してください.
    > install.packages("RCaBoCha_0.11.tar.gz", lib.loc = ".",
       repos = NULL)
    > library(RCaBoCha)

以上です。なお、R 終了時にはワークスペースを保存しないことをお勧めします。言語解析結果は、一般に大きなオブジェクトになり、容量を必要とします。

_ 試行用データ

_ filedataRCaBoChaWin.zip Windows用Shift JIS です。

_ filedataRCaBoChaUnix.tar.gz MacOSXやLinux用UTF-8 です。

_ バージョン履歴:お問い合わせ

  • お問い合わせはメールをください.関数の追加についても,気楽にご相談ください.

石田基広

ishida-m(この部分を"@"に変更下さい)ias.tokushima-u.ac.jp

  • SoftArchive ソース
    • 掲示板を兼ねてますので,パスワードを設定しています.めかぶです.

_ R の参考書

  • 中級者になるために.
  • 解析をばりばり行うために.
  • データをばりばり処理するために.
  • R のプログラミングテクニックを学ぶために.
  • R での解析手法に慣れるために.
  • とにかく R を使ってみたい.
  • 統計学と R を同時に学びたい.