pykakasiを利用して、ラップの歌詞を母音分解して、韻を確認できるようにしました!
前回の記事では手動でやっていたのですが、これなら一瞬で終わる!
準備
まずはpykakasiをインストールします。PowerShellからpipで入れられます。
pip install pykakasi
また、歌詞のテキストファイルを『lyrics.txt』として用意しておきます。
コード
import re
import csv
import pykakasi
# 歌詞テキストを読み込む
with open('lyrics.txt', 'r', encoding='utf-8') as f:
lyrics = f.read()
kakasi = pykakasi.kakasi()
# 歌詞をひらがなにする
kakasi.setMode('H', 'H') # ひらがな→ひらがな
kakasi.setMode('K', 'H') # カタカナ→ひらがな
kakasi.setMode('J', 'H') # 漢字 →ひらがな
conversion = kakasi.getConverter()
lyrics = conversion.do(lyrics)
# 母音以外の残したい文字(っ, ん)を記号にして逃がす
lyrics = re.sub(r'っ', '★', lyrics)
lyrics = re.sub(r'ん', '☆', lyrics)
# 不要な記号を除去
lyrics = re.sub(r'?', '', lyrics)
lyrics = re.sub(r'ー', '', lyrics)
# ひらがなをローマ字に変換
kakasi.setMode('H', 'a') # ひらがな→ローマ字
kakasi.setMode('K', 'a') # カタカナ→ローマ字
kakasi.setMode('J', 'a') # 漢字 →ローマ字
conversion = kakasi.getConverter()
lyrics = conversion.do(lyrics)
# 子音を除去
lyrics = re.sub(r'b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|w|x|y|z', '', lyrics)
# 母音以外の残したい文字(っ, ん)を英字(t, n)に変換
lyrics = re.sub(r'★', 't', lyrics)
lyrics = re.sub(r'☆', 'n', lyrics)
# 1文字毎に列に分割し、1行毎に行に分割
output1 = lyrics.split('\n')
output2 = []
for i in range(len(output1)):
output2.append([])
for j in range(len(output1[i])):
output2[i].append(output1[i][j])
del output2[0][0]
# csvで保存
with open('output.csv', 'wt', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
writer.writerows(output2)
まずはテキストファイルを読み込みます。
続いて、kakasiで全部ひらがなにしちゃいます。たまに読み方を間違えるので、そこだけ人間の確認が必要。
更に今回は韻のチェックを目的としているので、『っ』や『ん』も最終情報として残せるように、一旦記号に変換して逃がします。
ついでに、不要な記号は除去します。
続いて、kakasiの本領発揮でひらがなからローマ字に変換し、子音を除去します。
最後に、逃がしておいた『っ』や『ん』を戻してから、出力ファイルを生成します。
出力は『1文字毎に列に分割し、1行毎に行に分割』されたCSVファイルなので、取り回しも良いと思います!
pykakasiは、pip以外のインストールなしで使用できるので、お手軽で良い感じです!
プログラミングを学び始めで何をやっていいか分からない・独学で限界を感じている人は、一度スクールで学ぶのもオススメ!↓
2 thoughts on “Python w/ kakasi でラップの歌詞を母音へ一発分解できるようになった!”