ton7i9i/mecab-python3を使ってdocker上でmecabのコンテナーを作りました。
https://hub.docker.com/r/ton7i9i/mecab-python3/
mecabを起動して、形態素解析を行いました。
「空の境界」で入力すると:
空 名詞,一般,,,,,空,ソラ,ソラ
の 助詞,連体化,,,,,の,ノ,ノ
境界 名詞,一般,,,,,境界,キョウカイ,キョーカイ
になりました。
Wikipedia見出し語とはてなキーワード一覧をユーザ辞書として追加すれば問題を解決することができます。
まずは最新版のWikipedia見出し語とはてなキーワード一覧を取得します。
はてなキーワードキーワード一覧
$ curl -L http://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv | iconv -f euc-jp -t utf-8 > keywordlist_furigana.csv
Wikipedia見出し語
$ curl -L http://dumps.
wikimedia.org/jawiki/latest/jawiki-latest-all-titles-in-ns0.gz | gunzip > jawiki-latest-all-titles-in-ns0
mecabにユーザ辞書として追加する場合、指定のフォーマットのCSVファイルを作成する必要がありますので、csvファイルを作ります。
require 'csv'
#Wikipedia見出し語とはてなキーワード一覧のファイルを指定
original_data = {
wikipedia: 'jawiki-latest-all-titles-in-ns0', hatena: 'keywordlist_furigana.csv'}
#custom.csvを作成し,上記のファイルを順番に読み込む
CSV.open("custom.csv", 'w') do |csv|
original_data.each do |type, filename|
next unless File.file? filename
open(filename).each do |title|
title.strip!
# いらないタイトル名を省く
next if title =~ %r(^[+-.$()?*/&%!"'_,]+)
next if title =~ /^[-.0-9]+$/
next if title =~ /曖昧さ回避/
next if title =~ /_\(/
next if title =~ /^PJ:/
next if title =~ /の登場人物/
next if title =~ /一覧/
# スコアの決定とCSVの作成。ここでは全て名詞となり、最後にwikipediaかhatenaをつけてい
# また,1文字以下のものは省いている
title_length = title.length
if title_length > 3
score = [-36000.0, -400 * (title_length ** 1.5)].max.to_i
csv << [title, nil, nil, score, '名詞', '一般', '*', '*', '*', '*', title, '*', '*', type]
end
end
end
end
スクリプトを実行すればCSVファイルが作成されます。
$ ruby sample.rb
その前に、
$ pip install ruby
を忘れないてください。
最後に、コンパイルをすれば辞書を作成することができます。
$ /usr/lib/mecab/mecab-dict-index -d /usr/share/mecab/dic/ipadic -u wiki.dic -f utf-8 -t utf-8 custom.csv
- オプションの意味
- -d dir: システム辞書があるディレクトリ
- -u file: fileというユーザファイルを作成
- -f charset: csvの文字コード
- -t charset: バイナリ辞書の文字コード
ここで問題を発生しました、多くのサイトを調べるとオプションの意味が書いてますが、システム辞書とユーザ辞書のディレクトリの場所がわからない。
そこで、コマンドラインでシステム辞書のディレクトリを探すために
$ find / -name "mecab-dict-index"
を入力すれば mecab-dict-index のある場所を特定することができます。←最初はディレクトリを探すコマンドが知らなかった (T . T)
同じく
$ find / -name "dicrc"
を入力すればユーザー辞書のディレクトリを特定することができます。
$ mecab -u wiki.dic
を入力し、mecabを起動して「空の境界」を入力すると
空の境界 名詞,一般,,,,,空の境界,,,wikipedia
になりました。成功!!