テキスト翻訳はコンピュータの難問であり、その解決は年々容易になっている。Googleのような大企業は、積極的に私たちの残りの部分は自由にそれらを使用することができます彼らのテキスト翻訳サービスを改善するために取り組んでいます。
個人的な使用とは別に、これらのサービスは様々なAPIを通じて開発者が使用することができる。この記事では、そのようなAPIを使ってテキスト翻訳を行う TextBlob
について説明する。
TextBlobとは?
TextBlob`はPythonで書かれたテキスト処理ライブラリである。ドキュメントによると、品詞タグ付け、構文解析、感情分析、スペルチェック、翻訳などに利用できるようです。今回はテキストの翻訳に焦点を当てる。
内部的には、TextBlob
はGoogle TranslateのAPIに依存している。つまり、翻訳を行うためにはアクティブなインターネット接続が必要です。
TextBlobのインストール
まずは pip
を使って TextBlob
をインストールし、動作に必要なコーパスをダウンロードすることから始めましょう。
$ pip install -U textblob
$ python -m textblob.download_corpora
TextBlobの使用
TextBlobの使い方は簡単で単純です。インポートして、コンストラクタに文字列を代入し、
translate()`関数で翻訳するだけです。
from textblob import TextBlob
blob = TextBlob("Buongiorno!")
print(blob.translate(to='en'))
translate()関数は
from_langと
toという2つの引数を受け取ります。from_lang
はTextBlobが検出した言語に応じて自動的に設定されます。
上の例では、イタリア語のフレーズ Buongiorno
を使っていますが、これは英語では Good morning
となります。
時には、テキストに翻訳が必要かどうかを判断するために、言語を検出したい場合があります。テキストの言語を検出するには、 TextBlob
の detect_language()
関数を使用します。
from textblob import TextBlob
blob = TextBlob("Buongiorno!")
if (blob.detect_language() != 'en')
blob.translate(to='en'))
翻訳例と精度
英語からヒンディー語への文の翻訳
最初の例として、英語がヒンディー語にどの程度翻訳されるかを見てみましょう。
blob = TextBlob('TextBlob is a great tool for developers')
print(blob.translate(to='hi'))
結果は次のようになります。
डेवलपर्स के लिए एक बढ़िया टूल है
ロシア語詩のクロアチア語訳
TextBlobがどのように詩を扱うか見てみましょう。以下はロシアの詩人Vladimir Mayakovskyの作品で、最初はロシア語で、次に英語で書かれています。
Послушайте!
Ведь, если звезды зажигают -
значит - это кому-нибудь нужно?
Значит - кто-то хочет, чтобы они были?
Значит - кто-то называет эти плевочки
жемчужиной?
Listen!
See, if stars light up
does it mean that there is someone who needs it?
Does it mean that someone wants them to exist?
It means that someone calls these little spits
magnificent.
キリル文字の原詩を TextBlob
に与えて、クロアチア語にどの程度翻訳されるかを見てみましょう。ロシア語もクロアチア語もスラブ系の言語であるため、比較的良好な翻訳が期待される。
from textblob import TextBlob
poem = 'Послушайте! Ведь, если звезды зажигают - значит - это кому-нибудь нужно? Значит - кто-то хочет, чтобы они были? Значит - кто-то называет эти плевочки жемчужиной?'
blob = TextBlob(poem)
print(blob.translate(to='hr'))
上記のコードを実行すると、以下のような出力が得られます(便宜上フォーマットしてあります)。
Slušati!
Uostalom, ako su zvijezde upaljene
znači li to nekome treba?
Dakle - netko želi da to budu?
Dakle - netko naziva ove pljuvačke
biserom?
最初の単語が「Slušati」ではなく「Slušajte」であれば、語彙的に良い音になることを除けば、ほとんどの訳語は良い訳です。完璧とは言えませんが、理解できる訳文だと思います。
ドイツ語の単語の並びを英語に翻訳する。
場合によっては、完全な文章を翻訳する必要がないこともあります。単語のリストや配列がある場合もあります。このような場合、翻訳を変える可能性のある文脈がないため、翻訳するのがとても簡単です。
from textblob import TextBlob
worter = ['einer', 'zwei', 'drei', 'vier', 'fünf', 'sechs', 'sieben', 'acht', 'neun', 'zehn']
for w in worter:
blob = TextBlob(w)
print(blob.translate(to='en'))
こうなります。
one
two
three
four
five
six
seven
eight
nine
ten
いい感じですね。
食品を英語からフランス語に翻訳する
最後に、英単語をフランス語に訳してみましょう。
from textblob import TextBlob
blob = TextBlob('An apple')
print(blob.translate(to='fr'))
フランス語では「Une pomme`」と訳します。ボナペティ!(Bon Appétit!
結論
翻訳は、興味深いが難しいコンピュータの問題である。ディープラーニングやその他のAI手法は、言語を理解し、自動言語翻訳を実行することにますます優れてきています。TextBlob`は、そのような自動言語翻訳を行うために使用できる開発者向けのツールの1つである。
このようなアプローチには多くの利点がありますが、しかし、すべての翻訳が完璧というわけではありません。このような技術はまだ進化しており、非常に重要な高品質の翻訳が必要な場合は、常にプロの翻訳者に相談するのがベストです。
しかし、それ以外の目的であれば、TextBlob
のようなツールは単純な翻訳に便利で、それを使う開発者の好奇心を満足させるには十分すぎるほどです。