Jigsaw Rate Severity of Toxic Comments(googletransで翻訳)
文字列データは逆翻訳というもので水増しするといいらしい!
参考サイト
逆翻訳を使ったテキストデータ水増し – Kaggle Note
Using Google Translate for NLP Augmentation | Kaggle
やってみる
早速エラーだ!
!pip install --quiet googletrans from googletrans import Translator translator = Translator() #この2行で日本語から英語に翻訳しています #この処理のときにgoogle翻訳のサービスを使っている # translation = translator.translate("ここに翻訳したい文字列を入れる", src='ja', dest="en") translation = translator.translate("ここに翻訳したい文字列を入れる", dest="en") #翻訳されて英語を出力できます! print(translation.text)
AttributeError: 'NoneType' object has no attribute 'group'
調べてみたところ、新しいライブラリをインストールするとうまくいくとのこと、たしかにうまくいった!一度読み込んだ古いほうのライブラリをアンインストールせずに新しいバージョンのライブラリをインストールしようとしてもエラーはきえなかったけど、新しくカーネル立ち上げて新しいバージョン読み込んだらうまくいった。理由はあまりわからない。
!pip install --quiet googletrans==4.0.0-rc1 from googletrans import Translator translator = Translator() #この2行で日本語から英語に翻訳しています #この処理のときにgoogle翻訳のサービスを使っている translation = translator.translate("ここに翻訳したい文字列を入れる", src='ja', dest="en") # translation = translator.translate("ここに翻訳したい文字列を入れる", dest="en") #翻訳されて英語を出力できます! print(translation.text) # Insert the string you want to translate here
ひとまずちょいと元のテキストが何語なのかを判定。英語以外が混じっているかもしれないし。そしたらなんかエラーでてきた。。理由がよくわからないが、おそらく多くの処理をかけすぎてはじかれているっぽい。エラーハンドリングしてみる。ほぼほぼ英語ですな。ただ、これものすごい時間がかかった。。
def detect_lang(x): try: ret = translator.detect(x).lang except Exception as e: ret = "dummy" return ret translator = Translator() i= 0 step = 500 adds = [] while i <= 10000: # while i <= len(df): print(i) i+= step add = df["text"].iloc[i - step:i].apply(detect_lang) adds.append(add) add_lang = pd.concat(adds, axis= 0, sort= True) add_lang.name = "org_lang" df = pd.merge(df, add_lang, left_index= True, right_index= True, how= "left") df.org_lang.value_counts()
en 7131 dummy 3335 fr 5 de 5 es 2 pl 2 ja 2 fy 2 nl 2 yo 1 ar 1 mt 1 hr 1 pt 1 cy 1 el 1 hu 1 vi 1 ha 1 iw 1 gd 1 bg 1 eo 1 Name: org_lang, dtype: int64
諸々やりましたが翻訳するには先にテキストをきれいにしてからの方がよさそうなので、そっち先にやります!