管理人 について : 参考ページ 統計的言語処理: 形態素解析パッケージ RMeCab
現在開発を継続中です
2010年8月28日 RCaBoCha_0.26 にて,かなり大きな変更を加えました.要点は
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
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
...
ここからダウンロードして,インストールしてください.
Windowsではファイルをダブルクリックし,文字コードは Shift-JISを選び,後は[続ける]を押すだけです.
Linux や Mac OS X ではかなり面倒な手続きが必要です.ここを参考にしてください.
R-2.13.0 対応.
R-2.12.0 対応.
R-2.11.1 対応. conj 引数を追加し,活用語の場合,出力を表層形 (conj = 0: デフォルト) とするか,あるいは原型(conj = 1) とするかを選択できるようにした
R-2.11.1 対応.
かなり大きな変更を加えました.要点は,
ようにしたことです.
CaBoChaそのものが,かなり遅いので,ファイルが大きくなると 解析にも相応に時間がかかりますので注意してください.
mecabrcファイルの指定する場合,ファイルの設定内容に 十分ご注意ください
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) :
R-2.11.0 に対応. 機能の追加,変更はありません. ここからプラットフォームにあったバージョンをダウンロードしてください
R-2.10.1 に対応. 機能の追加,変更はありません.
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 を利用してください.
微調整
文字コードまわりの修正を行った
(Windows 64 bit 版は現在のところ用意していません.)
Windows 32 bit 用
RCaBoCha_0.28.zip (R-2.12.0) :
RCaBoCha_0.27.zip (R-2.11.1) :
と
付属の環境設定ファイル (CaBoChaへのPATHをWindowsの環境設定に追加したい場合は不要) RCaBoCha_0.25からは不要になりました.
インストール手順
C:\Program Files\CaBoCha\bin;を追記します.最後のセミコロンを忘れないようにしてください.また,既存の内容を上書きしたり, 消したりしないよう, 最新の注意を払って作業してください.
なお RCaBoCha_0.23 まではインストール後, libcabocha.dll と libcrftt.dll の設定が必要でしたが,RCaBoCha_0.24 からはこの設定作業は不要になりました.
ご利用は自己責任でお願いします.
Snow Leopard 64 bit :
RCaBoCha_0.29.tgz (R64 R-2.13.0) : R64でお使いください
RCaBoCha_0.26_R_x86_64-apple-darwin9.8.0.tgz (R64 R-2.11.1) : R64でお使いください
Leopard 32 bit :
RCaBoCha_0.29maci386.tgz (R32 R-2.13.0) : R(32bit)でお使いください
RCaBoCha_0.29_PPC.tgz (R32 R-2.13.0) : R(PPC32bit)でお使いください
R_LIBS=/Users/ishida/Rlibsishida の部分は terminal 画面の $ マークの前に表示されているログイン名に変えてください.terminal上では以下のようにしても作成できます.
$ echo 'R_LIBS=/Users/ishida/Rlibs' > .Renviron $ cat .Renviron
以上です。なお、R 終了時にはワークスペースを保存しないことをお勧めします。言語解析結果は、一般に大きなオブジェクトになり、容量を必要とします。
ご利用は自己責任でお願いします.
RCaBoCha_0.24 beta for R-2.11.0 on Linux ここからお使いのプラットフォームにあったバージョンをダウンロードしてください
Linux 64 bit :
RCaBoCha_0.29_R_x86_64-unknown-linux-gnu.tar.gz (R-2.13.0) :
RCaBoCha_0.27_R_x86_64-unknown-linux-gnu.tar.gz (R-2.11.1) :
color(green){Linux 32 bit : };
RCaBoCha_0.29_R_i686-pc-linux-gnu.tar.gz (R-2.13.0) :
RCaBoCha_0.27_R_i686-pc-linux-gnu.tar.gz (R-2.11.1) :
> install.packages("RCaBoCha_0.26.tar.gz", lib.loc = ".",
repos = NULL)
> library(RCaBoCha)以上です。なお、R 終了時にはワークスペースを保存しないことをお勧めします。言語解析結果は、一般に大きなオブジェクトになり、容量を必要とします。
石田基広
ishida-m(この部分を"@"に変更下さい)ias.tokushima-u.ac.jp