ニシキヘビってかわいいよね、実際みたことないけど。

無職がいよかん国でプログラミングとかの備忘録を書いてます。 一日一食たまごかけごはん。

Google翻訳の翻訳元テキストボックスにコピペした時改行を整形するブックマークレット

書籍や論文などが書かれたPDFから英文をコピペすると、文中に存在するPDFの改行もコピペされるので、 Google翻訳が改行位置を文の区切りと判断し、妙な結果がでることがある。

手直ししてるとめんどくさいので、自動で修正を行うブックマークレットを作ってみた。

javascript:(function(){var textarea_source = document.getElementById('source'); textarea_source.addEventListener('paste', function(){setTimeout(function(){var text = textarea_source.value; var new_text = text.replace(/[\n\r]+/g, ' ').replace(/(?<!\w\.\w.)(?<![A-Z][a-z]\.)(?<=\.|\?|!)\s/g, '\n\n'); textarea_source.value = new_text;}, 1000)})}());

ブックマークレット起動後、Google翻訳の翻訳元テキストボックスに英文をペーストして1秒経つと、全改行を空白で置換後、文区切りとなるピリオドっぽいところに改行を2つ挿入する。 待機秒数を早めたい場合は、1000のところを各環境に応じて調節する。

Chromium 62.0.3202.75(Official Build)Built on Ubuntu で動作確認。
正規表現の後戻りを使うので、1年半くらい前から更新していないChromeだと動かないです。

正規表現Python - RegEx for splitting text into sentences (sentence-tokenizing) - Stack Overflowを使わせていただきました。

他に文末扱いしたい記号があれば、最後の肯定後戻りに追加すれば動くかと。 たまにへんてこなとこで切れるが、そのためだけにNLTKのPunktSentenceTokenizerを移植する気にはなれない.......