Я обучил чат-бота некоторым данным из CSV. Вся база данных tç и модель работают нормально, она может предсказывать тег предложения, но я хочу, чтобы чат-бот предсказывал тег ввода. Вот код (это конвейер sklearn):
while True:
usr_inp = input("Tú: ")
X_predict = train_test_split(usr_inp , test_size=0.1 , random_state=12)
prediction = pipeline.predict(X_predict)
print("Prediction: " , prediction)
и это дает эту ошибку:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-41-db8a012d9786> in <module>()
47 usr_inp = input("Tú: ")
48 X_predict = train_test_split(usr_inp , test_size=0.1 , random_state=12)
---> 49 prediction = pipeline.predict(X_predict)
50 print("Prediction: " , prediction)
6 frames
/usr/local/lib/python3.6/dist-packages/sklearn/feature_extraction/text.py in _preprocess(doc, accent_function, lower)
66 """
67 if lower:
---> 68 doc = doc.lower()
69 if accent_function is not None:
70 doc = accent_function(doc)
AttributeError: 'list' object has no attribute 'lower'
модель:
#Model & Pipeline
model = LogisticRegression(C=25 , solver = "saga" , max_iter=2000)
pipeline = Pipeline([("tfidf" , vectorizer) , ("clf" , model)])
pipeline.fit(X_train , X_test)
Может ли кто-нибудь помочь мне, пожалуйста? Спасибо
Ваш X_predict
, скорее всего, представляет собой список строк, поэтому не имеет атрибута lower
. Если у вас есть доступ к исходному коду pipeline.predict
, вы можете изменить его на понимание списка.
doc = [item.lower() for item in doc]
Если нет, вам следует взглянуть на документацию pipeline.predict
, которая, как я предполагаю, принимает строковый параметр. Если это так, вы можете join
список в строку