"строковые индексы должны быть целыми числами" TF-IDF vectorizer - PullRequest
0 голосов
/ 02 октября 2018

Я выполняю TF IDF с помощью sickit-learn, и мне удавалось запускать эту функцию до тех пор, пока я не выполнил обновление sickit learn до версии 2.0.0. Теперь я получаю следующую ошибку:

TypeError: string indices must be integers

хотя я ничего не изменил в своем коде!

from scipy.sparse import hstack, csr_matrix
print("\n[TF-IDF] Term Frequency Inverse Document Frequency Stage")
english_stop = set(stopwords.words("english"))

tfidf_para = {
    "stop_words": english_stop,
    "analyzer": "word",
    "token_pattern": r'\w{1,}',
    "sublinear_tf": True,
    "dtype": np.float32,
    "norm": "l2",
    #"min_df":5,
    #"max_df":.9,
    #"use_idf ":False,
    "smooth_idf":False
}
def get_col(col_name): return lambda x: x[col_name]
vectorizer = FeatureUnion([
        ("description",TfidfVectorizer(
            ngram_range=(1, 2),
            max_features=16000,
            **tfidf_para,
            use_idf =False,
            preprocessor=get_col("description"))),
        ("title",TfidfVectorizer(
            ngram_range=(1, 2),
            **tfidf_para,
            use_idf =False,
            #max_features=7000,
            preprocessor=get_col("title")))
    ])

start_vect=time.time()
vectorizer.fit(df.loc[df.index,:].to_dict("records"))
ready_df = vectorizer.transform(df.to_dict("records"))
tfvocab = vectorizer.get_feature_names()
print("Vectorization Runtime: %0.2f Minutes"%((time.time() - start_vect)/60))

Вот пример того, как формируется мой словарь:

[{'title': 'title1',
  'description': 'description1'},
 {'title': 'title2 ',
  'description': 'description2'}]

Ребята, вы понимаете, чтоЯ здесь скучаю?Спасибо !:)

...