Created
April 10, 2010 16:27
-
-
Save tily/362137 to your computer and use it in GitHub Desktop.
convert text to japanese cafe name
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
マイクロソフト | |
COFFEE「舞黒想風人」 | |
インターネット | |
歌声喫茶「伊多音都」 | |
さむい | |
談話室「再夢伊」 | |
はらへった | |
軽食喫茶「葉来変多」 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
require 'MeCab' | |
require 'yaml' | |
# TODO: 「ー」を母音に変換する | |
# TODO: 同じ入力には同じ prefix を出す | |
class Cafe | |
def initialize(str) | |
@str = str | |
end | |
def load_config(file) | |
config = YAML.load_file(file) | |
@prefix = config['prefix'] | |
@map = config['map'] | |
end | |
def prefix | |
@prefix[rand(@prefix.length)] | |
end | |
def name | |
name = @str.match(/^[ァ-ヶー]+$/u) ? @str : to_kana_str(@str) | |
name = convert_with_multi_char_map(name) | |
name = prepare_for_one_char_map(name) | |
convert_with_one_char_map(name) | |
end | |
private | |
def to_kana_str(str) | |
mecab = MeCab::Tagger.new | |
node = mecab.parseToNode(str) | |
kana_str = '' | |
while(node = node.next) | |
kana = node.feature.split(',')[8] | |
kana_str += kana if kana != '*' | |
end | |
kana_str | |
end | |
def convert_with_multi_char_map(str) | |
multi_char_map.each do |k, v| | |
str.gsub!(/#{k}/, v) | |
end | |
str | |
end | |
def multi_char_map | |
@map.reject {|k,v| k.length < 6 } | |
end | |
def prepare_for_one_char_map(kana_str) | |
kana_str = kana_str.gsub(/ヲ/u, 'オ') | |
kana_str = kana_str.gsub(/[ンァィゥェォャュョッー]/u, '') | |
end | |
def convert_with_one_char_map(kana) | |
kana.split(//u).map {|k| kana_to_kanji(k) }.join('') | |
end | |
def kana_to_kanji(char) | |
return char if(@map[char] == nil) | |
if(@map[char].class == Array) | |
@map[char][rand(@map[char].length)] | |
else | |
@map[char] | |
end | |
end | |
end | |
cafe = Cafe.new(STDIN.read.chomp) | |
cafe.load_config('kissa.yml') | |
puts "#{cafe.prefix}「#{cafe.name}」" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
prefix: | |
- 軽食喫茶 | |
- 歌声喫茶 | |
- 喫茶 | |
- 珈琲 | |
- クラシック喫茶 | |
- 談話室 | |
- 名曲喫茶 | |
- 純喫茶 | |
- COFFEE | |
map: | |
ア : 亜 | |
イ : 伊 | |
ウ : 宇 | |
エ : | |
- 絵 | |
- 英 | |
オ : 男 | |
カ : | |
- 花 | |
- 歌 | |
キ : 樹 | |
ク : | |
- 久 | |
- 区 | |
ケ : 気 | |
コ : 古 | |
サ : 再 | |
シ : 詩 | |
ス : 巣 | |
セ : 星 | |
ソ : 想 | |
タ : 多 | |
チ : 小 | |
ツ : 都 | |
テ : | |
- 手 | |
- 庭 | |
ト : | |
- 都 | |
- 人 | |
ナ : 南 | |
ニ : 人 | |
ヌ : 奴 | |
ネ : 音 | |
ノ : 野 | |
ハ : 葉 | |
ヒ : 陽 | |
フ : 風 | |
ヘ : 変 | |
ホ : 歩 | |
マ : 魔 | |
ミ : 美 | |
ム : 夢 | |
メ : | |
- 芽 | |
- 瞳 | |
- 名 | |
- 迷 | |
モ : 望 | |
ヤ : 夜 | |
ユ : | |
- 遊 | |
- 友 | |
ヨ : | |
- 世 | |
- 夜 | |
ラ : | |
- 蘭 | |
- 楽 | |
- 来 | |
- 羅 | |
リ : 里 | |
ル : | |
- 瑠 | |
- 流 | |
レ : 麗 | |
ロ : 路 | |
ワ : 話 | |
ガ : 画 | |
ギ : 戯 | |
グ : 久 | |
ゲ : 気 | |
ゴ : | |
- 郷 | |
- 後 | |
ザ : 再 | |
ジ : 時 | |
ズ : 巣 | |
ゼ : 星 | |
ゾ : 想 | |
ダ : 駄 | |
ヂ : 時 | |
ヅ : 巣 | |
デ : 手 | |
ド : | |
- 人 | |
- 道 | |
- 童 | |
- 都 | |
- 独 | |
バ : 葉 | |
ビ : 美 | |
ブ : 舞 | |
ベ : 米 | |
ボ : 慕 | |
パ : | |
- 巴 | |
- 葉 | |
ピ : 秘 | |
プ : 譜 | |
ペ : 変 | |
ポ : 歩 | |
タイ : 待 | |
テイ : 庭 | |
テー : 庭 | |
ユメ : 夢 | |
アイ : 愛 | |
オン : 遠 | |
クロ : 黒 | |
ライ : 来 | |
レタ : 手紙 | |
レン : 恋 | |
ジャ : 者 | |
ジャー : 者 | |
ソウ : 想 | |
ティー : 茶 | |
ジュ : 樹 | |
ショ : 処 | |
シマ : 島 | |
ショー : 笑 | |
ショウ : 笑 | |
シヨウ : 笑 | |
センカ : 専科 | |
ソー : 想 | |
パリ : 巴里 | |
マイ : 舞 | |
ロンド : 円舞 | |
ヒメ : 姫 | |
オト : 音 | |
ムード : 武道 | |
ナイト : 騎士 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment