今回はバビ語をマスターしたいなーと思い
バビ語変換を試みてみました。

解説動画はこちら



さて、まずバビ語についてですが
近年では最近見る機会が減りましたが
日向坂46齊藤京子さんが使いこなす
入れ詞の一種です。

一応日向坂46のキャプテン
佐々木久美さんは通訳出来るみたいです。

元々は1970年代初頭の中三トリオ
(森昌子、桜田淳子、山口百恵)が
内緒話をするのに使っていたという
発祥起源説があります。

ルールはいたって簡単で
ば・び・ぶ・べ・ぼを言葉の間に挟んでしゃべる

「はい」→「はばいび」
ア行は「ば」・イ行は「び」・・・
のように言葉にばびぶべぼを挟むだけです。

少し細かいルールを追加すると

ー のあとは前の母音のバ行をつける
「らーめん」 → 「らばーばめべんぶ」

小さい「っ」はそのまま
「ついったー」→「つぶいびったばーば」

となります。

さて、これをプログラムに置き換えてみましょう。

コードはこちら
import re

# 文字列の定義
row_a = [s for s in 'あかさたなはまやらわがざだばぱ']
row_i = [s for s in 'いきしちにひみりぎじぢびぴ']
row_u = [s for s in 'うくすつぬふむゆるんぐずづぶぷ']
row_e = [s for s in 'えけせてねへめれげぜでべぺ']
row_o = [s for s in 'おこそとのほもよろをごぞどぼぽ']
row_kya = re.split('(..)','きゃぎゃしゃじゃちゃぢゃにゃひゃびゃぴゃみゃりゃ')[1::2]
row_kyu = re.split('(..)','きゅぎゅしゅじゅちゅぢゅにゅひゅびゅぴゅみゅりゅ')[1::2]
row_kyo = re.split('(..)','きょぎょしょじょちょぢょにょひょびょぴょみょりょ')[1::2]

# 辞書の定義
dict_a = { k:k+'ば' for k in row_a}
dict_i = { k:k+'び' for k in row_i}
dict_u = { k:k+'ぶ' for k in row_u}
dict_e = { k:k+'べ' for k in row_e}
dict_o = { k:k+'ぼ' for k in row_o}
dict_kya = { k:k+'ば' for k in row_kya}
dict_kyu = { k:k+'ぶ' for k in row_kyu}
dict_kyo = { k:k+'ぼ' for k in row_kyo}
babigo_dict = {**dict_a, **dict_i, **dict_u, **dict_e, 
               **dict_o, **dict_kya, **dict_kyu, **dict_kyo}

# 逆変換辞書の定義
icd_a = { k+'ば':k for k in row_a}
icd_i = { k+'び':k for k in row_i}
icd_u = { k+'ぶ':k for k in row_u}
icd_e = { k+'べ':k for k in row_e}
icd_o = { k+'ぼ':k for k in row_o}
icd_kya = { k+'ば':k for k in row_kya}
icd_kyu = { k+'ぶ':k for k in row_kyu}
icd_kyo = { k+'ぼ':k for k in row_kyo}
icd_dict1 = {**icd_a , **icd_i , **icd_u , **icd_e , **icd_o }
icd_dict2 = {**icd_kya , **icd_kyu , **icd_kyo}
icd_dict3 = {'ーば':'ー' , 'ーび':'ー' , 'ーぶ':'ー' , 'ーべ':'ー' , 'ーぼ':'ー'}
b_dict = {**icd_dict1 , **icd_dict2 , **icd_dict3}
# 文章をバビ語に変換する
def change_babigo(text):
    babigo,out = '',''
    for i,s in enumerate(text):
        if s in row_a + row_i + row_u + row_e + row_o:
            if ''!=out:
                babigo += babigo_dict[out]
            if i == len(text)-1:
                babigo += babigo_dict[s]
            out = s
        elif s in ['っ']:
            babigo += babigo_dict[out] + s
            out = ''
        elif s in ['ゃ','ゅ','ょ']:
            out += s
            babigo += babigo_dict[out]
            out = ''
        elif 'ー'==s:
            tmp = babigo_dict[out]
            babigo += tmp + 'ー' + tmp[-1]
            out = ''
        elif s in ['、','。']:
            if ''!=out:
                babigo += babigo_dict[out]
                babigo += s
            out = ''
    return babigo
text = "らーめんだいすき、さいとうきょうこです。"
print(change_babigo(text))
らばーばめべんぶだばいびすぶきび、
さばいびとぼうぶきょぼうぶこぼでべすぶ。
text = "あたしのなまえは、かすがです。"
print(change_babigo(text))
あばたばしびのぼなばまばえべはば、
かばすぶがばでべすぶ。


こんな感じで文章をバビ語に変換できます。
制約として「ひらがな」だけを
変換することができます。
「ひらがな推し」なので・・・


次に、バビ語を通訳してみましょう。

バビ語の文章を元に戻すのも考えてみました。

こんな感じになりました。
# バビ語を元の文章に戻す
def babigo_reverse(babigo):
    for k,v in icd_dict2.items():
        babigo = babigo.replace(k,' ' + k + ' ')
    for k,v in icd_dict1.items():
        babigo = babigo.replace(k,' ' + k + ' ')
    babigo = babigo.replace('  ',' ')
    tmp = babigo.split(' ')
    out = ''
    for t in tmp:
        if t in b_dict:
            out += b_dict[t]
        else:
            out += t
    return out
babigo = 'らばーばめべんぶだばいびすぶきび、さばいびとぼうぶきょぼうぶこぼでべすぶ。'
print(babigo_reverse(babigo))
らーめんだいすき、さいとうきょうこです。


ということで、バビ語に変換と
バビ語から元に戻すプログラムを
作ってみました。

これでニュースなども全部
バビ語にすることができますね!!!!

今回はバビ語マスターのための
バビ語変換プログラムでした。

それでは。