ArnaudFerre / CONTES

CONcept-TErm System
Apache License 2.0
9 stars 2 forks source link

Bug in main_train.py #3

Closed rbossy closed 6 years ago

rbossy commented 6 years ago
[2018-06-11 17:00:05.424][contes-train.train.on-train]     Traceback (most recent call last):
[2018-06-11 17:00:05.424][contes-train.train.on-train]       File "/projet/maiage/work/textemig/software/CONTES/module_train/main_train.py", line 154, in <module>
[2018-06-11 17:00:05.424][contes-train.train.on-train]         Train().run()
[2018-06-11 17:00:05.425][contes-train.train.on-train]       File "/projet/maiage/work/textemig/software/CONTES/module_train/main_train.py", line 141, in run
[2018-06-11 17:00:05.425][contes-train.train.on-train]         regression_matrix, ontology_vector, _ = train(word_vectors, terms, attributions, ontology)
[2018-06-11 17:00:05.425][contes-train.train.on-train]       File "/projet/maiage/work/textemig/software/CONTES/module_train/main_train.py", line 99, in train
[2018-06-11 17:00:05.425][contes-train.train.on-train]         X_train, Y_train = getMatrix(dl_terms, vstTerm, dl_associations, vso)
[2018-06-11 17:00:05.425][contes-train.train.on-train]       File "/projet/maiage/work/textemig/software/CONTES/module_train/main_train.py", line 70, in getMatrix
[2018-06-11 17:00:05.425][contes-train.train.on-train]         X_train[i] = vstTerm[termForm]
[2018-06-11 17:00:05.425][contes-train.train.on-train]     IndexError: index 747 is out of bounds for axis 0 with size 747
rbossy commented 6 years ago

https://github.com/ArnaudFerre/CONTES/blob/e3beacb007a159bbf92b0040e1498043c1f52e3b/module_train/main_train.py#L70

rbossy commented 6 years ago

Une trace plus complète pour t'aider... foo.txt

rbossy commented 6 years ago

J'ai ajouté un break après i += 1. Je suppose que ça signifie que CONTES n'apprend que sur la première attribution de chaque terme.

Si tu valides, je commit-push. Sinon j'attends.

rbossy commented 6 years ago

@ArnaudFerre est-ce que tu peux vérifier que c'est correct, stp:

39466138f814678d42b96849904ae3595a9f00ab

ArnaudFerre commented 6 years ago

Le bug relié à cet issue sur GitHub a été directement corrigé par l’ajour d’un break si je comprends bien. A part le break, le reste des modifications apportées ne me semble pas sujet à problème en tout cas.

Du coup, le break fait en effet que pour chaque terme, même s’il est à normaliser par plusieurs concepts, on n’en prend qu’un un peu au pif. C’était bien comme ça que j’avais simplifié le problème dans mes premières implémentations, donc on ne dénature rien. Par contre, vu le code, je voulais sans doute préparer une évolution simple où on aurait autant d’exemples d’entraînement que d’associations possibles (ce qui préparerait certainement mieux à des propositions de normalisations multiples).

Et c’est là que ça devait planter en effet, car j’initialise les matrices d’entraînement avec le nombre de termes et non le nombre d’associations possibles… Du coup, je pense qu'il faudrait juste remplacer : nbTerms = len(dl_terms.keys()) par : for id_term in dl_associations.keys(): for id_concept in dl_associations[id_term]: nbAssociations += 1 Et X_train = numpy.zeros((nbTerms, sizeVST)) Y_train = numpy.zeros((nbTerms, sizeVSO)), par : X_train = numpy.zeros((nbAssociations, sizeVST)) Y_train = numpy.zeros((nbAssociations, sizeVSO)) Je peux le tester si j'ai des plans fonctionnels d'AlvisNLP/ML (à moins que ceux que j'ai déjà ici soient ok pour la partie train).

rbossy commented 6 years ago

Ce n'est pas pressé, à mon avis. Je voulais juste que tu confirmes mon interprétation sur le break.

ArnaudFerre commented 6 years ago

OK, c'est confirmé dans ce cas.