管理人 について : 参考ページ 統計的言語処理: 形態素解析パッケージ RMeCab
現在開発を継続中です
RCaBoChaパッケージ
日本語の係り受け関係を R で解析できるようにします.形態素解析パッケージ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 ...
ここからダウンロードして,インストールしてください.
Windowsではファイルをダブルクリックし,文字コードは Shift-JISを選び,後は[続ける]を押すだけです.
Linux や Mac OS X ではかなり面倒な手続きが必要です.ここを参考にしてください.
R-2.10.0 に対応. 機能の追加,変更はありません.
R-2.9.2 に対応. 機能の追加,変更はありません. 年内に,もう一度大きなバージョンアップを考えています.
Boostライブラリを導入し,C++コードを大幅に修正.
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 # (予備)
未公開
大幅に修正。今までは Linux の UTF-8 作成したC++ソースファイルやDESCRIPTIONは UTF-8 のまま、しかし R ソース、Man ファイルを、Windows常でバイナリを作成する場合には Shift-Jisに変換してコンパイルするという手抜きをしていたが、そろそろ限界なので UTF-8で作成した C++ ソース内で、Riconv_open("", "UTF-8") を使って文字コードをプラットフォームにあわせて変換する処理を行うことにして R ソースや man ファイルから日本語文字列を削除した。
以前の R-2.8.0 には文字コードに不具合があるので,できれば最新の R を利用してください.
微調整
文字コードまわりの修正を行った
RCaBoCha_0.22.zip (R-2.10.0) : RCaBoCha_0.21.zip (R-2.9.2) : RCaBoCha_0.20.zip (R-2.9.0) : RCaBoCha_0.11.zip (R-2.8.1), RCaBoCha_0.07.zip (R-2.7.1) README_RCaBoCha.txt (Shift-JIS) と 付属の環境設定ファイル (CaBoChaへのPATHをWindowsの環境設定に追加したい場合は不要)
インストール手順
[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.8 の中のRCaBoCha\libs? というフォルダの中に手作業でコピーしてください。
ご利用は自己責任でお願いします.
RCaBoCha_0.22.tgz (Snow Leopard R64 R-2.10.0) : RCaBoCha_0.21.tgz (R-2.9.2) : RCaBoCha_0.20.tgz (R-2.9.0) : RCaBoCha_0.11.tgz (R-2.8.1), RCaBoCha_0.07.tgz (R-2.7.1)
R_LIBS=/Users/ishida/Rlibsishida の部分は terminal 画面の $ マークの前に表示されているログイン名に変えてください.terminal上では以下のようにしても作成できます.
$ echo 'R_LIBS=/Users/ishida/Rlibs' > .Renviron $ cat .Renviron
以上です。なお、R 終了時にはワークスペースを保存しないことをお勧めします。言語解析結果は、一般に大きなオブジェクトになり、容量を必要とします。
ご利用は自己責任でお願いします.
RCaBoCha_0.22.tar.gz (R-2.10.0) : RCaBoCha_0.21.tar.gz (R-2.9.2) : RCaBoCha_0.20.tar.gz (R-2.9.0) : RCaBoCha_0.11.tar.gz (R-2.8.1) : RCaBoCha_0.07.tar.gz (R-2.7.1)
> install.packages("RCaBoCha_0.11.tar.gz", lib.loc = ".", repos = NULL) > library(RCaBoCha)
以上です。なお、R 終了時にはワークスペースを保存しないことをお勧めします。言語解析結果は、一般に大きなオブジェクトになり、容量を必要とします。
石田基広
ishida-m(この部分を"@"に変更下さい)ias.tokushima-u.ac.jp