[[RMeCab]]の簡易版 テキストマイニングのためのツール: データ解析・グラフィックス環境 &size(18){[[R:http://cran.md.tsukuba.ac.jp/]]}; から日本語形態素解析ソフト''&color(blue){和布蕪};([[MeCab:http://mecab.sourceforge.net/]])''を呼び出して使うインターフェイス #contents *参考文献 [#z0749aa7] - ''&color(green){テキストマイニング入門};'':[[RMeCab]]を利用したテキストマイニングについては &htmlinsert(amazontext,asin=4627848412,text=『Rによるテキストマイニング入門』森北出版); //『[[Rによるテキストマイニング入門:http://www.amazon.co.jp/R%E3%81%AB%E3%82%88%E3%82%8B%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%9E%E3%82%A4%E3%83%8B%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80-%E7%9F%B3%E7%94%B0-%E5%9F%BA%E5%BA%83/dp/4627848412/]]』森北出版,2008.12 を参照いただければ幸いです. //- ''&color(green){テキストマイニング入門};'':[[RMeCab]]を利用したテキストマイニングについては『[[Rによるテキストマイニング入門:http://www.amazon.co.jp/R%E3%81%AB%E3%82%88%E3%82%8B%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%9E%E3%82%A4%E3%83%8B%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80-%E7%9F%B3%E7%94%B0-%E5%9F%BA%E5%BA%83/dp/4627848412/]]』森北出版,2008.12 //を参照いただければ幸いです. *開発状況 [#y5588105] - &color(green){2010年 04月29日 R2MeCab_0.14 (R-2.11.0 対応): MeCab_0.98 とあわせたバイナリ。そのほかに変更なし.}; - &color(green){2009年 12月17日 R2MeCab_0.13 (R-2.10.1 対応): MeCab_0.98 とあわせたバイナリ。そのほかに変更なし.}; - &color(green){2009年 8月25日 R2MeCab_0.12 (R-2.10.0 対応): MeCab_0.98 とあわせたバイナリ。そのほかに変更なし.}; - &color(green){2009年 8月25日 R2MeCab_0.11 (R-2.9.2対応): ; - &color(green){2009年 8月24日 R2MeCab_0.10: docDF()関数にバグがあったので修正.}; - &color(green){2009年 4月18日 R2MeCab_0.08: R-2.9.0への対応}; - &color(green){2009年 3月29日 R2MeCab_0.07: docDF()関数の効率が悪かった(解析に異常に時間がかかった)の修正.}; - &color(green){2009年 3月27日 R2MeCab_0.06: NgramDF2()関数にバグがあったのを修正.またフリーズと誤解されないよう解析中に * を出力するようにした.}; - &color(green){2009年 3月27日 R2MeCab_0.06: NgramDF2()関数にバグがあったのを修正.%%またフリーズと誤解されないよう解析中に * を出力するようにした.%%}; - &color(green){2009年 3月23日 docDF()関数に共起行列を作成する co 引数を追加}; - &color(green){2009年 3月10日 R2MeCab_0.04:デフォルトの出力を全タームに変更}; - &color(green){2009年 3月9日 R2MeCab_0.03:微調整}; - &color(green){2009年 3月6日 R2MeCab_0.02:微調整}; - &color(green){2009年 3月6日 R2MeCab_0.01: 汎用的な docDF()関数の他に RMeCabC(), RMeCabText()};を実装 *機能 [#gba3cd69] //[[RMeCab機能]]にある三つの関数が使えます. - &size(20){&color(blue){docDF()関数};}; //『Rによるテキストマイニング入門』森北書店には記載がありません. 第 1 引数で指定されたファイル (フォルダが指定された場合は,その中の全ファイル),あるいは第1引数でデータフレームを,また第 2 引数で列(番号あるいは名前)を指定して,Ngram行列,あるいはターム・文書行列を作成する.指定可能な引数は //target, column = 0, type = 0, pos = c("名詞","形容詞"), minFreq = 1, N = 2, sym = 0, kigo = "記号",Genkei = 0, weight = "" -- target : 引数はファイル名ないしフォルダ名,あるいはデータフレーム -- column : はデータフレームを指定する場合,列(番号あるいは名前)を指定する -- type : 0 は文字のGramを 1はタームのGramを作成.デフォルトは0 -- pos : 引数は pos = c("名詞", "形容詞","記号") のように指定する.指定されない場合は記号を含め,すべてを抽出. -- minFreq : 全文書を通じての総頻度の閾値を指定する.デフォルトのminFreq = 1では,どれか一つの文書に一度だけ出現したタームも,出力含めます.対象文書の分量が多い場合は 3 などを指定することを検討ください. //が,docMatrix() 関数の場合とは異なり,全テキストを通じての総頻度を判定対象とする.例えば minFreq=2 と指定した場合,どれか一つの文書で頻度が二つ以上のタームは,これ以外の各文書に一度しか出現していなくとも,出力のターム・文書行列に含まれる. docMatrix() 関数では,文書のごとの最低頻度であった. したがって,doc1という文書で二度以上出現しているタームが,他の文書で一度しか出現していない場合,このタームは出力のターム.文書行列に含まれるが,doc1以外の文書の頻度は一律 0 にされる -- N: は Ngram の場合の N の数.デフォルトは1 //-- sym: 未実装. //引数は,抽出タームに句読点なので記号を含めるかを指定する.デフォルトでは sym = 0 とセットされており,記号はカウントされないが,sym = 1 とすると,記号を含めてカウントした結果が出力される.pos 引数に記号が含まれた場合は自動的に sym = 1 とセットされる //-- kigo = "記号": は総計に記号を含むか含まないか.sym = 1 が指定された場合は数える -- Genkei:活用語を原型 (0) にするか,表層形(1) にするか.デフォルトは 0. -- weight = "tf*idf*norm" などの重みを指定可能.デフォルトは重み無し. -- nDF : N個のタームそれぞれを独立した列に取る.デフォルトは 0:nDF = 1 とすると,タームごとに列を取ります. -- co 共起行列の作成 Ngram > setwd("C:/data") > (res <- docDF("doc")) # docフォルダの全ファイルを対象に file = doc1.txt file = doc2.txt file = doc3.txt file_name = doc/doc1.txt opened file_name = doc/doc2.txt opened file_name = doc/doc3.txt opened number of extracted terms = 15 now making a data frame. wait a while! Ngram doc1.txt doc2.txt doc3.txt 1 。 1 1 1 2 い 0 0 1 3 す 1 1 1 4 で 1 1 1 5 の 0 1 0 6 は 1 1 1 7 ま 0 0 1 8 を 0 0 1 9 ん 0 0 1 10 女 0 1 1 11 学 1 2 2 12 彼 0 1 1 13 数 0 1 1 14 生 1 1 0 15 私 1 0 0 ターム・文章行列 > (res <- docDF("doc", type = 1, N=1)) file = doc1.txt file = doc2.txt file = doc3.txt file_name = doc/doc1.txt opened file_name = doc/doc2.txt opened file_name = doc/doc3.txt opened number of extracted terms = 13 now making a data frame. wait a while! TERM POS1 POS2 doc1.txt doc2.txt doc3.txt 1 。 記号 句点 1 1 1 2 いる 動詞 非自立 0 0 1 3 で 助詞 接続助詞 0 0 1 4 です 助動詞 * 1 1 0 5 の 助詞 連体化 0 1 0 6 は 助詞 係助詞 1 1 1 7 ます 助動詞 * 0 0 1 8 を 助詞 格助詞 0 0 1 9 学ぶ 動詞 自立 0 0 1 10 学生 名詞 一般 1 1 0 11 彼女 名詞 代名詞 0 1 1 12 数学 名詞 一般 0 1 1 13 私 名詞 代名詞 1 0 0 名詞と形容詞を対象にTri-gramで行列 > (res <- docDF("doc", pos = c("名詞","形容詞"), type = 1, N=3)) number of extracted terms = 1 TERM POS1 POS2 1 彼女-数学-学生 名詞-名詞-名詞 代名詞-一般-一般 doc1.txt doc2.txt doc3.txt 0 1 0 データフレームを解析する > (target <- read.csv("photo.csv")) ID Sex Reply 1 1 M 写真とってくれよ 2 2 F 写真とってください 3 3 M 写真とってね 4 4 F 写真とってください 5 5 M 写真とってっす # データフレームの3列目からBi-gram行列 > (res <- docDF(target, col = 3, N = 2)) # col はデータフレーム列あるいは名前 number of extracted terms = 13 Ngram Row1 Row2 Row3 Row4 Row5 1 く-だ 0 1 0 1 0 2 く-れ 1 0 0 0 0 3 さ-い 0 1 0 1 0 4 だ-さ 0 1 0 1 0 5 っ-す 0 0 0 0 1 6 っ-て 1 1 1 1 1 7 て-く 1 1 0 1 0 8 て-っ 0 0 0 0 1 9 て-ね 0 0 1 0 0 10 と-っ 1 1 1 1 1 11 れ-よ 1 0 0 0 0 12 写-真 1 1 1 1 1 13 真-と 1 1 1 1 1 タームのバイグラム > (res <- docDF(target, col = 3, type = 1, N = 2)) number of extracted terms = 7 now making a data frame. wait a while! TERM POS1 POS2 Row1 Row2 Row3 Row4 Row5 1 くれる-よ 動詞-助詞 非自立-終助詞 1 0 0 0 0 2 て-くださる 助詞-動詞 接続助詞-非自立 0 1 0 1 0 3 て-くれる 助詞-動詞 接続助詞-非自立 1 0 0 0 0 4 て-っす 助詞-助動詞 接続助詞-* 0 0 0 0 1 5 て-ね 助詞-助詞 接続助詞-終助詞 0 0 1 0 0 6 とる-て 動詞-助詞 自立-接続助詞 1 1 1 1 1 7 写真-とる 名詞-動詞 一般-自立 1 1 1 1 1 タームのバイグラムを表層形で > (res <- docDF(target, col = 3, type = 1, N = 2, Genkei = 1)) number of extracted terms = 7 now making a data frame. wait a while! TERM POS1 POS2 Row1 Row2 Row3 Row4 Row5 1 くれ-よ 動詞-助詞 非自立-終助詞 1 0 0 0 0 2 て-ください 助詞-動詞 接続助詞-非自立 0 1 0 1 0 3 て-くれ 助詞-動詞 接続助詞-非自立 1 0 0 0 0 4 て-っす 助詞-助動詞 接続助詞-* 0 0 0 0 1 5 て-ね 助詞-助詞 接続助詞-終助詞 0 0 1 0 0 6 とっ-て 動詞-助詞 自立-接続助詞 1 1 1 1 1 7 写真-とっ 名詞-動詞 一般-自立 1 1 1 1 1 各タームを独立に列を取って > (res <- docDF("doc", type=1, N=2,pos = c("名詞","動詞"), Genkei = 1, nDF = 1)) ... number of extracted terms = 5 now making a data frame. wait a while! N1 N2 POS1 POS2 doc1.txt doc2.txt doc3.txt 1 学ん い 動詞-動詞 自立-非自立 0 0 1 2 彼女 数学 名詞-名詞 代名詞-一般 0 1 1 3 数学 学ん 名詞-動詞 一般-自立 0 0 1 4 数学 学生 名詞-名詞 一般-一般 0 1 0 5 私 学生 名詞-名詞 代名詞-一般 1 0 0 共起行列 > (res <- docDF("data/doc", type = 1, co = 1)) file_name = data/doc/doc1.txt opened file_name = data/doc/doc2.txt opened file_name = data/doc/doc3.txt opened number of extracted terms = 13 now making a data frame. wait a while! TERM POS1 POS2 。 いる で です の は ます を 学ぶ 学生 彼女 数学 私 1 。 記号 句点 3 1 1 2 1 3 1 1 1 2 2 2 1 2 いる 動詞 非自立 1 1 1 0 0 1 1 1 1 0 1 1 0 3 で 助詞 接続助詞 1 1 1 0 0 1 1 1 1 0 1 1 0 4 です 助動詞 * 2 0 0 2 1 2 0 0 0 2 1 1 1 5 の 助詞 連体化 1 0 0 1 1 1 0 0 0 1 1 1 0 6 は 助詞 係助詞 3 1 1 2 1 3 1 1 1 2 2 2 1 7 ます 助動詞 * 1 1 1 0 0 1 1 1 1 0 1 1 0 8 を 助詞 格助詞 1 1 1 0 0 1 1 1 1 0 1 1 0 9 学ぶ 動詞 自立 1 1 1 0 0 1 1 1 1 0 1 1 0 10 学生 名詞 一般 2 0 0 2 1 2 0 0 0 2 1 1 1 11 彼女 名詞 代名詞 2 1 1 1 1 2 1 1 1 1 2 2 0 12 数学 名詞 一般 2 1 1 1 1 2 1 1 1 1 2 2 0 13 私 名詞 代名詞 1 0 0 1 0 1 0 0 0 1 0 0 1 長文テキスト集合 > res <- docDF("writers", type = 1, N=1) ## 鴎外と漱石あわせて 8 テキスト.解析に数分かかります > head(res) TERM POS1 POS2 ogai_gan.txt ... 1 ' 名詞 サ変接続 0 ... 2 , 名詞 サ変接続 0 ... 3 あい 名詞 一般 0 ... 4 あか 名詞 一般 0 ... 5 あかるい 形容詞 自立 0 ... 6 あざやか 名詞 一般 0 ... ... - &size(20){&color(blue){RMeCabC()関数};}; : 短文の処理 > library(RMeCab) > kekka <- RMeCabC("すもももももももものうち") > unlist(kekka) # 第二引数 1 を加えると形態素原型を返します. //1.1ヴァージョンより > kekka <- RMeCabC("ご飯を食べた", 1) > unlist(kekka) # 名詞 助詞 動詞 助動詞 # "ご飯" "を" "食べる" "た" # 第二引数なしだと > kekka <- RMeCabC("ご飯を食べた") > unlist(kekka) # 名詞 助詞 動詞 助動詞 # "ご飯" "を" "食べ" "た" # 名詞だけ取り出したければ unlist(kekka) [names(unlist(kekka)) == "名詞"] # ご飯 # R-2.8.0 をMacOSXやLinuxでご利用の場合は # 以下の3行を実行しないと動作しないかもしれません kekka <- unlist(kekka) Encoding(kekka) <- "UTF-8" Encoding(names(kekka)) <- "UTF-8" ///////////////////////////////////////////////////////////// //# 入力する文章が長い場合は第三引数を指定してください.デフォルトでは全角256文字までに限定しています. // # 目安は入力する文章の文字数の2倍です。 // > kekka <- RMeCabC("...を食べた",0, 2056) ///////////////////////////////////////////////////////////// - &size(20){&color(blue){RMeCabText()関数};}; : ファイルの解析結果をそのまま表示 # その他,和布蕪の出力をそのままリスト形式で出力する関数 > RMeCabText("data/sakura.txt") # こんな結果 #[[1]] # [1] "昨日" "名詞" "副詞可能" "*" "*" "*" # [7] "*" "昨日" "キノウ" "キノー" # #[[2]] # [1] "も" "助詞" "係助詞" "*" "*" "*" "*" "も" # [9] "モ" "モ" * &color(green){&size(20){インストール手順};}; [#u795b151] 基本的に [[RMeCab]] と変わりませんので,詳細はそちらを参考にしてください. - Windows の方は,まず''&color(red){[[MeCab:http://mecab.sourceforge.net/]]};''をインストールしてください.[[ここ:http://sourceforge.net/project/showfiles.php?group_id=177856&package_id=205277]] から [[win32バイナリmecab-0.98.exe:http://sourceforge.net/project/showfiles.php?group_id=177856&package_id=205277]] をダウンロードしてインストールします.インストール先は標準設定のまま ''[[C:\Program Files\MeCab]]'' とします.また文字コードは Shit-Jis のままとします. - MeCabインストール後 Windowsの環境設定で MeCab へのパスを通します.最新の注意を払って作業してください. すなわちコントロール・パネルの[システム]アイテムを起動し、 表示される[システムのプロパティ]ダイアログの[詳細設定]タブ (Windows 2000では[詳細]タブ) をクリックし、[システム環境変数] の PATH の先頭に C:\Program Files\MeCab\bin; を追記します.最後のセミコロンを忘れないようにしてください.また,既存の内容を上書きしたり, 消したりしないよう, 最新の注意を払って作業してください. - 次に ''&color(blue){R2MeCab_***.zip};'' をRにインストールします.*** の部分はバージョン番号です.Rのメニューから''[パッケージ]''→''[ローカルにあるzipファイルからのパッケージのインストール]''を選んで,ダウンロードした ''&color(blue){R2MeCab_***.zip};''ファイルを選んでインストールします.[win-libraryを作成したいのですか] と聞いてきた時は OK を押してください(この際,R はユーザーフォルダを作成します). * ダウンロード [#r43c8ffc] - Windows [[R2MeCab_0.14 for R-2.11.0 Windows 32 bit ここ:http://groups.google.co.jp/group/ishidamotohiro]]からお使いのプラットフォームにあったバージョンをダウンロードしてください &ref(R2MeCab_0.13.zip); for R-2.10.0 :Windows &ref(R2MeCab_0.12.zip); for R-2.10.0 :Windows &ref(R2MeCab_0.11.zip); for R-2.9.2 :Windows &ref(R2MeCab_0.10.zip); for R-2.9.1 : Windows &ref(R2MeCab_0.07.zip); for R-2.8.1 -- 試用データ &ref(SoftArchive/data.zip); - Macintosh [[R2MeCab_0.14 for R-2.11.0 on Mac ここ:http://groups.google.co.jp/group/ishidamotohiro]]からお使いのプラットフォームにあったバージョンをダウンロードしてください &ref(R2MeCab_0.13.tgz); for R-2.10.0 : &ref(R2MeCab_0.12.tgz); for R-2.10.0 : &ref(R2MeCab_0.11.tgz); for R-2.9.2 : &ref(R2MeCab_0.10.tgz); for R-2.9.1 : &ref(R2MeCab_0.07.tgz); for R-2.8.1 - Linux [[R2MeCab_0.14 for R-2.11.0 on Linux ここ:http://groups.google.co.jp/group/ishidamotohiro]]からお使いのプラットフォームにあったバージョンをダウンロードしてください &ref(R2MeCab_0.13.tar.gz); for R-2.10.0 : &ref(R2MeCab_0.12.tar.gz); for R-2.10.0 : &ref(R2MeCab_0.11.tar.gz); for R-2.9.2 : &ref(R2MeCab_0.10.tar.gz); for R-2.9.1 : &ref(R2MeCab_0.07.tar.gz); for R-2.8.1 -- 試用データ &ref(SoftArchive/data.tar.gz); * R の参考書 [#kf4f6471] //&htmlinsert(amazontext,asin=,text=); -&htmlinsert(amazontext,asin=4431712186,text=U・リゲス著『Rの基礎とプログラミング技法』シュプリンガー社); 中級者になるために. -&htmlinsert(amazontext,asin=4431713123,text=B・エヴェリット著『RとS-PLUSによる多変量解析』シュプリンガー社); 解析をばりばり行うために. -&htmlinsert(amazontext,asin=4431100474,text=P・スペクター著『Rデータ自由自在』シュプリンガー社); データをばりばり処理するために. -&htmlinsert(amazontext,asin=4274067572,text=青木繁伸『Rによる統計解析』オーム社); R のプログラミングテクニックを学ぶために. - &htmlinsert(amazontext,asin=4627096011,text=金明哲『Rによるデータサイエンス』森北書店); R での解析手法に慣れるために. - &htmlinsert(amazontext,asin=4777511847,text=舟尾暢男『データ解析環境「R」』工学社); とにかく R を使ってみたい. -&htmlinsert(amazontext,asin=4894717573,text=中澤港『Rによる統計解析の基礎』ピアソンエデュケーション); 統計学と R を同時に学びたい. * お問い合わせ [#n854cdd7] ishida-m(at_mark)ias.tokushima-u.ac.jp にお願いします.