データフレームは、各行の文字列のリストが1つの列のデータフレームを持つ。
平均して、各リストにはそれぞれ約6文字の150ワードがあります。
データフレームの700行の700行のそれぞれは文書に関するものであり、各文字列はこの文書の単語です。そのため、基本的に私は文書の言葉をトークしました。
私はこれらの文書のそれぞれの言語を検出し、これを行うことを私は最初に文書の各単語の言語を検出しようとします。
このため、次のようにします。
from textblob import TextBlob
def lang_detect(document):
lang_count = {}
for Word in document:
if len(Word) >= 4:
Word_textblob = TextBlob(Word)
lang_result = Word_textblob.detect_language()
response = lang_count.get(lang_result)
if response is None:
lang_count[f"{lang_result}"] = 1
else:
lang_count[f"{lang_result}"] += 1
return lang_count
df_per_doc['languages_count'] = df_per_doc['complete_text'].apply(lambda x: lang_detect(x))
_
これを行うと、次のエラーが発生します。
---------------------------------------------------------------------------
HTTPError Traceback (most recent call last)
<ipython-input-42-772df3809bcb> in <module>
25
---> 27 df_per_doc['languages_count'] = df_per_doc['complete_text'].apply(lambda x: lang_detect(x))
28
29
.
.
.
647 class HTTPDefaultErrorHandler(BaseHandler):
648 def http_error_default(self, req, fp, code, msg, hdrs):
--> 649 raise HTTPError(req.full_url, code, msg, hdrs, fp)
650
651 class HTTPRedirectHandler(BaseHandler):
HTTPError: HTTP Error 429: Too Many Requests
_
エラーははるかに長く、私は中央の残りの部分を省略しました。
さもなければ私が2つの文書/行だけでこれをやろうとしていても私は同じエラーを得ています。
より多くの単語と文書のためにtextblob
から応答を得ることができる方法はありますか?
あなたは試すことができます Googletrans 。
「Googletransは、無料で無制限のPython Google Translate APIを実装したライブラリー)です。これはGoogle Translate Ajax APIを使用して、検出して翻訳するようなメソッドを呼び出します。 "
TextBlobにSimilary Googletransは、言語の検出と翻訳のような機能を提供しています。私が言語にフラグを立てて大量のメールを翻訳していたとき、それは私にとってかなりうまくいった。
(TextBlobを使用した場合はtime.sleep(1)
を試してみましたが、API制限に到達しました...)