• Journal d'Alexandra LI COMBEAU LONGUET

    Bonjour,

    C'est Alexandra LI COMBEAU LONGUET. C'est ici que je vais tenir mon journal de bord du cours de M1 TAL "Projet Encadré". Il y aura mes exercices ainsi que mon avancement sur le projet.

  • Avec les codes mises en oeuvres par Kristen, j'ai aussi crée les corpus pour le chinois et le français.

    Lors du nettoyage, j'ai cependant rencontré un problème: il restait des liens d'images sous la forme [ titredel'image . png ][ titredel'image .  jpg ] ou [ titredel'image.jpeg ].

    Je les ai donc supprimé manuellement avec l'aide de la fonction "recherche" de notepad++.

    Après cela, j'ai fait des nuages de mots avec Word Art.

    Nuage de mots du corpus chinois:

     

    Nuage de mots du corpus français (après la suppression de stop word tel que "le", "la", "ce", "cette", "de", "du", présent en grand nombre dans le corpus, rendant le nuage de mots moins révélatif):

    On remarque beaucoup de point commun entre ces deux nuages de mots. Il y a "parent" (父母,家长), "hélicoptère" (直升机) "enfant" (孩子), "vie" (生活), "moi" (自己), "peut"(可以), "comment" (什么), "mère"(妈妈), "éducation" (教育), bébé (宝宝). Ces ressemblances entre ces deux corpus sont normales, puisqu'ils parlent tous tous des "parents hélicoptères", désignant des parents qui "plane" au dessus de leur enfant pour le guider vers le "meilleur" avenir qui soit. 

    Cependant, le corpus français se préoccupe plus de la "famille", de la "France". Mais aussi de la "santé", du "COVID". On peut donc supposer que le corpus français fait référence au concept des "parents hélicoptères" de France, remis au goût du jour avec le Covid et le premier confinement (avec les cours en distenciel depuis la maison, etc.).

    De son côté, le corpus chinois se préoccupe de la Chine (中国), des Etats-Unis D'Amérique (美国). En effet, le terme "parent hélicoptère" a été théorisé en Amérique par Foster Cline et Jim Fay en 1990, avant d'être utilisé un peu partout dans le monde dont la Chine. On peut supposer également que le corpus chinois fait une comparaison de ce phénomène entre la Chine et l'Amérique. 

    De plus, le corpus chinois évoque possiblement les problèmes éventuelles engendrés par ce phénomène : 问题 (question, problème),过度 (excessif),学习 (étude scolaire),独立 (solitude),帮助 (aide, aider). 


    votre commentaire
  • Pour tokeniser le chinois, j'ai regardé sur le blog des années passées les propositions des élèves. Il y avait deux solutions majeurs : l'utilisation de jieba ou de stanford segmenter. Sur un blog consulté, un étudiant à tester les deux propositions : d'après ce dernier, la tokenization offerte par jieba serait plus efficace et plus en accord avec la tokenization chinoise.

    J'ai donc choisi d'utiliser jieba. Pour cela, j'ai préalablement installé jieba sur mon terminal ubuntu avec la commande suivante :

    pip3 install jieba

     

    En suite, j'ai écris un programme python qui permet d'utiliser jieba :  

    # encoding=utf-8

    #importer l'argument pour le scripte, trouver le bon fichier txt à segmenter
    import sys
    fichier = sys.argv[1]

    #ouvrir le texte brut et le mémoriser comme variable
    fichier_ouv = open (fichier, "r", encoding="utf-8")
    fichier_read = fichier_ouv.read()
    fichier_ouv.close()

    import jieba
    #ajouter 真升机父母 au dictionnaire temporairement pour que jieba le considère comme #un seul mot
    #jieba.suggest_freq('真升机父母', True)

    #segmenter le texte avec jieba
    seg_list = jieba.cut(fichier_read, cut_all=False)

    #écrire le résultat dans un nouveau fichier
    f = open("fichier_seg.txt", 'w+')
    print (" ".join(seg_list), file=f)
    f.close()

     

    J'ai ensuite intégré ce programme python à mon programme bash.

    python3 ./PROGRAMMES/seg.py ./DUMP-TEXT/utf8_"$compteur_tableau-$compteur".txt;
    mv fichier_seg.txt ./CORPUS-SEG/"$compteur_tableau-$compteur".txt;

    Voici le résultat de la tokenization de la première URL:

    Télécharger « 1-1.txt »

     Un extrait :

    五湖四海 近年来 , 直升机 父母 ( Helicopter Parenting ) 这个 形容词 开始 盛传 。 直升机 父母 是 指 过分 介入 儿女 生活 , 保护 或是 干预 其 生活 的 父母 , 他们 就 像 直升机 一般 , 不时 在 儿女 身边 盘旋 。 教育部 几周 前 在 面 簿 上 解释 , 为何 家长 应该 放弃 这 类 教育 方式 。 国专 长老会 小学 、 武吉知 马 小学 , 以及 一些 政府 学校 为了 禁止 父母 过度 关心 孩子 , 甚至 在 校园内 放 置 告示牌 , 劝 请 父母 切勿 帮 孩子 把 忘 了 带 的 东西 送到 学校 。 把 孩子 照顾 得 无微不至 , 不是 错 , 但是 过度 溺爱 、 超过 界限 的 疼爱 , 对 孩子 并 没有 好处 。 天下父母 心 、 望子成龙 、 望女成凤 — — 这些 形容词 都 说明 家长 无不 关心 自己 的 孩子 、 希望 他们 得到 最棒 的 福利 和 待遇 。 然而 在 这个 竞争 越来越 激烈 的 社会 , 一直 保 护 孩子 , 到底 是 利 还是 弊 ? 作为 教育工作者 , 我见 过 不同 类型 的 直升机 父母 — — 孩子 太忙 , 出于 疼惜 而 帮 他们 做 补习 作业 ; 也 有 家长 每周 质问 孩子 受 教育 的 进展 , 连 作业簿 的 说明 少 了 空格 也 要 投诉 。 我们 当然 希望 家长 能 放手 , 不要 做 直升机 父母 , 基于 以下 四个 理由 :

    2 commentaires
  • Lors de cette séance, nous avons continuer à ajouter des traitements à la suite de ceux existant:

    On a extrait des contextes réduits au motif (1 ligne avant et 1 ligne après)

    # 1. construire des morceaux de corpus
    egrep -C 2 -i "$motif" ./DUMP-TEXT/utf8_"$compteur_tableau-$compteur".txt > ./CONTEXTES/utf8_"$compteur_tableau-$compteur".txt;
    # 2. donner à voir ces contextes au format HTML
    perl ./PROGRAMMES/minigrepmultilingue-v2.2-regexp/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXT/utf8_"$compteur_tableau-$compteur".txt ./PROGRAMMES/minigrepmultilingue-v2.2-regexp/motif-2020.txt ;
    # attention il faut "sauvegarder" le résultat
    mv resultat-extraction.html ./CONTEXTES/"$compteur_tableau-$compteur".html;
    #


    On a crée un index hiérarchique de chaque TEXT-DUMP

    egrep -i -o "\w+" ./DUMP-TEXT/utf8_"$compteur_tableau-$compteur".txt | sort | uniq -c | sort -r -n -s -k 1,1 > ./DUMP-TEXT/index_"$compteur_tableau-$compteur".txt ;


    On a aussi crée un index de digramme:

    tr " " "\n" < ./DUMP-TEXT/utf8_"$compteur_tableau-$compteur".txt | tr -s "\n" | egrep -v "^$" > index1.txt ;
    tail -n +2 index1.txt > index2.txt;
    paste index1.txt index2.txt | sort | uniq -c | sort -r -n -s -k 1,1 -r > ./DUMP-TEXT/bigramme_"$compteur_tableau-$compteur".txt ;

    On remarque que ces traitements additionnels ne marche pas bien pour le chinois. En effet, il faut tokenizer les textes. On verra ça dans un prochain billet de blog.   

    Cependant, voici déjà un aperçu visuel du tableau:  

    Télécharger « tableau.html »


    votre commentaire
  • Durant ce cours, on a mis en place dans notre programme deux choses:

    1. un traitement pour tester le bon déroulement de la récupération d'une URL par la commande curl  

    2. un traitement pour récupérer l'encodage d'une URL 

     

    Pour cela, on a utilisé des options de la commande curl.

     

    Premièrement, avec l'option -w %{http_code}, on a récupéré la valeur du code HTTP . Les code HTTP sont les résultats des requêtes envoyées par curl aux sites internet.  Lorsque la valeur est 200, alors la requête s'est bien passé. En revanche, si le la valeur du code HTTP est autre, alors la requête s'est mal passé. 

    codeHttp=$(curl -o ./PAGES-ASPIREES/"$compteur_tableau-$compteur".html $ligne -w %{http_code}) 

     

    Lorsque la récupération s'est bien déroulée, donc que la valeur du code HTTP est 200, on procède à la récupération de l'encodage des sites.

    Pour le moment, on s'est intéressé à la récupération des sites encodés en UTF-8, puisque ces derniers ne demanderont pas traitements spécifiques. On récupère donc l'encodage avec l'option -I de la commande curl. Après observation des charset des différents sites, on remarque que l'encodage est soit noté utf-8 soit UTF-8. On fait donc un pipe pour ensuite uniformiser la récupération de l'encodage.

    encodageURL=$(curl -I $ligne | egrep -i "charset" | cut -f2 -d= | tr [a-z] [A-Z] | tr -d "\r");

     On peut maintenant procéder à la récupération du contenu des sites encodés en UTF-8  où curl à bien récupéré les URLs. Pour cela, on utilise: la commande lynx -dump -nolist.

    lynx -dump -nolist -assume_charset="UTF-8" -display_charset="UTF-8" ./PAGES-ASPIREES/"$compteur_tableau-$compteur".html > ./DUMP-TEXT/"$compteur_tableau-$compteur".txt;

    A la fin de la séance, on a commencé à compter les occurrences d'un motif. Pour cela, on a crée une variable motif dont le contenu sera saisi en argument lors de l'excécution du programme. Puis, on a crée un compteur qui compte les occurrences du motifs trouvés avec la commande egrep (la commande egrep permet de chercher des motifs dans un fichier).

    compteurMotif=$(egrep -o -i $motif ./DUMP-TEXT/"$compteur_tableau-$compteur".txt | wc -l);

     

    Voici le programme réalisé en cours: Télécharger « projet-2020-11-04.sh »

     

    Il faut également réfléchir à comment traiter les sites non encodés en UTF-8 ou bien aps reconnu comme de l'UTF-8 !


    votre commentaire
  • L'objectif de la séance: créer un programme qui avec une liste d'URLS, créer un tableau dans une page html. Ce tableau a trois colonnes: numéro de ligne de l'URL, lien de l'URL, ainsi qu'un lien interne vers la page html aspirée. Pour chaque fichier d'urls, il faut un tableau html.

    On précise en commentaire comment exécuter le programme, puis on déclare les arguments en tant que variable dans le programme. 

    #!/usr/bin/bash
    #bash ./PROGRAMMES/projet.sh ./URLS ./TABLEAUX/tableau.html
    #input du programme : NOM DE DOSSIER est donné en premier argument
    #output du programme : TABLEAU HTML est donné en second argument
    dossierURL=$1;
    montableau=$2;


    On crée la page html avec l'entête de cette dernière:

    echo "<html><head><meta charset=\"utf8\"></head><body>" > $montableau; 

    On initialise le compteur des tableau:

    compteur_tableau=1; 

    Avec une boucle for, on va ensuite parcourir la url de chaque fichier. dans cette boucle for, on va:

    1. Pour chaque fichier d'URLs, on va créer un nouveau tableau avec un titre
    2. Initialiser le compteur d'URLS
    3. Tant que le programme lit le fichier d'URL ligne par ligne:
      • Traiter l'URL: pour le moment, cela consiste à "aspirer" la page html associé à l'URL avec la commande curl.
      • Écrire dans le tableau final: le numéro de l'URL, le lien de l'URL, ainsi que le lien interne de la page aspirée
      • Incrémenter le compteur d'URL 
    for fichier in $(ls $dossierURL); 
            do
            echo $fichier;
            echo "<table border="10px">" >> $montableau; 
             compteur=1; 
             echo "<tr><th colspan=\"3\">TABLEAU $compteur_tableau</th></tr>" >> $montableau ; 
             compteur_tableau=$((compteur_tableau+1)); 
             while read ligne
                      do
                       curl $ligne -o ./PAGES-ASPRIREES/$compteur_tableau$compteur.html;
                       echo "<tr><td>$compteur</td><td><a href=\"$ligne\" target=\"_blank\">$ligne</a>                                </td><td><a href=\"../PAGES-ASPIREES/$compteur_tableau$compteur\">Page                                  aspirée numero: $compteur_tableau$compteur</a></td></tr>" >> $montableau; 
                        compteur=$((compteur+1)); 
                       done < ./$dossierURL/$fichier 
              echo "</table>" >> $montableau ; 
              done ;

    On finit la sortie de la page html:

    echo "</body></html>" >> $montableau ; 

    Pour télécharger le programme réalisé:  Télécharger « projet.sh »

    Attention: on remarque que certaines page html ne sont pas correctement aspirées ou ne sont pas aspirées par le programme.


    votre commentaire


    Suivre le flux RSS des articles de cette rubrique
    Suivre le flux RSS des commentaires de cette rubrique