★データ解析備忘録★

ゆる〜い技術メモ

(Macの)Rでipadic-neologdを使う

前置き

7月のTokyo.Rにて、こんな発表をしました。

RとMeCabと正規表現

MeCabでの顔文字とかの誤解析を前処理ではなく「後処理」で整理する、という内容だったのですが、こんな指摘がありました。

実はipadic-neologdは以前のバイト先で使っていたので知っていたのですが、今回の発表ではすっかり忘れていたのでした(笑)。

ipadic-neologdとは

昨年の3月くらいに登場した、固有名詞や最近の言葉にに強いMeCab用の辞書です。

設定とか

基本的にGitHubの通りにやればできるのですが、Rで使うやり方が分かりづらいので設定を最初からメモ。 環境は以下。

必須空きメモリは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の発表及び以前の記事をご覧ください。

y-mattu.hatenablog.com