ニコニコ大百科データからMeCab辞書を生成する

  • 51
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

概要

国立情報学研究所Webサイトにある「ニコニコ大百科データ」(by 有限会社未来検索ブラジル)から、
MeCabの辞書を生成・適用する。
研究目的でテキストマイニングをするならこの方法もありかもしれない。
 ※実行環境はLinuxMint13(Ubuntu12.04 LTS)です。

方法

01.ニコニコ大百科データを取得する。

http://www.nii.ac.jp/cscenter/idr/nico/nicopedia-apply.html
 ※head.zipをダウンロード・解凍する。

02.解凍後のheadフォルダと同じ階層に下記Pythonコードを配置する。

nc2mecab.py
# -*- encoding: utf-8 -*-

import os
import csv
import re

def main():
  #入力フォルダ名
  pth = 'head'
  #出力ファイル名
  wtnme = 'ncnc.csv'
  #単語整形用の削除文字列パターン
  rmvptn = re.compile(r'(^\d[1,2]月\d[1,2]日$)|((\(|().+(\)|))$)') #月日タグとタグ後ろのジャンル名は削除

  with open(wtnme,'wb') as wtfh:
    wt = csv.writer(wtfh)
    fnmes = os.listdir(pth)
    for fnme in fnmes:
      with open(os.path.join(pth,fnme),'rb') as rdfh:
        rd = csv.reader(rdfh)
        for row in rd:
          if row[3]=='a':
            wrd = rmvptn.sub('',row[1]).lower()
            if(0 < len(wrd)):
              wt.writerow(
                [wrd,'0','0',int(max(-32768.0, (6000 - 200 *(len(wrd)**1.3)))),'名詞','一般','*','*','*','*',wrd,row[2],row[2],'ニコニコ大百科']
              )

if __name__ == '__main__':
  main()

※出力する単語に重複がある。データ整形の精度も甘い。
※コスト計算方法はこちらのサイトを参考にさせてもらった。

03.Pythonコードを実行する。

python nc2mecab.py

※ncnc.csvが同階層に出力される。

04.MeCabの辞書を生成・適用する。

出力したCSVを使い、MeCab: 単語の追加方法の「ユーザ辞書への追加」を実行した。
ただし、辞書生成コマンドは下記のようにした。

/usr/local/libexec/mecab/mecab-dict-index -d/usr/local/lib/mecab/dic/ipadic -u ncnc.dic -f utf-8 -t utf-8 ncnc.csv

結果

vocaloidとラブライブ!はニコ厨の嗜み。

vocaloid 名詞,一般,,,,,vocaloid,ボーカロイド,ボーカロイド,ニコニコ大百科
と フィラー,,,,,,と,ト,ト
ラブライブ! 名詞,一般,
,,,,ラブライブ!,ラブライブ,ラブライブ,ニコニコ大百科
は 助詞,係助詞,
,,,,は,ハ,ワ
ニコ厨 名詞,一般,
,,,,ニコ厨,ニコチュウ,ニコチュウ,ニコニコ大百科
の 助詞,連体化,
,,,,の,ノ,ノ
嗜み 名詞,一般,
,,,,嗜み,タシナミ,タシナミ
。 記号,句点,
,,,*,。,。,。
EOS