今回は、はてなキーワードとニコニコ大百科を利用して、
棒読みちゃんの読み上げ可能な単語を増やす。
MeCabや棒読みちゃんについては、ここ→棒読みちゃんかしこさup計画
まず、MeCabとRubyをインストールしておく。
コマンドプロンプトで「ruby -v」と打ってバージョン情報が表示されればOK。
(私の環境では「ruby 1.9.3p429 (2013-05-15) [i386-mingw32]」と出た。)
次に、はてなキーワード一覧ファイルをダウンロードしておく。
上記リンク先にある、keywordlist_furigana.csvを保存しておく。
改行コードをCR/LFに変換し、文字コードもShift-JISに変換して保存する。(重要)
さらに、ニコニコ大百科IME辞書もダウンロードしておく。
ここからnicoime.zipをダウンロードし、解凍しておく。
解凍したnicoime_msime.txtを開き、冒頭の!で始まっている行を削除する。
次に「(タブ記号)固有名詞」を全て削除する。
「(単語の読み)(タブ記号)(単語)」の行だけが存在するようになる。
このファイルを、Shift-JISで保存する。(重要)
はてなキーワード一覧ファイルからMeCabの辞書を作成する場合、
記事冒頭のリンク先の記事内のRubyスクリプトのままだとRubyのバージョンによっては
エラーが発生する。
以下のように改変した。
#! ruby -E shift_jis:shift_jis# -*- coding: shift_jis -*-#require "jcode" # String クラスの tr メソッドで日本語を使用可能にする。#$KCODE="s" ###csvファイルの文字コードがShift-JISなので"s"にdef translator(from, to)lambda {|str| str.tr(from, to) }endupto = translator("a-z", "A-Z")downto = translator("A-Z", "a-z")hira2kata = translator("ぁ-ん", "ァ-ン")kata2hira = translator("ァ-ン", "ぁ-ん")open($*[0]).each do |line|title_list = line.split("\t")next if title_list.length < 2title = title_list[1]title.strip!furigana = title_list[0]furigana.strip!katakana = hira2kata.call(furigana)###ふりがなのない単語を新規登録すると###その単語を棒読みちゃんに読ませた時にエラーが出るnext if furigana.length == 0# 登録したくないものをスキップnext if title =~ /[\+\-\.\$\(\)\?\*!"'_,]+/next if title =~ /^[0-9\-]+$/next if title =~ /^h?ttp/next if title =~ /[0-9]{4}(\/|\-)[0-9]{2}(\/|\-)[0-9]{2}/next if title =~ /[0-9]{4}年/next if title =~ /[0-9]{1,2}月[0-9]{1,2}日/# 制御文字、HTML特殊文字が入ったものは外すnext if title =~ /[[:cntrl:]]/next if title =~ /\&\#/# タイトルの長さlen = title.length ###辞書ファイルがShift-JISなので(略# スコアのロジックはネットで見つけたものそのまま使用#score = [-36000.0 ,-400 *(len**1.5)].max.to_iscore = [-32768.0, (6000 - 200 *(len**1.3))].max.to_i# 3文字より大きい場合だけif len > 3print "#{title},0,0,#{score},名詞,固有名詞,*,*,*,*,#{title},#{katakana},#{furigana},はてなキーワード,\n"endend
以上のスクリプトを、Shift-JISで保存する。
最後の方の「はてなキーワード」は適宜「ニコニコ大百科」に書き換える。
スコアのロジックは、
はてなキーワードを使ってigo-ruby(MeCab)用の辞書をナウい感じにする を参考にした。
最後に、上記のRubyのスクリプトを実行する前に、
コマンドプロンプトで「set LANG=ja_JP.SJIS」と入力しておく。
あとは、
- ruby makedic-hatena.rb nicoime_msime.txt > nico.csv
- ruby makedic-hatena.rb keywordlist_furigana.csv > hatena.csv
- "c:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe" -f SHIFT-JIS -t SHIFT-JIS -d "c:\Program Files (x86)\MeCab\dic\ipadic" -u hatena.dic hatena.csv
- "c:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe" -f SHIFT-JIS -t SHIFT-JIS -d "c:\Program Files (x86)\MeCab\dic\ipadic" -u nico.dic nico.csv
と実行すれば無事にMeCabの辞書が作成できる・・はず。
出来上がったnico.dicとhatena.dicを、C:\Program Files (x86)\MeCab\dic\user に放り込む。
C:\Program Files (x86)\MeCab\etc\mecabrcをテキストエディタで開き、userdic = "C:\Program Files (x86)\MeCab\dic\user\hatena.dic","C:\Program Files (x86)\MeCab\dic\user\nico.dic"
を追加しておく。
(このページによると、ユーザ辞書はカンマ区切りで複数追加が可能ということだった。)
あとは、棒読みちゃんの設定画面で、
システム→「漢字→かな変換」と進み、漢字→かな変換モードを「MeCab」に設定し、
棒読みちゃんを再起動させる。
以下のように単語が分解されなくなれば成功。
(「不正は無かった」はニコニコ大百科のみに登録された単語、
「エリス・クリスティ」ははてなキーワードのみに登録された単語。)
0 件のコメント:
コメントを投稿