91 lines
2.9 KiB
Ruby
91 lines
2.9 KiB
Ruby
#! /usr/bin/env ruby
|
|
require 'csv'
|
|
require 'nkf'
|
|
|
|
ID_DEF = {}
|
|
ALREADY = {}
|
|
|
|
unless ENV["MOZC_ID_FILE"]
|
|
abort "Mozc ID Definition File is not given."
|
|
end
|
|
|
|
# Load Mozc ID definition.
|
|
File.open(ENV["MOZC_ID_FILE"], "r") do |f|
|
|
f.each do |line|
|
|
id, expr = line.chomp.split(" ", 2)
|
|
ID_DEF[expr] = id
|
|
end
|
|
end
|
|
|
|
# Read CSV each line from file.
|
|
CSV.foreach("src/seed/user-dict-seed.csv") do |row|
|
|
# 表層形,左文脈ID,右文脈ID,コスト,品詞1,品詞2,品詞3,品詞4,品詞5,品詞6,原形,読み,発音
|
|
# #24時間以内に240RT来なければ俺の嫁,1288,1288,3942,名詞,固有名詞,一般,*,*,*,#24時間以内に240RT来なければ俺の嫁,ニジュウヨジカンイナイニニヒャクヨンジュウアールティーコナケレバオレノヨメ,ニジュウヨジカンイナイニニヒャクヨンジュウアールティーコナケレバオレノヨメ
|
|
surface, lcxid, rcxid, cost, cls1, cls2, cls3, cls4, cls5, cls6, base, kana, pron = *row
|
|
|
|
yomi = NKF.nkf("--hiragana -w -W", kana).tr("ゐゑ", "いえ")
|
|
|
|
# 読みがひらがな以外を含む場合はスキップ => 検証
|
|
# 名詞以外の場合はスキップ => しない
|
|
|
|
# 「地域」をスキップ。地名は郵便番号ファイルから生成する => 踏襲する
|
|
next if cls3 == "地域"
|
|
|
|
# 「名」をスキップ => しない
|
|
|
|
clsexpr = [cls1, cls2, cls3, cls4, cls5, cls6].join(",")
|
|
cost = cost.to_i
|
|
|
|
##### List class (develop feature) #####
|
|
# puts clsexpr
|
|
# next
|
|
|
|
# コスト計算の処理はMozc-UTに倣っている
|
|
mozc_cost = case
|
|
when cost < 0
|
|
# コストがマイナスの場合は8000にする
|
|
8000
|
|
when cost > 10000
|
|
# コストが10000を超える場合は10000にする
|
|
10000
|
|
else
|
|
# コストを 6000 < cost < 7000 に調整する
|
|
6000 + (cost / 10)
|
|
end
|
|
|
|
# idは探索を行う。
|
|
# 既知のNeologdのクラスを変換
|
|
# 未知のものは無視する
|
|
id = case clsexpr
|
|
when "記号,一般,*,*,*,*"
|
|
ID_DEF["記号,一般,*,*,*,*,*"]
|
|
when "名詞,固有名詞,人名,一般,*,*"
|
|
ID_DEF["名詞,固有名詞,人名,一般,*,*,*"]
|
|
when "名詞,固有名詞,一般,*,*,*", "名詞,固有名詞,一般,*,*,"
|
|
ID_DEF["名詞,固有名詞,一般,*,*,*,*"]
|
|
when "名詞,固有名詞,組織,*,*,*"
|
|
ID_DEF["名詞,固有名詞,組織,*,*,*,*"]
|
|
when "名詞,一般,*,*,*,*"
|
|
ID_DEF["名詞,一般,*,*,*,*,*"]
|
|
when "名詞,サ変接続,*,*,*,*"
|
|
ID_DEF["名詞,サ変接続,*,*,*,*,*"]
|
|
when "名詞,固有名詞,人名,名,*,*"
|
|
ID_DEF["名詞,固有名詞,人名,名,*,*,*"]
|
|
when "名詞,固有名詞,人名,姓,*,*"
|
|
ID_DEF["名詞,固有名詞,人名,姓,*,*,*"]
|
|
end
|
|
|
|
#raise unless id # DEVELOPMENT MODE
|
|
next unless id
|
|
|
|
line_expr = [yomi, id, id, mozc_cost, base].join(" ")
|
|
generic_expr = [yomi, id, base].join(" ")
|
|
if ALREADY[generic_expr]
|
|
next
|
|
else
|
|
ALREADY[generic_expr] = true
|
|
end
|
|
|
|
puts line_expr
|
|
end
|