web-dev-qa-db-fra.com

Itérable sur les documents en texte brut attendus, objet chaîne reçu

J'essaie actuellement de construire un classifieur naïf de Bayes comme mentionné dans ce lien. En référence à la ligne

X_new_tfidf = tfidf_transformer.transform(X_new_counts)

sous la sous-rubrique Training the Classifier, j'avais dans mon code une ligne similaire, X_new_counts = count_vect.transform(input.plot_movie), qui devrait prendre une valeur itérable en tant qu'entrée de la fonction de transformation. Le input est un enregistrement d'un DataFrame de type pd.Series Et contient les entrées suivantes, parmi lesquelles j'envoie input.plot_movie Comme entrée de la fonction de transformation:

enter image description here

Cependant, j'obtiens l'erreur suivante: Iterable over raw text documents expected, string object received

Comment puis-je corriger cette erreur? J'ai également fait référence à this answer où la personne dit que s est une variable, car une chaîne lui a été attribuée. Je suis aussi tombé sur ce lien où un TypeError: 'String' object is not iterable Est rencontré. Est-ce que j'ai râté quelque chose? Les liens semblent se contredire.

EDIT: Je viens de me rendre compte que input.plot_movie Est de type unicode et j'ai décidé de le convertir en chaîne. Je rencontre à nouveau la même erreur.

12
thegreatcoder

La solution à ce problème est que l'entrée est simplement une chaîne, mais que vous avez besoin d'une liste (ou d'une liste itérable) contenant un seul élément (qui n'est rien d'autre que la chaîne elle-même).

L'erreur peut être supprimée en ajoutant la ligne suivante:

input=[input]

avant

X_new_counts = count_vect.transform(input.plot_movie)
23
thegreatcoder