• R/O
  • SSH

タグ
未設定

よく使われているワード(クリックで追加)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

ファイル情報

Rev. f636e4c6930f06d2eeedeb04b032eb13260ce488
サイズ 2,959 バイト
日時 2021-09-23 01:16:28
作者 Haruka Masaki
ログメッセージ

Update to 20210922

内容

#! /usr/bin/env ruby
# coding: utf-8

require 'nkf'


# ==============================================================================
# calculate_costs
# ==============================================================================

def calculate_costs
	# jawikiの見出し語ヒット数を読み込む
	# jawikititles	0	0	34	中居正広
	file = File.new("../jawiki-titles/jawiki-latest-all-titles-in-ns0.hits", "r")
		lines = file.read.split("\n")
	file.close

	# 追加辞書を加える
	# なかいまさひろ	1916	1916	6477	中居正広
	file = File.new($filename, "r")
		lines = lines + file.read.split("\n")
	file.close

	# jawikiヒット数の下に追加辞書が来るよう並べ替える
	# 中居正広	jawikititles	0	0	34
	# 中居正広	なかいまさひろ	1847	1847	5900
	# 中居正広	なかいまさひろ	1917	1917	6477
	lines.length.times do |i|
		s = lines[i].split("	")
		lines[i] = s[-1] + "	" + s[0..3].join("	")
	end

	lines = lines.sort
	jawiki = []

	lines.length.times do |i|
		s = lines[i].split("	")
		s[4] = s[4].to_i

		# jawikiの見出し語を取得
		# 中居正広	jawikititles	0	0	34
		if s[1] == "jawikititles"
			jawiki = s
			# jawikiの見出し語は後でまとめて削除
			lines[i] = nil

			# jawikiのヒット数が大きいときは抑制
			if jawiki[4] > 30
				jawiki[4] = 30
			end

			next
		end

		# jawikiの見出し語にヒットしない英数字のみの表記は除外
		if s[0] != jawiki[0] && s[0].length == s[0].bytesize
			lines[i] = nil
			next
		end

		# jawikiの見出し語にヒットしない表記はコスト値のベースを8000にする
		# コスト値 = 8000 + (元のコスト値/10)
		if s[0] != jawiki[0]
			s[4] = (8000 + (s[4] / 10)).to_s
			lines[i] = s.join("	")
			next
		end

		# jawikiの見出し語に1回ヒットする表記はコスト値のベースを7000にする
		# 中居正広	なかいまさひろ	1917	1917	6477
		# コスト値 = 7000 + (元のコスト値/10)
		if jawiki[4] == 1
			s[4] = (7000 + (s[4] / 10)).to_s
			lines[i] = s.join("	")
			next
		end

		# jawikiの見出し語に2回以上ヒットする表記はコスト値のベースを6000にする
		# コスト値 = 6000 + (元のコスト値/10) - (ヒット数*30)
		s[4] = (6000 + (s[4] / 10) - (jawiki[4] * 30)).to_s
		lines[i] = s.join("	")
	end

	lines = lines.compact

	# Mozc形式の並びに戻す
	lines.length.times do |i|
		s = lines[i].split("	")
		lines[i] = s[1..-1].join("	") + "	" + s[0]
	end

	lines = lines.sort

	dicfile = File.new($dicname, "w")
		dicfile.puts lines
	dicfile.close
end


# ==============================================================================
# main
# ==============================================================================

targetfiles = ARGV

if ARGV == []
	puts "Usage: ruby script.rb [FILE]"
	exit
end

targetfiles.length.times do |i|
	$filename = targetfiles[i]
	$dicname = $filename + ".costs"

	calculate_costs
end