我正在尝试翻译数据集中所有名为tweet_text
的列。我有大约100000行数据,其中大约50%需要翻译成英语
下面的代码可以工作,但我基本上运行的功能,翻译每一行的tweets,这需要将近2个小时
注意:x != " "
检查tweet是否为空字符串,因为我从其中删除了一些emojis后,一些tweet刚刚" "
,剩下的就这些了
from deep_translator import GoogleTranslator
import swifter
import pandas as pd
df_bdtu['tweet_text'] = df_bdtu.tweet_text.swifter.apply(lambda x: GoogleTranslator(source='auto', target='en').translate(x) if x != " " else None)
所以为了加快速度,我试着只在它们不是英语的情况下翻译它们,因为我有一个列,列明tweet的语言,名为lang
在这里,我只是在两列上循环并翻译tweet_text
:
" "
English
df_bdtu[['tweet_text', 'lang']].swifter.apply(lambda x: GoogleTranslator(source='auto', target='en').translate(x['tweet_text']) if (x['tweet_text'] != " " and x['lang'] != "en") else None, axis = 1)
但是我得到了一个错误,这表明我在一次翻译中传递了所有的文本,而我似乎无法修复它。我也对加快这一进程持开放态度
错误:
deep_translator.exceptions.NotValidPayload: --> text must be a valid text with maximum 5000 character, otherwise it cannot be translated
数据帧:
data = {'tweet_text': ['100 Arsenal appearances. Congratulations, Rob! ', " Lundi soir dans l'émission , et ont débriefé la victoire dans le Der...", ' È in corso la votazione tra le 4 figurine finaliste!', ' y’a absolument zéro vanne l’avis est désastreux. ', 'FINAL 1-3 ¡El firma una gran remontada en su primera victoria de 2021! ... ', ' JÁ HÁ ONZE! ', 'HALF-TIME Southampton 1-0 LiverpoolDanny Ings’ brilliant early opener is the difference at the break ', "10' Une-deux parfaitement exécuté entre Tino et Notre capitaine voit sa frappe passer au-dessus. 0-0 ", ' ¡INCREÍBLE, DOS SANTOS! ', ' +3 '], 'lang': ['en', 'fr', 'it', 'fr', 'es', 'pt', 'en', 'fr', 'es', 'und']}
df = pd.DataFrame(data)
tweet_text lang
100 Arsenal appearances. Congratulations, Rob! en
Lundi soir dans l'émission , et ont débriefé la victoire dans le Der... fr
È in corso la votazione tra le 4 figurine finaliste! it
y’a absolument zéro vanne l’avis est désastreux. fr
FINAL 1-3 ¡El firma una gran remontada en su primera victoria de 2021! ... es
JÁ HÁ ONZE! pt
HALF-TIME Southampton 1-0 LiverpoolDanny Ings’ brilliant early opener is the difference at the break en
10' Une-deux parfaitement exécuté entre Tino et Notre capitaine voit sa frappe passer au-dessus. 0-0 fr
¡INCREÍBLE, DOS SANTOS! es
+3 und
exceptions
李>try - except
编写一个函数来捕获无效行。import swifter
,因为它是一个用于加速.apply
的模块,测试时不需要它李>相关问题 更多 >
编程相关推荐