#python-3.x #pandas #dataframe #textblob
#python-3.x #панды #фрейм данных #текстовый блок
Вопрос:
Я пытаюсь преобразовать неанглийские языки в английский, используя функцию перевода TextBlob. Мой набор данных основан на фрейме данных Pandas.
Я понял, что это работает в контексте фрейма данных, отличного от Pandas. Например,
what=TextBlob("El apartamento de Evan esta muy bien situado, con fcil acceso al cualquier punto de Manhattan gracias al metro.")
whatt=what.translate(to= 'en')
print (whatt)
Но, основываясь на фрейме данных Pandas, TextBlob translate не будет работать должным образом.
Я искал способ решить эту проблему и нашел код, но выдал мне другое сообщение об ошибке. Может ли кто-нибудь помочь мне с этим?
data["comments"] = data["comments"].str.encode('ISO 8859-1', 'ignore').apply(lambda x: TextBlob(x.strip()).translate(to='en'))
TypeError: cannot use a string pattern on a bytes-like object
Ответ №1:
Интересная проблема
import pandas as pd
data = { 'number' : [1,2], 'comments' : ['El apartamento de Evan','Manhattan gracias al metro' ] }
df = pd.DataFrame(data)
а затем давайте сделаем перевод в новую строку
df["commentst"] = df["comments"].apply(lambda x: str(TextBlob(x).translate(to='en')))
и это дает
number comments commentst
0 1 El apartamento de Evan Evan's Apartment
1 2 Manhattan gracias al metro Manhattan thanks to the subway
И вот минимальная пробная версия
def get_english(message):
analysis = TextBlob(message)
language = analysis.detect_language()
if language == 'en':
return message
return str(analysis.translate(to='en'))
df["commentst"] = df["comments"].apply(lambda x: get_english(x))
df
Это дает то же самое с моим, но я не уверен в ваших данных
Комментарии:
1. Привет, спасибо за ваш ответ! У меня есть дополнительный вопрос. Если некоторые английские слова смешиваются в комментариях с другими языками, я заметил, что это также выдает ошибку (не переведено: Translation API вернул входную строку без изменений). Я попытался использовать tryamp;except, но Python ничего не сделал. У вас есть какие-либо идеи, как я могу решить эту проблему?
2. Знаете ли вы, с каких языков вы пришли? Это очень помогает с переводом.
3. Я проверил это, и в основном это на испанском, но, похоже, некоторые другие языки тоже (отзывы клиентов). Не удается проверить все строки, поскольку их слишком много.
4. Спасибо за обновление. Я запустил его на подвыборке моих данных, и он работает нормально. Он оставляет только английский как есть. Но у меня было около 27000 отзывов, и я столкнулся с ошибкой -> HTTPError: слишком много запросов. Похоже, это не ошибка вашего кода, а какие-то ограничения или ограничения на объем данных, которые Python может обрабатывать при использовании Google Translation API?
5. Вы неявно вызываете Google translate, и у них могут быть ограничения. Я не знаю об этом.