07/04
Xiaohua :
Basé sur ce qu'on a fait la semaine dernière, je commençais à
"organiser" toute la structure de mes scripts, et aussi à
concevoir la structure du fichier de sortie, aussi json que xml.
Pendant le cours,nous avons appris un nouvel objet, dataclass,
qui pourrait simplifier nos opérations de données. À travers la
pratique et l'exécution d'une série de codes, j'ai
approximativement compris la logique et la structure de
dataclass. En outre, grâce à la démonstration du prof, j'ai
saisi globalement le processus. Cependant, cette tâche comprend
plusieurs types de structures de données similaires mais
distinctes, telles que xml.etree, json, dataclass, les
dictionnaires et les listes Python, et il m'a fallu beaucoup de
temps pour clarifier les relations et les méthodes de
manipulation entre ces différents types.
J'ai choisi trankit comme outil NLP pour la génération de POS et
de lemma, mais l'exécution de cet outil crée un fichier cache
dans le dossier actuel, donc j'ai modifié le fichier gitignore
pour sauvegarder ce fichier ainsi que le dossier contenant les
corpus localement, afin de tester le code. De plus, un gros
problème de trankit est son temps de chargement relativement
lent. L'emplacement de la ligne de code
trankit.Pipeline('french') est donc très important. S'il est
placé dans une boucle for-in, le module trankit sera chargé à
chaque itération, c'est pourquoi je l'ai placé en dehors de la
boucle. Enfin, en observant les résultats, j'ai constaté que
pour certains articles contractés (des/du/aux), trankit ne
pouvait pas reconnaître leur lemma ou pos, j'ai donc écrit une
instruction if pour gérer ce problème.
{
"form": "des",
"lemma": null,
"pos": null
},
Enfin, après plusieurs ajustements, j'ai produit des fichiers
xml et js au format standard (bien sûr, en fonction de
l'extension spécifiée par l'utilisateur), mais je n'ai pas pu
trier le contenu par date.
Nous pourrons peut-être combiner les trois analyseurs
NLP(spacy,trankit,stanza) et sélectionner l'outil correspondant
en fonction de l'entrée de l'utilisateur.
10/04
Yingzi:
En me basant sur la structure des scripts de Xiaohua, j'ai
choisi d'utiliser l'outil Spacy pour effectuer l'analyse
syntaxique dans le cadre de l'exo de cette semaine. J'ai utilisé
tout à bord la fonction nlpde Spacy pour créer un objet Doc
contenant une analyse syntaxique complète du texte. :
Ensuite, j'ai parcouru chaque token du document à l'aide d'une
boucle for. Pour chaque token, j'ai extrait son lemme et sa
partie du discours à l'aide des attributs lemma_ et pos_ de
l'objet Token.
Enfin, j'ai stocké les résultats dans un dictionnaire, où chaque
clé correspond au texte brut du token, et chaque valeur est une
liste contenant le lemme et la partie du discours du token.
En plus de l'outil Spacy utilisé pour l'analyse syntaxique, j'ai
également inclus dans le script la méthode que j'ai utilisée
dans le premier exercice de la semaine 6 avec le module
feedparser. Ainsi, l'utilisateur dispose de plusieurs options
pour extraire le titre et la description de chaque article,
notamment en utilisant les modules re, etree ou feedparser.