繁体   English   中英

解包值过多时出错(expected2)

[英]Getting error with too many values to unpack (expected2 )

我想从我的函数中返回两个不同的值如何重写我的代码以在两个不同的变量中返回这两个值。

所以我得到这个错误:


Traceback (most recent call last):
  File "features.py", line 300, in <module>
    fea1, fea2 = build_feature_matrix_S(sentences)
ValueError: too many values to unpack (expected 2)

这里的代码

def build_feature_matrix_S(documents):

    feature_type = ['frequency','tfdif']
    #feature_type = feature_type.lower().strip()

    for f in feature_type:

        if feature_type == 'frequency':
            vectorizer_freq = CountVectorizer(tokenizer = tokenize_lemmatize_spacy, binary=False, min_df=5, ngram_range=(1, 2))
            feature_matrix_freq = vectorizer_freq.fit_transform(documents)
            feature_freq = pd.DataFrame(feature_matrix_freq.todense(), columns = vectorizer_freq.get_feature_names())

            return feature_freq

        else:

            vectorizer_tfidf = TfidfVectorizer(tokenizer = tokenize_lemmatize_spacy, min_df=5, ngram_range=(1, 2))
            feature_matrix_tfidf = vectorizer_tfidf.fit_transform(documents)
            feature_tfidf = pd.DataFrame(feature_matrix_tfidf.todense(), columns = vectorizer_tfidf.get_feature_names())

            return feature_tfidf

fea1, fea2 = build_feature_matrix_S(sentences)

print(fea1, fea2)

在这一行中,

fea1, fea2 = build_feature_matrix_S(sentences)

python 期望返回 2 个变量,一个元组,并且函数 build_feature_matrix_S() 中的两个 return 语句都没有这样做,返回超过 2 个。

    feature_freq = pd.DataFrame(feature_matrix_freq.todense(), columns = vectorizer_freq.get_feature_names())

    return feature_freq

或者

            feature_tfidf = pd.DataFrame(feature_matrix_tfidf.todense(), columns = vectorizer_tfidf.get_feature_names())

            return feature_tfidf

因此错误。

在您的 if, else 语句中,您只返回 1 个变量。 您可以像这样从函数返回两个变量:

return var1, var2

因此你的函数可以写成这样:

def build_feature_matrix_S(documents):

    # part 1:
    vectorizer_freq = CountVectorizer(tokenizer = tokenize_lemmatize_spacy, binary=False, min_df=5, ngram_range=(1, 2))
    feature_matrix_freq = vectorizer_freq.fit_transform(documents)
    feature_freq = pd.DataFrame(feature_matrix_freq.todense(), columns = vectorizer_freq.get_feature_names())

    # part 2:
    vectorizer_tfidf = TfidfVectorizer(tokenizer = tokenize_lemmatize_spacy, min_df=5, ngram_range=(1, 2))
    feature_matrix_tfidf = vectorizer_tfidf.fit_transform(documents)
    feature_tfidf = pd.DataFrame(feature_matrix_tfidf.todense(), columns = vectorizer_tfidf.get_feature_names())

    return feature_freq, feature_tfidf

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM