BugTrack-R備忘録/18
RMeCabとか
- 投稿者: みゅ
- カテゴリ: なし
- 優先度: 普通
- 状態: 完了
- 日時: 2008年12月31日 09時26分19秒
内容
RMeCabの情報とかインストールとか
リンク
インストール
- 家のパソコンのVMWare上で動いてるLinuxで
- LinuxはGentoo Linux
- まず「MeCab」のインストール.GentooのportageにMeCabがあった!
emerge -v app-text/mecab
- これでMeCabと辞書をインストールしてくれる.らくちん.
- 次に「RMeCab」のインストール.石田さんのところからLinux版のRMeCabをダウンロードしてくる
- Rへのインストールは
R CMD INSTALL RMeCab_0.67.tar.gz
- これでOK.なんとらくちん
動作確認
- おっと注意点.文字コードはutf-8じゃないと、なんかうまくいかない.MeCabがutf-8の文字コードで解析してるんでしょう.MeCabのサイト読めばわかるんでしょうけど、そのうち読みます(汗.
- なのでteratermでSSHでGentoo Linuxにつないでますから、teratermの文字コードをutf-8にセット
- あと、Rを起動する環境で「.bash_profile」とかに、以下のように書いておきましょう.
export LANG=ja_JP.UTF-8
- あるいはRを起動するときに、教えてあげるとか.
LANG=ja_JP.UTF-8 R
MeCabの動作確認
$ echo "すもも" | mecab すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ EOS $
- うまくいってます
$ echo "すももも桃も桃のうち" | mecab すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ も 助詞,係助詞,*,*,*,*,も,モ,モ 桃 名詞,一般,*,*,*,*,桃,モモ,モモ も 助詞,係助詞,*,*,*,*,も,モ,モ 桃 名詞,一般,*,*,*,*,桃,モモ,モモ の 助詞,連体化,*,*,*,*,の,ノ,ノ うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ EOS $
RMeCabの動作確認
> library(RMeCab) > RMeCabC("すももも桃も桃のうち") [[1]] 名詞 "すもも" [[2]] 助詞 "も" [[3]] 名詞 "桃" [[4]] 助詞 "も" [[5]] 名詞 "桃" [[6]] 助詞 "の" [[7]] 名詞 "うち"
- いい感じ
> RMeCabC("すもももももももものうち") [[1]] 名詞 "すもも" [[2]] 助詞 "も" [[3]] 名詞 "もも" [[4]] 助詞 "も" [[5]] 名詞 "もも" [[6]] 助詞 "の" [[7]] 名詞 "うち"
MeCab
- 辞書登録
/usr/libexec/mecab/mecab-dict-index -d /usr/lib/mecab/dic/ipadic -u zzz.dic -f utf-8 -t utf-8 zzz.csv /usr/libexec/mecab/mecab-dict-index -d /usr/lib/mecab/dic/ipadic -u qr.dic -f euc-jp -t utf-8 stockName.csv
- はてな
wget http://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv -O hatena.txt nkf -Ew hatena.txt | python createDict.py > hatenakeyword.csv /usr/libexec/mecab/mecab-dict-index -d /usr/lib/mecab/dic/ipadic -u hatena.dic -f utf-8 -t utf-8 hatenakeyword.csv
- MeCabの辞書にはてなキーワードを追加しよう
- createDict.py
# -*- encoding: utf-8 -*- import sys import re #数字四桁が入ったキーワードは役に立ちませんので検出して飛ばします。 year = re.compile("[0-9]{4}") #驚くべきことにはてなキーワードには%00というキーワードがありますが、 #これがcsvとして提供されているダンプではヌル文字になっているのでシステム制御文字を非許可にします。 ng = [chr(i) for i in range(0,32)] def main(): for x in sys.stdin: if re.search(year,x): continue #日付スキップ k = x.split("\t")[1].strip() if len(k) < 2: continue #一文字スキップ for word in ng: if word in k: continue #システム制御文字スキップ k = k.lower() #MeCabはケースセンシティブなので小文字に統一して辞書作成 cost = int(max(-36000, -400 * len(k)**1.5)) #コストについては後述 print "%s,0,0,%s,名詞,一般,*,*,*,*,%s,*,*,はてなキーワード," % (k,cost,k) #0については後述 if __name__ == '__main__': main()
- 左文脈ID、右文脈IDは「-1」ではエラーになるように 仕様が変わった模様?「0」でOKかも?
その他
- ユーザー辞書登録で、なんだろう、文字コード関連でうまくいかないときがある
- 「・」が入るときのコストは【-30000】くらいがいいのかもしれない
R備忘録 /状態空間モデリング/donlp2/その他のメモ