如果日語歌詞上有標註假名的話,日語初學者就可以很容易地學唱歌曲。然而,手動編寫日語歌詞注音卻很麻煩。所以,我研發了一種能夠使得編寫注音這件事變得方便的方法。使用{{Photrans}}模板。
利用furigana這個Python庫,將其稍作改造,就可以生成注音歌詞。
1.安裝日語詞彙分析器MeCab,參考這篇文章。
2.打開cmd,輸入"pip install furigana"安裝這個庫,並輸入"pip install jaconv"安裝其依賴。
3.打開furigana的文件夾,其中的"furigana.py"這個文件,對其稍作改造。首先是新增一個return_wiki函數:
def return_wiki(text): output = '' for pair in split_furigana(text): if len(pair)==2: kanji,hira = pair output += "{{"+ "Photrans|{0}|{1}".format(kanji, hira)+"}}" else: output += pair[0] return output + '\n'
4.由於MeCab使用的字典終究不可能完整包括所有詞彙,所以遇到不認識的詞就會出錯。我們需要修改一下split_furigana函數,讓它不要處理不認識的詞。注意,這也意味著你要在完成之後手動給這個詞注音。
def split_furigana(text): """ MeCab has a problem if used inside a generator ( use yield instead of return ) The error message is: ``` SystemError: <built-in function delete_Tagger> returned a result with an error set ``` It seems like MeCab has bug in releasing resource """ mecab = MeCab.Tagger("-Ochasen") mecab.parse('') # 空でパースする必要がある node = mecab.parseToNode(text) ret = [] while node is not None: origin = node.surface # もとの単語を代入 if not origin: node = node.next continue # originが空のとき、漢字以外の時はふりがなを振る必要がないのでそのまま出力する if origin != "" and any(is_kanji(_) for _ in origin): if len(node.feature.split(',')) <= 7: ret += [(origin,)] else: kana = node.feature.split(",")[7] # 読み仮名を代入 hiragana = jaconv.kata2hira(kana) for pair in split_okurigana(origin, hiragana): ret += [pair] else: if origin: ret += [(origin,)] node = node.next return ret
5.最後,在你自己的文件夾裡寫一個主程序:
from furigana.furigana import return_wiki, print_html original = open('原文.txt', 'r', encoding='utf-8') photransed = open('注音後.txt', 'w', encoding='utf-8') for line in original.readlines(): wikitext = return_wiki(line) photransed.write(wikitext) photransed.close() original.close()
6.在同一個文件夾裡創建「原文.txt」,把歌詞放進去,運行程序即可。
1.把歌詞原文複製下來,保存為「原文.txt」,放進一個文件夾。
2.利用標註日文假名工具,得到同時帶有漢字和假名的歌詞,保存為「轉換前.txt」,放進同一個文件夾。
3.下載我寫的Python程序(Photrans.exe),放在這個文件夾裡運行,得到「轉換後.txt」。
4.把轉換後的文字放進條目中,最後加上{{Photrans/button}},完成。