Itérable brut des documents de texte prévu, la chaîne de l'objet reçu
Je suis en train d'essayer de construire un classificateur de Bayes naïf comme mentionné dans de ce lien.
Se référant à la ligne
X_new_tfidf = tfidf_transformer.transform(X_new_counts)
en vertu de la Training the Classifier
sous-position, j'ai eu une ligne similaire, X_new_counts = count_vect.transform(input.plot_movie)
dans mon code qui doit prendre un objet iterable comme entrée pour la fonction de transformation. Le input
est un enregistrement à partir d'un DataFrame et est de type pd.Series
et contient les entrées suivantes, à partir de laquelle je envoyer input.plot_movie
comme l'entrée à la fonction de transformation:
Cependant, j'obtiens l'erreur suivante: Iterable over raw text documents expected, string object received
Comment puis-je corriger cette erreur? J'ai aussi fait référence à cette réponse où la personne dit que s
est un objet iterable, car il a été affecté à une chaîne. Je suis aussi tombée sur ce lien où un TypeError: 'String' object is not iterable
est rencontré. Suis-je manqué quelque chose? Les liens semblent contredire les uns les autres.
EDIT:
Je viens de réaliser que input.plot_movie
est de type unicode et a décidé de le convertir en une chaîne de caractères. Je rencontre la même erreur à nouveau.
- Avez-vous réellement lu ces liens? La coutume
class String
définis dans ce billet de blog n'est pas la même chose questr
. Et c'est tout sur la façon de modifierclass String
de sorte qu'il est itératif, de la même façonstr
l'est déjà. (Et c'estunicode
.) - Mais de toute façon, une chaîne de caractères (
str
ouunicode
) est un objet iterable plus de caractères, pas un objet iterable sur "texte brut documents", quelle que soit ceux sont. Sans voir ton code, il est très difficile de deviner ce que vous faites mal, mais ma première hypothèse serait quelque chose comme ceci: La fonction veut une liste de fichiers ou de chaînes de caractères ou certains type d'objet retourné par une fonction de la bibliothèque, et vous avez un répertoire plein de fichiers que vous avez pu lire ces objets, mais au lieu de lire ces fichiers dans une liste, vous êtes juste de passage le nom du répertoire. - Je ne suis pas le passage d'un nom de répertoire n'importe où. Je suis en train de passer une chaîne de caractères/texte en entrée pour faire une prédiction, comme dans le premier lien, ils ont passé un tableau de chaînes à prévoir.
- J'ai dit que c'était juste un sauvage deviner, parce que vous n'avez pas montré votre code ou expliqué ce que vous êtes de passage. Si vous voulez que nous pour ne pas faire des suppositions sauvages, merci de lire un minimum de reproductibles exemple dans l'aide et d'en faire un responsable de la question.
- Mais en attendant: à quoi vous fait penser que vous pouvez passer d'une chaîne à une fonction qui attend un tableau de chaînes de caractères? Qui, normalement, ne fonctionne pas—et quand il ne fonctionne pas, normalement il traite la chaîne comme une liste de caractères uniques, ce qui n'est pas très utile. Partout où vous passez la chaîne dans le code que vous n'avez pas indiqué de nous, pourquoi ne pas passer un élément de tableau avec une chaîne en elle, à la suite de quel exemple vous êtes à la suivante?
- La droite.Je vais essayer ça.
- Il a travaillé, merci! Pour info, j'ai vraiment pensé à cette explication a été auto - suffisante. J'avais posté la ligne où j'avais rencontré une erreur et a également mentionné sur le type de données, qui est où le problème se pose. Et, aucun fichier n'a été réellement lu sauf à importer l'ensemble de données.
Vous devez vous connecter pour publier un commentaire.
La solution à ce problème, c'est parce que l'entrée est juste une Chaîne de caractères, mais ce qui est nécessaire est une liste (ou un objet iterable) contenant un seul élément (qui n'est rien, mais la Chaîne elle-même).
L'erreur peut être retiré en ajoutant la ligne suivante:
avant
input=[input, ]