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

アールメカブ


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


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

現在開発を継続中です

2010年8月28日 RCaBoCha_0.26 にて,かなり大きな変更を加えました.要点は

  • 指定された品詞の係り受けをすべて出力
  • MeCab?やユーザー辞書の指定を可能に
  • 活用語の場合,出力を表層形と原型のどちらかを選択可能に

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
RCaBoCha("それは面白い本であった。",0)# Tree を出さない
RCaBoCha("それは面白い本であった。",
  mecabrc="/Users/motohiro/.mecabrc")# mecabrc を指定

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
 mecabrc="/Users/motohiro/.mecabrc"  mecabrc を指定可能

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

 
#####################################################
#          RCaBoChaFile() 関数
#####################################################
 # ファイルを読み込んで頻度表を作成
 # 引数  conj = 0  活用語はそのまま表層形で
 # この際、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
 ... 
res  <- RCaBoChaFile("kumo.txt", conj = 0)
## conj = 0 活用語はそのまま表層形で
res  <- RCaBoChaFile("kumo.txt", rmT =c("記号","助詞") , mecabrc="/Users/motohiro/.mecabrc")
## mecabrc を指定.念のため絶対パスで指定してください

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

####################################################
#          RCaBoChaDF() 関数
#####################################################
## データフレームから文書ターム行列を作成する。
## 
# RCaBoCha_0.25 までの rmT str2 は廃止しました
# 引数  conj = 0  活用語はそのまま表層形で
# 引数 pos =c("名詞","形容詞") などで抽出する品詞を指定できます
## デフォルトでは pos =c("名詞","形容詞","動詞") がセットされています 
# 引数 minFreq で文書全体を通しての最小頻度を指定できます
dat <- read.csv("H18koe.csv")  ## 沖縄観光についての自由意見
res <- RCaBoChaDF(dat[,"opinion"])##やや時間がかかります
nrow(res)
# [1] 2263
head(res[200:205, 1:5])
#          TERM        POS1        POS2 ROW3 ROW4
#200     どこ+店   名詞+名詞 代名詞+名詞    0    0
#201 どちら+下車   名詞+名詞 代名詞+名詞    0    0
#202     どれ+の   名詞+名詞 代名詞+名詞    0    0
#203   どれ+料理   名詞+名詞 代名詞+名詞    0    0
#204   どれ+沖縄   名詞+名詞 代名詞+名詞    0    0
#205   ない+こと 助動詞+名詞      *+名詞    0    0
head(res[res$POS1 %in% c("名詞+動詞", "形容詞+名詞"), 1:5])
## "名詞+動詞" あるいは  "形容詞+名詞" のケースをみる
res <- RCaBoChaDF(dat[,"opinion"], pos = c("名詞","形容詞","動詞"))###やや時間がかかります
nrow(res)
res <- RCaBoChaDF(dat[,"opinion"], pos = c("名詞","形容詞","動詞"), mecabrc = "/Users/motohiro/.mecabrc")
res <- RCaBoChaDF(dat[,"opinion"], pos = c("名詞","形容詞"), 
 mecabrc = "/Users/motohiro/.mecabrc") 
## mecabrc を指定.念のため絶対パスで指定してください
res <- RCaBoChaDF(dat[,"opinion"], conj = 0)
## 活用語はそのまま表層形で

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

#####################################################
#          RCaBoChaMx() 関数
#####################################################
## ファイルあるいはディレクトリから文書ターム行列を作成。

# RCaBoCha_0.25 までの rmT str2 は廃止しました 

# 引数  conj = 0  活用語はそのまま表層形で
# 引数 pos =c("名詞","形容詞") などで抽出する品詞を指定できます
## デフォルトでは pos =c("名詞","形容詞","動詞") がセットされています 
# さらに引数 minFreq で文書全体を通しての最小頻度を指定できます
res <- RCaBoChaMx("morikita")
## file_name =  morikita/morikita1.txt opened
## file_name =  morikita/morikita2.txt opened
## file_name =  morikita/morikita3.txt opened

nrow(res)## [1] 66

res[50:55,]
#        TERM      POS1          POS2 morikita1.txt morikita2.txt
#50   科学+者 名詞+名詞     一般+名詞             0             0
#51     系+化 名詞+名詞     接尾+名詞             1             0
#52     系+特 名詞+名詞     接尾+名詞             1             0
#53 編曲+感じ 名詞+名詞 サ変接続+名詞             0             1
#54 編集+感じ 名詞+名詞 サ変接続+名詞             0             1
#55   者+企業 名詞+名詞     接尾+名詞             0             1
#   morikita3.txt
#50             1
#51             0
#52             0
#53             0
#54             0
#55             0
res <- RCaBoChaMx("morikita",pos = c("名詞","形容詞","動詞"))###やや時間がかかります
nrow(res)
#res <- RCaBoChaMx("morikita",pos = c("名詞","形容詞","動詞"), mecabrc = "/Users/motohiro/mecabrc")

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.28β (R-2.12.0) 2010 年 10 月 28 日

