IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Calcul scientifique Python Discussion :

TFIDF : AttributeError


Sujet :

Calcul scientifique Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 25
    Points : 18
    Points
    18
    Par défaut TFIDF : AttributeError
    Bonjour,
    Je voudrais calculer le TF.IDF pour calculer le poids sémantique de chaque terme d'un texte. J'ai un petit programme dans lequel il y a la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def tfidf(word, document, documentList):
        return (tf(word,document) * idf(word,documentList))
    if __name__ == '__main__':
        documentList = [glob.glob('C:\\Documents and Settings\\*.*')]
        documentList.append(open('*.*','r'))
         words = {}
    documentNumber = 0
    for word in documentList[documentNumber].split(None):
        words[word] = tfidf(word,documentList[documentNumber],documentList)
    J'ai deux problèmes : 1/ j'ai un coprus de plusieurs textes mais je ne sais pas si ma ligne "documentList.append(open('*.*','r'))" me permet de prendre en compte tous les textes et 2/ j'ai une erreur de type "for word in documentList[documentNumber].split(None):AttributeError: 'list' object has no attribute 'split' . Je me creuse la tête de puis un moment sans trouver la solution... est-ce que quelqu'un pourrait m'aider SVP ? Merci.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    J'ai modifié un peu mon code avec l'ajout de :
    for document in os.listdir('path'):
    fichier = open(document,'r')
    content= fichier.readlines()
    Pour lire tous les fichiers de mon répertoire.

    Maintenant, l'erreur initiale concernant le split a disparu pour être remplacé par "IndexError: list index out of range" C'est donc apparemment un problème de liste mais je ne comprends pas trop où ça cloche...

  3. #3
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Utilise le débuggeur pour savoir quelle est la liste qui plante.

    Ton premier bug est que documentList = [glob.glob('C:\\Documents and Settings\\*.*')] retourne une liste, tu veux sans doute ôter le [] pour avoir une liste de chaînes de caractères !

Discussions similaires

  1. copy.deepcopy et AttributeError
    Par quiscoul dans le forum Général Python
    Réponses: 2
    Dernier message: 06/11/2008, 08h03
  2. AttributeError: class 'org.python.modules.os'
    Par capello123 dans le forum Général Python
    Réponses: 1
    Dernier message: 10/12/2007, 17h06
  3. AttributeError - Gestion des erreurs
    Par LLEJEUNE1 dans le forum Général Python
    Réponses: 4
    Dernier message: 19/06/2007, 21h45
  4. Probleme : AttributeError: 'tuple' object has no attribute
    Par MrGecko dans le forum Général Python
    Réponses: 1
    Dernier message: 27/05/2007, 09h59
  5. Réponses: 2
    Dernier message: 26/05/2006, 14h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo