日語中平假名與片假名互相轉換的程序

關鍵在於映射,下面是基於python的實現。

kana = {n あ: ア,n い: イ,n う: ウ,n え: エ,n お: オ,n か: カ,n き: キ,n く: ク,n け: ケ,n こ: コ,n さ: サ,n し: シ,n す: ス,n せ: セ,n そ: ソ,n た: タ,n ち: チ,n つ: ツ,n て: テ,n と: ト,n な: ナ,n に: ニ,n ぬ: ウ,n ね: ネ,n の: ノ,n は: ハ,n ひ: ヒ,n ふ: フ,n へ: ヘ,n ほ: ホ,n ら: ラ,n り: リ,n る: ル,n れ: レ,n ろ: ロ,n わ: ワ,n を: ヲ,n だ: ダ,n ぢ: ヂ,n づ: ヅ,n で: デ,n ど: ド,n ぁ: ァ,n ぃ: ィ,n ぅ: ゥ,n ぇ: ェ,n ぉ: ォ,n ん: ン,n っ: ッ,n}n

反轉字典

invert_kana = {value:key for key,value in kana.items()}n

實現轉換

def trans(words):n trans_words = n try:n trans_words = .join([invert_kana[x] for x in list(words)])n except:n trans_words = .join([kana[x] for x in list(words)])n return trans_wordsn

成功實現轉換

trans(イッ)n#いっntrans(いっ)n#イッn

あなたと二人 続くと言って

但這樣想想感覺還不夠,比如上面這句話,就不行了

先分詞

def get_kana(text):n with MeCab() as nm:n for n in nm.parse(str(text), as_nodes=True):n if not n.is_eos():n if n.feature.split(,)[0]!=記號 and n.feature.split(,)[2:]!=[*, *, *, *, *]:nn yield n.feature.split(,)[-2]n

試一下執行結果

list(get_kana(あなたと二人 続くと言って))n#[アナタ, ト, ニ, ニン, ツヅク, ト, イッ, テ]n

再結合上面寫的轉換函數,就得到想要的假名了。

.join([trans(x) for x in list(get_kana(あなたと二人 続くと言って))])n#あなた と に にん つづく と いっ てn

想全部變成片假名,也很簡單

.join([trans(trans(x)) for x in list(get_kana(あなたと二人 続くと言って))])n#アナタ ト ニ ニン ツヅク ト イッ テn

推薦閱讀:

さま「様」為何用來作尊稱?
當代漢語中出自日語的常用四字用語有哪些?
琉球語中「南(はえ/ふぇ/ぱい)」和「北(にし)」的語源分別為何?
提高日語N1聽力的方法?

TAG:日语 | Python | 日语假名 |