saliton / Capitalize

英文をちゃんとキャピタライズしたい

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Open In Colab

英文をちゃんとキャピタライズしたい

ある英語のチャットボットを試した時、以下のように出力してくるものがありました。

that ' s cool . i like watching sports . do you have any hobbies besides tennis ?

人間なら特に問題なく読めるのですが、これを機械翻訳に連携させた時に困ったことがありました。翻訳の品質が落ちてしまうものがあったのです。ちゃんとキャピタライズさせてから入力したほうがはるかに翻訳品質がよかった。

というわけで、キャピタライズする関数を書いてみました。

import re

def upperEnd(obj):
    '''引数の末尾を大文字にする'''
    return obj.group()[:-1] + obj.group()[-1].upper()

def capitalize(text):
    '''文をキャピタライズする'''
    text = re.sub(r'\s*([\.?!,])', r'\1', text)     # 句読点の前の空白を削除する
    text = re.sub(r"\s'\s", "'", text)            # 'の前後の空白を削除する
    text = re.sub(r'[\.?!:]\s+.', upperEnd, text) # 句点の後の最初の文字を大文字にする
    text = text[0].upper() + text[1:]           # 文の最初の文字を大文字にする
    return text

print(capitalize("that ' s cool . i like watching sports . do you have any hobbies besides tennis ?"))
That's cool. I like watching sports. Do you have any hobbies besides tennis?

以上です。何かの参考になれば

About

英文をちゃんとキャピタライズしたい

License:Apache License 2.0


Languages

Language:Jupyter Notebook 100.0%