Python での言語検出
人間としていくつかの言語を認識していても、言語が混在するデータセットを扱う場合、プロセスを進めるためにテキストまたはドキュメントで使用されている言語を特定する必要があるため、それだけでは十分ではありません。 そのため、言語検出方法に適応することは、このような状況で役立ちます。
言語を検出するために、Python にはさまざまな言語検出ライブラリがあります。 言語検出で使用される Python ライブラリは、表現の中の文字とコンテンツで一般的に使用される単語を認識するため、最も適したものを選択できます。
自然言語処理または機械学習を使用してモデルを構築し、言語と Python ライブラリを検出できます。 たとえば、Web ページのコンテンツが英語ではないことを Chrome が検出すると、翻訳するボタンのあるボックスがポップアップ表示されます。
このシナリオの背後にある考え方は、Chrome がモデルを使用して Web ページで使用されるテキストの言語を予測するというものです。
Python での言語検出にライブラリと API を使用する
Python で言語を検出するために使用した最初の方法は、ライブラリまたは API です。 Python での言語検出に使用できる最もよく使用されるライブラリを見てみましょう。
langdetect
langdetect
は Google の言語検出ライブラリでもあり、標準のユーティリティ モジュールには付属していないため、以前のモジュールとしてインストールする必要があります。
この API はテキスト処理と言語学に役立ち、55 の言語をサポートします。
この API を使用するには、Python のバージョンが 2.7 または 3.4+ である必要があります。 以下のように langdetect
API をインストールできます。
$ pip install langdetect
detect
モジュールをインポートした後、langdetect
API を使用して言語を検出できます。 その後、コードは、指定された文の検出された言語を出力します。
ここでは例として 3つの文を提供し、それぞれの言語を英語 (en)
、イタリア語 (pt)
、中国語 (ko)
として表示します。
コード:
from langdetect import detect
print(detect("Hello World!"))
print(detect("Ciao mondoe!"))
print(detect("你好世界!"))
出力:
ランギッド
langid
は、最小限の依存関係で言語名を検出するために使用される別の API です。 また、97 の言語を検出できるスタンドアロンの言語識別ツールでもあります。
インストールするには、ターミナルで以下のコマンドを入力する必要があります。
$ pip install langid
以下の方法を使用すると、langid
ライブラリを使用して言語を検出できます。 TextBlob
のように、ループ中に 3つの文の言語を確認し、各文の言語を英語 (it)
、イタリア語 (gl)
、中国語 (zh)
として出力します。
コード:
import langid
T = ["Hello World!", "Ciao mondoe!", "你好世界!"]
for i in T:
print(langid.classify(i))
出力:
テキストブロブ
textblob
は、Google 翻訳の言語検出機能を使用してテキスト データを処理する別の API です。 これは、Python の巨人と見なされるNLTK
(自然言語ツールキット) とパターン
モジュールの助けを借りてうまく機能します。
この単純な API は、言語を検出するのではなく、感情分析、名詞句の抽出、品詞のタグ付け、分類などを行います。
この API を使用するには、Python のバージョンが 2.7 または 3.5 以上で、インターネット接続が必要です。
pip
コマンドでパッケージをインストールする必要があります。
$ pip install textblob
その後、モジュール TextBlob
をインポートすることで言語を検出できます。 ここでは、"T"
という名前の配列に異なる言語の 3つの文を割り当てています。
for
ループをループしている間に、3つの文の言い回しを検出して出力します。
コード:
from textblob import TextBlob
T = ["Hello World!", "Bonjour le monde!", "你好世界!"]
for i in T:
lang = TextBlob(i)
print(lang.detect_language())
textblob
ライブラリは既に廃止されているため、上記のコードは正確な出力ではなくエラーを表示します。 したがって、この方法を使用することはお勧めしません。 これの代わりに、Google Translate API を使用できます。
詳細については、TextBlob
ここをクリック を参照してください。
上記の API とライブラリに加えて、googletrans
、FastText
、Spacy
、polyglot
、pycld
、chardet
、guess language
などがあります。 ユースケースに応じて、それらも使用できます。
その中でも、polyglot
と FastText
は、精度の高い長いテキストに最適なライブラリです。 また、polyglot
と pycld
は、テキスト内の複数の言語を検出できます。
googletrans
は、無制限のリクエストを作成できる無料の Python ライブラリです。 言語を自動検出でき、高速で信頼性があります。
FastText
は、176 の言語を認識できるテキスト分類器で、より迅速かつ正確な出力を提供します。 Facebook が使用する言語検出ライブラリは FastText
です。
ライブラリや API を使用する以外に、言語モデルや交差セットを使用して言語を検出できます。
Python での言語検出に言語モデルを使用する
ここで、モデルは一連の単語の確率を与え、最高スコアの言語ごとに N
言語モデルを使用できます。
これらの言語モデルにより、さまざまな言語のセットが含まれている場合でも、テキストの言語を検出できます。
Python での言語検出に交差セットを使用する
そして、言語を検出できる次の方法は、交差セットを使用しています。 ここでは、各言語で最も頻繁に使用される単語を含むN
セットを準備し、各セットとテキストを交差させます。
次に、検出された言語は、共通部分が多いセットです。
まとめ
全体として、言語を検出する Python の体系的な方法では、ライブラリと API が使用されます。 ただし、精度、言語範囲、速度、メモリ消費量が異なります。
適切なライブラリを選択し、ユース ケースごとにモデルを構築できます。
モデルが 1つの言語のみに依存している場合、他の言語はノイズと見なすことができます。 言語検出は、データ クリーニングの 1 ステップです。 したがって、言語を検出することでノイズのないデータを取得できます。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.