[英]Textblob - HTTPError: HTTP Error 429: Too Many Requests
我有一個數據框,其中一列在每一行都有一個字符串列表。
平均而言,每個列表有 150 個單詞,每個單詞大約 6 個字符。
數據框的 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
錯誤要長得多,我在中間省略了其余部分。
現在,即使我嘗試僅對兩個文檔/行執行此操作,我也會遇到相同的錯誤。
有什么方法可以讓我從textblob
獲得更多單詞和文檔的回復?
我在嘗試翻譯推文時遇到了同樣的問題。 由於我超過了速率限制,它開始返回 HTTP 429 too many requests 錯誤。
因此,對於可能想要處理 TextBlob 的其他人,最好檢查速率限制。 Google 提供有關限制的信息: https : //cloud.google.com/translate/quotas?hl=en
如果超出速率限制,則必須等到配額在太平洋時間午夜重置。 可能需要 24 小時才能再次生效。
另一方面,您還可以在請求之間引入延遲,以免打擾 API 服務器。
例如:當您要翻譯列表中的 TextBlob 句子時。
import time
...
for sentence in list_of_sentences:
sentence.translate()
time.sleep(1) #to sleep 1 sec
你可以試試谷歌翻譯。
“Googletrans 是一個免費且無限制的 Python 庫,它實現了 Google Translate API。它使用 Google Translate Ajax API 調用檢測和翻譯等方法。”
與 TextBlob 類似,Googletrans 具有語言檢測和翻譯等功能。 當我標記語言並翻譯大量郵件時,它對我來說效果很好。
(使用 TextBlob 時,我嘗試過 time.sleep time.sleep(1)
但我最終達到了 API 限制...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.