LoginSignup
55
51

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-04-19

概要

国立情報学研究所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

55
51
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
55
51