トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

BugTrack-R備忘録/18

R備忘録 /状態空間モデリング/donlp2/その他のメモ

R備忘録 - 記事一覧

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
# -*- 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】くらいがいいのかもしれない

コメント