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

アールメカブ


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


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

現在開発を継続中です


RCaBoChaパッケージ

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

  • テキストマイニング入門RMeCabを利用したテキストマイニングについては を参照いただければ幸いです.

_ 実装済みの関数

RCaBoCha関数 : CaBocha? の単純な出力を返す.

#####################################################
#          RCaBoCha() 関数
#####################################################
# CaBoCha の解析結果をそのまま出力
 > RCaBoCha("それは面白い本であった。")
 FROMAT_TREE =
        それは---D
         面白い-D
     本であった。
 EOS
    Term1  Term2      POS  D1 D2
 1   それ        それ      名詞   1  2
 2     は            は      助詞   1  2
 3 面白い    面白い  形容詞    2  2
 4     本            本      名詞   3 -1
 5     で            だ   助動詞    3 -1
 6   あっ         ある   助動詞    3 -1
 7     た            た   助動詞    3 -1
 8     。              。       記号   3 -1

RCaBoChaFreq?関数 : 否定の係りを判定して頻度を測る

#####################################################
#          RCaBoChaFreq() 関数
#####################################################
## CaBoCha の解析結果を頻度表に
# この際、str2 で指定したタームとの係り受けを考慮.
# 指定されない場合は 否定の「ない」との係り受けを考慮
 > RCaBoChaFreq("それは面白い本であった。
       しかし、この本に比べると面白くはない。")
 string 2 = "ない" setted: length = 0 
           Term                 Pos      Freq
 1           、                    記号    1
 2           。                    記号    2
 3         ある                助動詞    1
 4         この                連体詞    1
 5       しかし                接続詞    1
 6         それ                   名詞    1
 7           た                 助動詞    1
 8           だ                 助動詞    1
 9           と                     助詞    1
 10          に                    助詞    1
 11          は                    助詞    1
 12     は+ない      助詞+形容詞    1
 13          本                    名詞    2
 14      比べる                  動詞    1
 15      面白い               形容詞    1
 16 面白い+ない 形容詞+形容詞    1
 
# 係り受けのタームを指定する.デフォルトは「ない」
 > RCaBoChaFreq("それは面白い本であった。
    しかし、この本に比べると 面白くはない。", str2 = "は")
 string 2 = "は" setted: length = 1 
         Term            Pos    Freq
 1         、               記号        1
 2         。               記号        2
 3       ある          助動詞        1
 4       この          連体詞         1
 5     しかし          接続詞         1
 6    それ+は   名詞+助詞         1
 7         た           助動詞         1
 8         だ            助動詞        1
 9         と                助詞        1
 10      ない           形容詞        1
 11        に                助詞       1
 12        本                名詞       2
 13    比べる               動詞      1
 14    面白い            形容詞     1
 15 面白い+は   形容詞+助詞    1

RCaBoChaFile?関数 : ファイルを対象に指定された語との係り受けを判定して頻度を測る.引数rmT = c("助詞", "記号") などとして,抽出しない品詞を指定可能.デフォルトは記号のみ. ただし半角スペースと全角スペース,"!?.。.!?"は常に削除する.

 
#####################################################
#          RCaBoChaFile() 関数
#####################################################
# ファイルを読み込んで頻度表を作成
# この際、str2 で指定したタームとの係り受けを考慮.
# 指定されない場合は 否定の「ない」との係り受けを考慮
# さらに 引数 rmT =c("記号","助詞") 等として
# 対象としない品詞を指定できます
 > res  <- RCaBoChaFile("kumo.txt", "")
 Pos[0] =  記号 	removed 
 file = kumo.txt
 > res
              Term         Pos Freq
 1          あたり        名詞    3
 2            あっ      感動詞    1
 3            あの    フィラー    1
 4            ある        動詞   10
 5            ある      連体詞    3
 6            あれ        名詞    1
 7          いくら        副詞    2
 8    いつの間にか        副詞    1
 9            いや      接続詞    3
 10   いらっしゃる        動詞    2
 ...
 365        落ちる        動詞    4
 366   落ちる+ない 動詞+助動詞    1
 367            葉        名詞    2
 368            蓮        名詞    4
 369          蓮池        名詞    4
 ...

 > res  <- RCaBoChaFile("kumo.txt", "の")
 > res 
             Term         Pos Freq
 1         あたり        名詞    3
 2           あっ      感動詞    1
 3           あの    フィラー    1
 4           ある        動詞    9
 5           ある      連体詞    3
 6        ある+の   動詞+名詞    1
 7        あれ+の   名詞+助詞    1
 8         いくら        副詞    2
 9   いつの間にか        副詞    1
 10          いや      接続詞    3
 ... 

 > res  <- RCaBoChaFile("kumo.txt", rmT =c("記号","助詞") )
 > res
 1          あたり        名詞    3
 2            あっ      感動詞    1
 3            あの    フィラー    1
 ...
 399          違い        名詞    1
 400     違い+ない 名詞+助動詞    1
 ... 

RCaBoChaDF関数 : データフレームの指定列を対象に指定された語との係り受けを判定して頻度を測り,ターム・文章行列を作成.引数 rmT = c("助詞", "記号") などとして,抽出しない品詞を指定可能.デフォルトは記号のみ. ただし半角スペースと全角スペース,"!?.。.!?"は常に削除する. また minFreq引数で,全文書を通じての総頻度の閾値を指定可能.

####################################################
#          RCaBoChaDF() 関数
#####################################################
## データフレームから文書ターム行列を作成する
# この際、str2引数で指定された語との係り受けを考慮
#     デフォルトは 否定の「ない」との係り受けを考慮
# 引数 rmT =c("記号","助詞")等として対象としない品詞を指定できます
# 引数 minFreq で文書全体を通しての最小頻度を指定できます
 > dat <- read.csv("H18koe.csv")  ## 沖縄観光についての自由意見
 > res <- RCaBoChaDF(dat[,"opinion"])
 > nrow(res)
 > res[48:53, 1:4]
             Term         Pos OBS.3 OBS.4
 48      あまりに        副詞     0     0
 49      あらゆる      連体詞     0     0
 50 ありえる+ない 動詞+助動詞     0     0
 51    ありがたい      形容詞     0     0
 52    ありがとう      感動詞     0     0
 53    ありのまま        副詞     0     0
 ...

 > res <- RCaBoChaDF(dat[,"opinion"], str2 = "は" )
 > nrow(res)
 > res[1000:1005, c(1,2, 23:28)]
           Term       Pos OBS.23 OBS.24 OBS.25 OBS.26 OBS.27 OBS.28
 1000    取り組み      名詞      0      0      0      0      1      0
 1001    取り組む      動詞      0      0      0      0      0      0
 1002 取り組む+は 動詞+助詞      0      0      0      0      0      0
 1003        取る      動詞      0      0      0      0      0      0
 1004      取れる      動詞      0      0      0      0      0      0
 1005      受ける      動詞      0      0      0      0      0      0

 > res <- RCaBoChaDF(dat[,"opinion"],rmT =c("記号","助詞"))
 > nrow(res)
 > res[1500:1505, c(1,2, 60:65)]
               Term         Pos OBS.60 OBS.61 OBS.62 OBS.63 OBS.64 OBS.65
 1500      無くなる        動詞      0      0      0      0      0      0
 1501 無くなる+ない 動詞+助動詞      0      0      0      0      0      0
 1502        無愛想        名詞      0      0      0      0      0      0
 1503          無料        名詞      0      0      0      0      0      0
 1504          無理        名詞      0      0      0      0      0      1
 1505          無駄        名詞      0      0      0      0      0      0
 > res <- RCaBoChaDF(dat[,"opinion"], rmT =c("記号","助詞"), minFreq = 2)
 > nrow(res)
 > res[100:110, 1:8]
          Term           Pos OBS.3 OBS.4 OBS.5 OBS.6 OBS.7 OBS.8
 100      たい        助動詞     0     0     0     1     0     0
 101  たくさん          名詞     0     0     0     0     0     0
 102      ただ        接続詞     0     0     0     0     0     0
 103      たち          名詞     0     0     0     1     0     0
 104      たび          名詞     0     0     0     0     0     0
 105    たむろ          名詞     0     0     0     0     0     0
 106      ため          名詞     0     0     1     0     0     0
 107        だ        助動詞     0     0     0     0     2     0
 108   だ+ない 助動詞+助動詞     0     0     0     0     0     0
 109   だ+ない 助動詞+形容詞     0     0     0     0     0     0
 110 だい+ない   名詞+形容詞     0     0     0     0     0     0

RCaBoChaMx?関数 : フォルダ全体あるいは単独ファイルを対象に指定された語との係り受けを判定して頻度を測り,ターム・文章行列を作成.引数 rm = c("助詞", "記号") などとして,抽出しない品詞を指定可能.デフォルトは記号のみ. ただし半角スペースと全角スペース,"!?.。.!?"は常に削除する. また minFreq 引数で,全文書を通じての総頻度の閾値を指定可能.

#####################################################
#          RCaBoChaMx() 関数
#####################################################
# 単独ファイルあるいはディレクトリから文書ターム行列を作成。
# この際、str2引数で指定された語との係り受けを考慮
#     デフォルトは 否定の「ない」との係り受けを考慮
# 引数 rmT =c("記号","助詞")等として対象としない品詞を指定できます
# さらに引数 minFreq で文書全体を通しての最小頻度をしてできます
 > res <- RcaBoChaMx("flower")
 > nrow(res)
 > res
        Term           Pos hana1.txt hana2.txt hana3.txt hana4.txt hana5.txt
1       あの        連体詞         0         0         1         0         0
2         う        助動詞         0         0         0         0         1
3         が          助詞         0         0         0         1         0
4       この        連体詞         0         1         0         0         0
5       その        連体詞         1         0         0         0         0
6         だ        助動詞         0         1         0         1         2
7    だ+ない 助動詞+助動詞         1         0         0         0         0
8    だ+ない 助動詞+形容詞         0         0         1         0         0
9         な          助詞         0         0         0         1         0
10        の          名詞         0         0         0         0         1
11        は          助詞         1         1         0         0         1
12   は+ない   助詞+形容詞         0         0         1         0         0
13        も          助詞         0         0         1         0         0
14  やっぱり          副詞         0         0         0         1         0
15      バラ          名詞         0         0         0         1         0
16        桜          名詞         0         0         0         0         1
17      綺麗          名詞         0         1         0         1         1
18 綺麗+ない   名詞+助動詞         1         0         0         0         0
19 綺麗+ない   名詞+形容詞         0         0         1         0         0
20        花          名詞         1         1         1         0         0

 > res <- RCaBoChaMx("flower", "は")
 > res
       Term         Pos hana1.txt hana2.txt hana3.txt hana4.txt hana5.txt
1      あの      連体詞         0         0         1         0         0
2        う      助動詞         0         0         0         0         1
3        が        助詞         0         0         0         1         0
4      この      連体詞         0         1         0         0         0
5      その      連体詞         1         0         0         0         0
6        だ      助動詞         1         1         0         1         1
7     だ+は 助動詞+助詞         0         0         1         0         1
8        な        助詞         0         0         0         1         0
9      ない      助動詞         1         0         0         0         0
10     ない      形容詞         0         0         1         0         0
11    の+は   名詞+助詞         0         0         0         0         1
12       も        助詞         0         0         1         0         0
13 やっぱり        副詞         0         0         0         1         0
14     バラ        名詞         0         0         0         1         0
15       桜        名詞         0         0         0         0         1
16     綺麗        名詞         1         1         0         1         0
17  綺麗+は   名詞+助詞         0         0         1         0         1
18       花        名詞         0         0         1         0         0
19    花+は   名詞+助詞         1         1         0         0         0

> res <- RCaBoChaMx("flower", rmT = "名詞")
> res
       Term           Pos hana1.txt hana2.txt hana3.txt hana4.txt hana5.txt
1        。          記号         0         0         1         0         0
2      あの        連体詞         0         0         1         0         0
3        う        助動詞         0         0         0         0         1
4        が          助詞         0         0         0         1         0
5      この        連体詞         0         1         0         0         0
6      その        連体詞         1         0         0         0         0
7        だ        助動詞         0         1         0         1         2
8   だ+ない 助動詞+助動詞         1         0         0         0         0
9   だ+ない 助動詞+形容詞         0         0         1         0         0
10       な          助詞         0         0         0         1         0
11       は          助詞         1         1         0         0         1
12  は+ない   助詞+形容詞         0         0         1         0         0
13       も          助詞         0         0         1         0         0
14 やっぱり          副詞         0         0         0         1         0
15       .          記号         1         1         0         1         1

RCaBoChaCnt?関数 : 指定された単独ファイルを対象に,文の数,その文中の単語と品詞,文中の単語数,句数をまとめたデータフレームを返す.列名はそれぞれ

# totalNo = 文頭からの語数 
# SentNo  = 文番号 
# TermNo  = 文中単語番号 
# Term    = 単語 
# Pos     = 品詞 
# CharN   = その文字数 
# Cid     = 文中の句番号
> res <- RCaBoChaCnt("kumo.txt" )
> res[1:20,]
# 文頭からの語数 # 文番号 # 文中単語番号 # 単語 # 品詞 # その文字数 # 文中の句番号
   totalNo SentNo TermNo   Term    Pos CharN Cid
1        1      1      1   ある 連体詞     2   1
2        2      1      2     日   名詞     1   2
3        3      1      3     の   助詞     1   2
4        4      1      4     事   名詞     1   3
5        5      1      5     で 助動詞     1   3
6        6      1      6 ござい 助動詞     3   3
7        7      1      7   ます 助動詞     2   3
8        8      1      1     。   記号     1   1
9        9      2      1     御 接頭詞     1   1
10      10      2      2   釈迦   名詞     2   1
11      11      2      3     様   名詞     1   1
12      12      2      4     は   助詞     1   1
13      13      2      5   極楽   名詞     2   2
14      14      2      6     の   助詞     1   2
15      15      2      7   蓮池   名詞     2   3
16      16      2      8     の   助詞     1   3
17      17      2      9   ふち   名詞     2   4
18      18      2     10     を   助詞     1   4
19      19      2     11     、   記号     1   4
20      20      2     12   独り   名詞     2   5
...

_ CaBoCha 0.60

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

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

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

_ 現在のヴァージョン(すべてβ版です)

_ バージョン 0.23β (R-2.11.0) 2010 年 04 月 29 日

R-2.11.0 に対応. 機能の追加,変更はありません. ここからプラットフォームにあったバージョンをダウンロードしてください

_ バージョン 0.23β (R-2.10.1) 2009 年 12 月 17 日

R-2.10.1 に対応. 機能の追加,変更はありません.

_ バージョン 0.22β (R-2.10.0) 2009 年 11 月 26 日

R-2.10.0 に対応. 機能の追加,変更はありません.

_ バージョン 0.21β (R-2.9.2) 2009 年 08 月 25 日

R-2.9.2 に対応. 機能の追加,変更はありません. 年内に,もう一度大きなバージョンアップを考えています.

_ バージョン 0.20β (R-2.9.0) 2009 年 06 月 13 日

Boostライブラリを導入し,C++コードを大幅に修正.

  • Makevars.win に以下を追記
PKG_CPPFLAGS = -I. -Ic:/Boost/include/boost-1_33_1
# PKG_LIBS = -Lc:/Program\ Files/CaBoCha/bin $(MECAB)
              -Lc:/Boost/lib/libboost_regex-mgw.lib # (予備)

_ バージョン 0.14β -19 β (R-2.9.0) 2009 年

未公開

_ バージョン 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 版バイナリ のインストール方法

RCaBoCha_0.24 beta for R-2.11.0 on Windows ここからお使いのプラットフォームにあったバージョンをダウンロードしてください

RCaBoCha_0.23.zip (R-2.10.1) :

fileRCaBoCha_0.22.zip (R-2.10.0) : fileRCaBoCha_0.21.zip (R-2.9.2) : fileRCaBoCha_0.20.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の環境設定に追加したい場合は不要)

  • fileRCaBoChaInstall.bat (標準的なライブラリフォルダ設定の場合)
  • fileRCaBoChaInstallXP.bat(ライブラリフォルダがユーザーフォルダ内にあるXPの場合)
  • fileRCaBoChaInstallVista.bat (ライブラリフォルダがユーザーフォルダ内にあるVISTAの場合) :Vistaの場合ファイルを右クリックして [管理者] として実行します.

インストール手順

  1. まずCaBoChaをインストールしてください.ここ から CaBoCha-0.60pre*.zip 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 はユーザーフォルダを作成します).