R-2.12.0 対応.

  • Windows 32 bit 用 fileRCaBoCha_0.28.zip (R-2.12.0) :
    • (Windows 64 bit 版は現在のところ用意していません.)

_ バージョン 0.27β (R-2.11.1) 2010 年 08 月 29 日

R-2.11.1 対応. conj 引数を追加し,活用語の場合,出力を表層形 (conj = 0: デフォルト) とするか,あるいは原型(conj = 1) とするかを選択できるようにした

_ バージョン 0.26β (R-2.11.1) 2010 年 08 月 28 日

R-2.11.1 対応.

かなり大きな変更を加えました.要点は,

  • 1)係り受けをすべて抽出する
  • 2)mecabrcリソースファイルを指定可能に
  • 3)RCaBoCha では 0 オプションでTreeを表示しない

ようにしたことです.

CaBoChaそのものが,かなり遅いので,ファイルが大きくなると 解析にも相応に時間がかかりますので注意してください.

mecabrcファイルの指定する場合,ファイルの設定内容に 十分ご注意ください

_ バージョン 0.24β (R-2.11.1) 2010 年 06 月 14 日

R-2.11.1 に対応. 機能の追加,変更はありませんが,/CaBoChaのdllを同封しましたので,インストール後, CaBoCha の libcabocha.dll と libcrftt.dll をコピーするなどのに必要はなくなりました.

&ref(): File not found: "RCaBoCha_0.24.zip" at page "RCaBoCha"; (R-2.11.1) :

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

(Windows 64 bit 版は現在のところ用意していません.)

Windows 32 bit 用

fileRCaBoCha_0.28.zip (R-2.12.0) :

fileRCaBoCha_0.27.zip (R-2.11.1) :

付属の環境設定ファイル (CaBoChaへのPATHをWindowsの環境設定に追加したい場合は不要) RCaBoCha_0.25からは不要になりました.

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

インストール手順

  1. まずCaBoChaをインストールしてください.ここ から CaBoCha-0.60pre*.zip win32バイナリをダウンロードしてインストールします.インストール先は標準設定のまま C:\Program Files\CaBoCha とします.また文字コードは Shit-Jis のままとします.
    1. インストール後 必ずしも必要ではありませんが, Windowsの環境設定で CaBoCha へのパスを通します.最新の注意を払って作業してください. すなわちコントロール・パネルの[システム]アイテムを起動し、 表示される[システムのプロパティ]ダイアログの[詳細設定]タブ (Windows 2000では[詳細]タブ) をクリックし、[システム環境変数] (あるいはユーザー環境に新規作成)の PATH の先頭に
      C:\Program Files\CaBoCha\bin;
      を追記します.最後のセミコロンを忘れないようにしてください.また,既存の内容を上書きしたり, 消したりしないよう, 最新の注意を払って作業してください.
  2. 次に RCaBoCha_***.zip をRにインストールします.*** の部分はバージョン番号です.Rのメニューから[パッケージ][ローカルにあるzipファイルからのパッケージのインストール]を選んで,ダウンロードした RCaBoCha_***.zipファイルを選んでインストールします.[win-libraryを作成したいのですか] と聞いてきた時は OK を押してください(この際,R はユーザーフォルダを作成します).

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

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

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

Snow Leopard 64 bit :

fileRCaBoCha_0.28.tgz (R64 R-2.12.0) : R64でお使いください

fileRCaBoCha_0.26_R_x86_64-apple-darwin9.8.0.tgz (R64 R-2.11.1) : R64でお使いください

Leopard 32 bit :

fileRCaBoCha_0.28_i386.tgz (R32 R-2.12.0) : R(32bit)でお使いください

fileRCaBoCha_0.26.tgz (R32 R-2.11.1) : R(32bit)でお使いください

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

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

Linux 64 bit :

fileRCaBoCha_0.28_R_x86_64-unknown-linux-gnu.tar.gz (R-2.12.0) :

fileRCaBoCha_0.27_R_x86_64-unknown-linux-gnu.tar.gz (R-2.11.1) :

color(green){Linux 32 bit : };

fileRCaBoCha_0.28_R_i686-pc-linux-gnu.tar.gz (R-2.12.0) :

fileRCaBoCha_0.27_R_i686-pc-linux-gnu.tar.gz (R-2.11.1) :

  1. CaBoChaをインストールします.かなり面倒です.ここを参考にしてください
  2. R コンソールで次のように実行してください.
    > install.packages("RCaBoCha_0.26.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 を同時に学びたい.