R2MeCab のバックアップ差分(No.18) - アールメカブ

アールメカブ


R2MeCab のバックアップ差分(No.18)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
[[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){2009年 8月25日 RMeCab_0.84 (R-2.9.2対応): あわせてdocNgram2(), docNgramDF()関数にバグがあったので修正.};
- &color(green){2009年 8月24日 RMeCab_0.83:  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月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]] と変わりませんので,詳細はそちらを参考にしてください.
[[MeCab:http://mecab.sourceforge.net/]]をインストールします.Macintosh および Linux の場合は[[ここを参考にしてください>和布蕪他インストール]].
- Windows の方は,まず''&color(red){[[MeCab:http://mecab.sourceforge.net/]]};''をインストールしてください.[[ここ:http://sourceforge.net/project/showfiles.php?group_id=177856&package_id=205277]] から [[win32バイナリmecab-0.97.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 &ref(R2MeCab_0.10.zip); for R-2.9.1 : Windows &ref(R2MeCab_0.07.zip);  for R-2.8.1
- 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 &ref(R2MeCab_0.10.tgz);  for R-2.9.1 : &ref(R2MeCab_0.07.tgz); for R-2.8.1
- Linux &ref(R2MeCab_0.10.tar.gz);  for R-2.9.1 :&ref(R2MeCab_0.07.tar.gz); for R-2.8.1
- Macintosh &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 &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
にお願いします.