Python: неразрешенная ссылка в try catch - PullRequest
0 голосов
/ 18 января 2020

Я пытаюсь использовать аккумулятор (переменную) внутри кроме / else:

Обновленный код

classifier = UtteranceClassifier()

sc = SparkContext("local[2]")

offensives = sc.accumulator(0)
total = sc.accumulator(0)

# Create Spark session
def get_spark_session():
    return SparkSession \
        .builder \
        .master(master) \
        .appName(appName) \
        .getOrCreate()


def classify(utterance):
    global offensives
    global total

    total += 1
    print("total: ", total)
    try:
        return classifier.classify(utterance)
    except Exception:
        offensives += 1
        print("offensives: ", offensives)



def main():
    spark: SparkSession = get_spark_session()

    ....

    # Clean text
    df_clean = df.select((f.lower(f.regexp_replace('utterance', "[^a-zA-Z\\s]", "")).alias('utterance_text')))

    # Tokenize text
    tokenizer = Tokenizer(inputCol='utterance_text', outputCol='utterance_token')
    df_words_token = tokenizer.transform(df_clean).select('utterance_token')

    # Remove stop words
    remover = StopWordsRemover(inputCol='utterance_token', outputCol='utterance_clean')
    df_no_stopwords = remover.transform(df_words_token).select('utterance_clean')
    #df_no_stopwords.show(truncate=False)

    classify_udf = f.udf(classify, StringType())
    # Classify utterance
    df_no_stopwords = df_no_stopwords.withColumn("offensive", classify_udf(f.col('utterance_clean')))
    df_no_stopwords.show(truncate=False)

    print("Offensives: ", offensives.value)
    print("Total: ", total.value)

У меня такая ошибка компиляции как для переменных общего значения, так и для атак:

Информация о проверке: эта проверка обнаруживает имена, которые должны быть разрешены, но не ...

Ответы [ 2 ]

1 голос
/ 18 января 2020

Python не имеет оператора ++. Вместо этого вы можете использовать оператор +=:

def classify(utterance):
    try:
        classifier.classify(utterance)
    except Exception:
        num_of_offensive += 1
    else:
        total += 1
0 голосов
/ 18 января 2020

Вы путаете if / else с попыткой / исключением. Сделайте это так:

    def classify(utterance):
        try:
            classifier.classify(utterance)
            total += 1
        except:
            num_of_offensive += 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...