【问题标题】:How to fix json.decoder.JSONDecodeError when I use googletrans API?使用 googletrans API 时如何修复 json.decoder.JSONDecodeError?
【发布时间】:2019-05-27 17:25:48
【问题描述】:

我正在尝试将一系列推文从意大利语翻译成英语。它们包含在一个 csv 文件中,所以我用 pandas 提取它们来计算 Vader 的情绪。不幸的是,我收到了这个错误 json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)。

我已尝试从推文中删除表情符号并使用其他帖子中指出的 vpn,但它不起作用。

def remove_emoji(text):
    return emoji.get_emoji_regexp().sub(u'', text)

def extract_emojis(str):
  return ''.join(c for c in str if c in emoji.UNICODE_EMOJI)

def clean_emojis(text):
    toreturn = ""
    for c in text:
        if c not in emoji.UNICODE_EMOJI:
            toreturn += c
    return toreturn

def sentiment_analyzer_scores(text, engl=True):
    if engl:
        translation = text
    else:
        try:
            emojis = extract_emojis(text) 
            text = clean_emojis(text)

            demoji.replace(text)
            text = remove_emoji(text)
            text = text.encode('ascii', 'ignore').decode('ascii')

            # translator= Translator(from_lang="Italian",to_lang="English")
            # translation = translator.translate(text)
            translation = translator.translate(text).text
            # print(translation)

        except Error as e:
            print(text)
            print(e)
            pass

    text = translation + emojis
    # print(text)
    score = analyser.polarity_scores(text)
    return score['compound']

def anl_tweets(lst, engl=True):
    sents = []
    id = 0
    for tweet_text in lst:
        try:
            sentiment = sentiment_analyzer_scores(tweet_text, engl)
            sents.append(sentiment)
            id = id + 1
            print("Sentiment del tweet n° %s = %s" % (id, sentiment))

        except Error as e:
            sents.append(0)
            print(e)
    return sents

#Main
translator = Translator()
analyser = SentimentIntensityAnalyzer()
file_name = 'file.csv'
df = pd.read_csv(file_name)
print(df.shape)

# Calculate Sentiment and add column
df['tweet_sentiment'] = anl_tweets(df.tweet_text, False)
# Save the modifies
df.to_csv(file_name, encoding='utf-8', index=False)

【问题讨论】:

    标签: python pandas google-translate sentiment-analysis vader


    【解决方案1】:

    这与表情符号无关,Google 对您可以翻译的字符数有限制,当您达到该限制时,Google API 只会阻止您。

    了解配额here 简单的解决方案是将您的脚本分成多个块并使用代理服务器/不同的 IP 地址。

    另一个选项是https://pypi.org/project/translate/ (虽然没试过)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-06
      • 1970-01-01
      • 2020-12-04
      • 2019-06-10
      • 2021-04-28
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多