なお RCaBoCha_0.23 まではインストール後, libcabocha.dll と libcrftt.dll の設定が必要でしたが,RCaBoCha_0.24 からはこの設定作業は不要になりました.

  

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

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

RCaBoCha_0.24 beta for R-2.11.0 on Mac ここからお使いのプラットフォームにあったバージョンをダウンロードしてください

RCaBoCha_0.23.tgz (R-2.10.1) :

fileRCaBoCha_0.22.tgz (Snow Leopard R64 R-2.10.0) : fileRCaBoCha_0.21.tgz (R-2.9.2) : fileRCaBoCha_0.20.tgz (R-2.9.0) : fileRCaBoCha_0.11.tgz (R-2.8.1), fileRCaBoCha_0.07.tgz (R-2.7.1)

  1. CaBoChaをインストールします.かなり面倒です.ここを参考にしてください
    1. インストール後 Windowsの環境設定で CaBoCha へのパスを通します.最新の注意を払って作業してください. すなわちコントロール・パネルの[システム]アイテムを起動し、 表示される[システムのプロパティ]ダイアログの[詳細設定]タブ (Windows 2000では[詳細]タブ) をクリックし、[システム環境変数] の PATH の先頭に
      C:\Program Files\MeCab\bin;
      を追記します.最後のセミコロンを忘れないようにしてください.また,既存の内容を上書きしたり, 消したりしないよう, 最新の注意を払って作業してください.
  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 版バイナリ & ソース のインストール方法

RCaBoCha_0.24 beta for R-2.11.0 on Linux ここからお使いのプラットフォームにあったバージョンをダウンロードしてください

RCaBoCha_0.23.tar.gz: (R-2.10.1) :

fileRCaBoCha_0.22.tar.gz (R-2.10.0) : fileRCaBoCha_0.21.tar.gz (R-2.9.2) : fileRCaBoCha_0.20.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 を同時に学びたい.