如何用Python将印地语、混合印英文字句转英文?及相关问题求助
解决方案汇总
问题1:推特抓取代码失效
原因分析
- 若使用网页爬虫(如BeautifulSoup/Scrapy):推特网页DOM结构频繁更新,旧的元素定位规则失效
- 若使用API:旧版Twitter API(v1.1)已被限制,必须迁移到Twitter API v2
修复方案
如果用API,以下是基于tweepy的v2版本示例(需先申请开发者账号并获取Bearer Token):
import tweepy # 替换为你的Bearer Token BEARER_TOKEN = "your-bearer-token-here" client = tweepy.Client(bearer_token=BEARER_TOKEN) # 抓取指定关键词的推文 response = client.search_recent_tweets(query="maggi", max_results=10) for tweet in response.data: print(tweet.text)
如果用网页爬虫,需重新用浏览器开发者工具定位推文内容的新CSS选择器/XPath,例如当前推特推文的容器选择器为div[data-testid="tweetText"]。
问题2:Unicode格式多语言内容转英文失败
步骤1:先修复乱码(解码Unicode字符)
你提供的示例是印地语Unicode字符因编码错误显示乱码,先解码为正常印地语文本:
# 乱码字符串示例 garbled_text = " - 400 रà¥à¤ªà¤¯à¥‡ में à¤à¤• पà¥à¤²à¥‡à¤Ÿ maggi, लोगों के उड़ गठहोश" # 解码为正常印地语 decoded_text = garbled_text.encode('latin1').decode('utf-8') # 解码后结果:" - 400 रुपये में एक प्लेट maggi, लोगों के एट्ट गड़ होंड़"
步骤2:翻译为英文
使用Hugging Face transformers的多语言翻译模型(避免依赖第三方API限制):
from transformers import M2M100ForConditionalGeneration, M2M100Tokenizer model = M2M100ForConditionalGeneration.from_pretrained("facebook/m2m100_418M") tokenizer = M2M100Tokenizer.from_pretrained("facebook/m2m100_418M") # 设置源语言为印地语(hi),目标语言为英文(en) tokenizer.src_lang = "hi" encoded_hi = tokenizer(decoded_text, return_tensors="pt") generated_tokens = model.generate(**encoded_hi, forced_bos_token_id=tokenizer.get_lang_id("en")) english_text = tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)[0] print(english_text) # 输出示例:" - 400 rupees a plate of maggi, people's anger is high"
问题3:Hinglish混合文本转英文
Hinglish是罗马化印地语+英文的混合,推荐使用专门的多语言翻译模型,或指定源语言为印地语让翻译工具识别罗马化内容:
方案1:使用transformers模型
from transformers import pipeline translator = pipeline("translation", model="facebook/m2m100_418M") # 示例Hinglish文本 hinglish_text = "ye to kuch nahi, do you remember the free cars you get with bournvita which had a winder too to accelerate those cars 😊" # 强制源语言为hi(罗马化印地语会被模型识别),目标语言为en result = translator(hinglish_text, src_lang="hi", tgt_lang="en") print(result[0]['translation_text']) # 输出示例:"This is nothing, do you remember the free cars you got with Bournvita which also had a winder to accelerate those cars 😊"
方案2:使用googletrans(需注意版本兼容性)
from googletrans import Translator translator = Translator() # 手动指定源语言为印地语(hi),避免自动检测错误 result = translator.translate(hinglish_text, src='hi', dest='en') print(result.text)
内容的提问来源于stack exchange,提问作者RISHAV BHARDWAJ
相关产品推荐
相关产品推荐

