これを取得したい:
Input text: "ру́сский язы́к"
Output text: "Russian"
Input text: "中文"
Output text: "Chinese"
Input text: "にほんご"
Output text: "Japanese"
Input text: "العَرَبِيَّة"
Output text: "Arabic"
どうすればPythonでそれを行うことができますか?ありがとう。
langdetect を見たことがありますか?
from langdetect import detect
lang = detect("Ein, zwei, drei, vier")
print lang
#output: de
TextBlob 。 NLTKパッケージが必要、Googleを使用。
from textblob import TextBlob
b = TextBlob("bonjour")
b.detect_language()
pip install textblob
ポリグロット 。 numpyといくつかの難解なライブラリが必要です。 windowsで動作する可能性は低い。 (Windowsの場合、PyICU、MorfessorおよびPyCLD2from here 、それからちょうどpip install downloaded_wheel.whl
。)混合言語のテキストを検出できます。
from polyglot.detect import Detector
mixed_text = u"""
China (simplified Chinese: 中国; traditional Chinese: 中國),
officially the People's Republic of China (PRC), is a sovereign state
located in East Asia.
"""
for language in Detector(mixed_text).languages:
print(language)
# name: English code: en confidence: 87.0 read bytes: 1154
# name: Chinese code: zh_Hant confidence: 5.0 read bytes: 1755
# name: un code: un confidence: 0.0 read bytes: 0
pip install polyglot
依存関係をインストールするには、次を実行します:Sudo apt-get install python-numpy libicu-dev
chardet には、範囲(127-255]に文字バイトがある場合に言語を検出する機能もあります。
>>> chardet.detect("Я люблю вкусные пампушки".encode('cp1251'))
{'encoding': 'windows-1251', 'confidence': 0.9637267119204621, 'language': 'Russian'}
pip install chardet
langdetect テキストの大部分が必要です。内部で非決定論的アプローチを使用します。つまり、同じテキストサンプルに対して異なる結果が得られます。ドキュメントによると、次のコードを使用して判断する必要があります。
from langdetect import detect, DetectorFactory
DetectorFactory.seed = 0
detect('今一はお前さん')
pip install langdetect
pip install guess_language-spirit
langid は両方のモジュールを提供します
import langid
langid.classify("This is a test")
# ('en', -54.41310358047485)
コマンドラインツール:
$ langid < README.md
pip install langid
langdetect
に問題があり、それが並列化に使用されて失敗すると失敗します。しかし、spacy_langdetect
はそのラッパーであり、その目的に使用できます。次のスニペットも使用できます。
import spacy
from spacy_langdetect import LanguageDetector
nlp = spacy.load("en")
nlp.add_pipe(LanguageDetector(), name="language_detector", last=True)
text = "This is English text Er lebt mit seinen Eltern und seiner Schwester in Berlin. Yo me divierto todos los días en el parque. Je m'appelle Angélica Summer, j'ai 12 ans et je suis canadienne."
doc = nlp(text)
# document level language detection. Think of it like average language of document!
print(doc._.language['language'])
# sentence level language detection
for i, sent in enumerate(doc.sents):
print(sent, sent._.language)
入力文字列のUnicode文字グループを決定して言語の種類(ロシア語の場合はキリル文字など)を示し、テキスト内の言語固有の記号を検索できます。