(Macの)Rでipadic-neologdを使う
前置き
7月のTokyo.Rにて、こんな発表をしました。
MeCabでの顔文字とかの誤解析を前処理ではなく「後処理」で整理する、という内容だったのですが、こんな指摘がありました。
顔文字や機種依存文字を含む文書を形態素解析したいなら、mecab-ipadic-NEologd を試してみるといいかもしれません。 https://t.co/XWBnpREJUy #TokyoR
— Nakatani Shuyo (@shuyo) July 30, 2016
実はipadic-neologdは以前のバイト先で使っていたので知っていたのですが、今回の発表ではすっかり忘れていたのでした(笑)。
ipadic-neologdとは
昨年の3月くらいに登場した、固有名詞や最近の言葉にに強いMeCab用の辞書です。
設定とか
基本的にGitHubの通りにやればできるのですが、Rで使うやり方が分かりづらいので設定を最初からメモ。 環境は以下。
- Mac OS X El Capitan
- メモリ16GB
必須空きメモリは1.5GBだそう。
インストール
ターミナルでクローンします。
git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd ./bin/install-mecab-ipadic-neologd -n
インストールはこれで終わりです。
Rで使う
Rで使うにはもうワンステッップ必要で、
./bin/install-mecab-ipadic-neologd --create_user_dic
とすれば辞書が作成されます。
何も設定しなければ./build/mecab-ipadic-2.7.0-20070801-neologd-YYYYMMDD/mecab-user-dict-seed.YYYYMMDD.csv.dic
に辞書が作られるので、これをRMeCab関数で辞書指定します。
YYYYMMDDはインストール時に出てくるのでそれを指定してやればいいのですが、分からなければターミナルとかで検索すれば普通に出てきます。
> library(RMeCab) > RMeCabC("すもももももももものうち") #[[1]] # 名詞 #"すもも" # #[[2]] #助詞 #"も" #[[3]] #名詞 #"もも" #[[4]] #助詞 #"も" #[[5]] # 名詞 #"もも" #[[6]] #助詞 #"の" #[[7]] # 名詞 #"うち" > RMeCabC("すもももももももものうち", dic = "//Users/y__mattu/mecab-ipadic-neologd/build/mecab-ipadic-2.7.0-20070801-neologd-20160808/mecab-user-dict-seed.20160808.csv.dic") #[[1]] # 名詞 #"すもももももももものうち"
結果がこのように変わっています。
顔文字に効くのか?
話を冒頭に戻して、顔文字の解析に使えるのか?
RMeCabC("☆*:.。. o(≧▽≦)o .。.:*☆", dic = "//Users/y__mattu/mecab-ipadic-neologd/build/mecab-ipadic-2.7.0-20070801-neologd-20160808/mecab-user-dict-seed.20160808.csv.dic") #[[1]] # 記号 #"☆*:.。. o(≧▽≦)o .。.:*☆"
ちゃんと記号と判定してくれました!
しかし
words <- c("ふう。お腹いっぱい( ´•౪•`)", "暇だな(☝ ՞ਊ ՞)☝", "試験頑張るぞ\\\\ ٩( ‘ω’ )و ////") dat <- data.frame(words) res1 <- docDF(target = dat, column = 1, type = 1, dic = "//Users/y__mattu/mecab-ipadic-neologd/build/mecab-ipadic-2.7.0-20070801-neologd-20160808/mecab-user-dict-seed.20160808.csv.dic")
のようなデータに対しては
# TERM POS1 POS2 Row1 Row2 Row3 #1 ( 名詞 サ変接続 1 0 1 #2 (☝ 名詞 サ変接続 0 1 0 #3 ) 名詞 サ変接続 0 0 1 #4 )☝ 名詞 サ変接続 0 1 0 #5 //// 名詞 サ変接続 0 0 1 #6 ´• 名詞 サ変接続 1 0 0 #7 ω 名詞 固有名詞 0 0 1 #8 ՞ 記号 一般 0 1 0 #9 ՞ਊ 記号 一般 0 1 0 #10 و 記号 一般 0 0 1 #11 ٩ 記号 一般 0 0 1 #12 ౪ 記号 一般 1 0 0 #13 ‘ 記号 括弧開 0 0 1 #14 ’ 記号 括弧閉 0 0 1 #15 •`) 名詞 サ変接続 1 0 0 #16 。 記号 句点 1 0 0 #17 いっぱい 名詞 接尾 1 0 0 #18 お腹 名詞 一般 1 0 0 #19 ぞ 助詞 終助詞 0 0 1 #20 だ 助動詞 * 0 1 0 #21 な 助詞 終助詞 0 1 0 #22 ふう 動詞 自立 1 0 0 #23 暇 名詞 一般 0 1 0 #24 試験 名詞 サ変接続 0 0 1 #25 頑張る 動詞 自立 0 0 1 #26 \ 記号 一般 0 0 1 #27 \\\ 名詞 サ変接続 0 0 1
と、思うような結果になりません。 やっぱり後処理は大事ですね。
このような形の後処理はTokyo.Rの発表及び以前の記事をご覧ください。