pluriTAL – BLOG Master pluriTAL [ParisX, ParisIII, INALCO]

Projet pour projet multilingue + début du projet : les fichiers contextes sont soulignes en bash ! + qqn a 1 pgme pour découper les balises d’après lexico3?

Posted in pluriTAL by pluritaluser on 29 mai 2009

Ce que je pense faire pour le projet multilingue:

Le tableau sur les 3 mots en deux langues je vais le garder pour le projet lexico3.

Le tableau que je vais faire va avoir cette allure:

Le choix des phrases en contexte dans des corpus comparables

1 2 3 4 5 6 7 8 9 10 theme 1 mot br mot fr theme 1 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10 theme 2 theme 2 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10 theme 3 theme 3 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10 theme 1 mot br mot fr theme 1 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10 theme 2 theme 2 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10 theme 3 theme 3 1 2 3 4 5 6 7 8 9 10

Les liens pointeront vers des fichiers de contextes concaténés.

Mon lexique bilingue aura 10 entrées.

Une fois que le tableau sera fonctionnel, ce n’est pas du tout relevant, mais je vais compter le nombre de fois que je vais trouver chacun des mots dans chaque contexte concaténé (commandes trouvées sur internet).

nom@ordinateur ~
$ wc lynx-blogtal-enligne.html
1477 11817 136984 lynx-blogtal-enligne.html

nom@ordinateur ~
$ grep -cw le lynx-blogtal-enligne.html
146

grep -cw peut compter le nombre total d’occurrences d’un motif > je ne vais que utiliser cette fonction.

Problème: je ne peux pas chercher des mots accentués (accented characters) comme « potencial de ação » parce que déjà je ne peux pas les taper. La commande qui permet de savoir si on est en UTF-8 ne répond pas: env|grep LANG. Et je n’ai pas du tout compris comment combiner les accents:

nom@ordinateur ~
$ grep -cw « structur » lynx-blogtal-enligne.html
5

nom@ordinateur ~
$ grep -cw « structur? » lynx-blogtal-enligne.html
0

Rem: Pour les mots accentués, ce n’est que sur le terminal qu’ils sont invisibles, mais la requête pour l’autre tableau (lexico3) a fonctionné dans le script: egrep -i -A1 -B1 « potencial de ação » ../DUMP-TEXT/Portugais/$i.html > ../CONTEXTES/Portugais/potencial-de-acao-$i.html; j’espère seulement qu’elle continuera de fonctionner.

Après je vais choisir 1 seule phrase par mot pour chaque langue, et je vais les mettre chacune dans un fichier texte avec le retour chariot comme délimiteur et les charger dans mkalign.

Après je vais sauvegarder le résultat de mkalign, je pense qu’on peut le sauvegarder en .html, et si c’est en xml, il va falloir faire la feuille de style.

Mon domaine c’est la biologie cellulaire et les 3 thèmes c’est potentiel d’action, potentiel de repos et potentiel de membranne. Ce pourquoi j’ai dit que le décompte des mots est arbitraire, ces 3 mots sont trop liés pour être considérés comme des thèmes, ce ne sont pas des domaines d’étude, mais comme mathématiquement tout est ensemble. Donc ces mots sont des mots-ensemble !

Ce qui change c’est que wget (lynx -source) servira à expliquer la source des documents pour lexico3, et ici on ne va pas du tout parler du téléchargement des pages web en local, car j’ai trouvé mieux d’utiliser les fichiers que j’avais normalisé pour lexico3 du coup on cherchera:  » potentiel d action  » au lieu de  » potentiel d’action  » puisque il y a plusieurs façons de mettre une apostrophe.

Françoise Del Socorro

——————————————————————————————————————-

J’ai trouvé une manière de mettre les mots en gras sous bash et de faire un minimum de présentation c’est très difficile car sed n’aime pas les balises HTML. J’ai trouvé des exemples sur internet et je me suis inspirée: http://www.grymoire.com/Unix/Sed.html

Par contre si quelqu’un a un programme qui découpe les fichiers d’après les balises de lexico3 j’aimerais bien car ce serait mieux que de redécouper toutes les +de 60pages du fichier actualisé.

Je suis au début du programme mais je vais écrire autant que je peux aujourd’hui… la sortie c’est deux carrés dont le premier carré contient des liens vers des fichiers contextes soulignés ! Je veux dire: mis en gras ! souligné c’est <u></u>, moi j’ai mis <b></b>

#!/bin/bash

tablo= »../TABLEAUX/lexique-portugais-francais.html »;

echo « Creation page html pour le lexique francais – portugais »
#
# Tableau 1
echo « Téléchargement du tableau 1… »;
# Titre dans le title-bar et titre de la page.
echo « <html><head><title>Le choix des phrases en contexte dans des corpus comparables</title></head><body bgcolor=\ »#DEF7D8\ » text=\ »#DE6B3F\ » link=\ »#034B16\ » alink=\ »#C059E2\ » vlink=\ »#431C4F\ »><h2><font color=\ »#DE6B3F\ »>Le choix des phrases en contexte dans des corpus comparables</font></h2> » >> $tablo;
# Initialisation du compteur
i=1; #contextes
j=1; #contextes2theme
k=1; #contextes
#  Outils: egrep et cat.
echo « <table border=\ »4\ » BORDERCOLOR=\ »darkblue\ » cellspacing=\ »2\ » cellpadding=\ »8\ » bgcolor=\ »lightblue\ »><tr><td> » >> $tablo;

#idee pour open file en bash
#cat $a >> temp
#cat temp > $a
#cat temp >> $a

for line in `cat ../URLS/norm-repos-pt.txt`
{
(egrep -i -l « potencial de repouso » $line & egrep -i -n -A1 -B1 « potencial de repouso » $line) > ../CONTEXTES/Portugais/$i.html;
a= »../CONTEXTES/Portugais/$i.html »
sed -i ‘/[a-z]/ a\</br>’ $a; #met des br en fin de ligne
cat $a >> ../CONTEXTES/Portugais/$k.temp.html;
echo « <html> » > $a;
cat ../CONTEXTES/Portugais/$k.temp.html >> $a
echo « </html> » >> $a; #met des balises html entre les contextes
sed -i -r -e ‘s/potencial de repouso/<b>potencial de repouso<\/b>/g’ $a; #met les contexte en gras

(egrep -i -l « potencial de repouso » $line & egrep -i -A1 -B1 « potencial de repouso » $line) > ../CONTEXTES/Portugais/$j.temp.html;
cat ../CONTEXTES/Portugais/$j.temp.html >> ../THEMES/Portugais/potencial-de-repouso-pt.html;
rm ../CONTEXTES/Portugais/*\.temp.html;
echo « <a href=\ »../CONTEXTES/Portugais/$i.html\ »>$i</a> » >> $tablo;
let « i+=1 » ;
let « j+=1 » ;
let « k+=1 » ;
}
echo « </td> » >> $tablo;
echo « <td><a href=\ »../THEMES/Portugais/potencial-de-repouso-pt.html\ »>Potenciel de Repos pt</a></td> » >> $tablo;
echo « </tr></table> » >> $tablo;

echo « </body></html> » >> $tablo;
echo « terminé. »;

Françoise Del Socorro

Publicités

Petit résumé en syntaxe formelle

Posted in pluriTAL by pluritaluser on 24 mai 2009

Lisez absolument l’article de Mourad sur le XSL: Comment créez votre site de document structuré qui est dessous !!!

Si jamais vous passez par le blog lundi, je vous propose un résumé d’une grande partie des photocopies de la prof, il faut lire les photocopies aussi.

To download the summary, you can go to my bloop: http://www.mybloop.com/francoisepeace >> resume-syntaxe.odt
Or ask Foutoun or Raoum to send it to you.

Voici un extrait:

Given ; <=> \n and {a,b} <=> a or b

3.3.7 The head feature principle

According to the Head Feature Principle (HFP), the HEAD value of the mother and the HEAD value of the head-daughter are identical, so if we place an H on the right side of the head-daughter, we can simplify both the mother and the head-daughter.

Same HEAD

Examples:

mother

head-daughter

strict-transitive phrase: S → V NP:

[phrase ; VAL[COMPS itr ; SPR ]]

H[word ; VAL[COMPS str ; SPR ]] NP

nominal phrase: NP → D NOM:

[phrase ; VAL[COMPS itr ; SPR +]]

→ D H[phrase ; HEAD noun ; VAL[SPR ]]

NOM

N (word)

NP

NOM (phrase)

VP

V (word)

S

VP (phrase)

PP

VP/NOM (phrase)

Françoise Del Socorro

Comment créez votre site de document structuré

Posted in pluriTAL by pluritaluser on 23 mai 2009

Bonjour Françoise et tous mes camarades,

Suite à votre demande j’ai rédigé ce petit tutorial et espérant qu’il vous aide à faire votre site des documents structurés.

En effet, le site web qu’on doit faire nécessite nos connaissances en html/css et les connaissances qu’on doit l’acquérir à travers surtout les exercices de TP XSLT.

Dans la suite, nous allons voir un petit exemple dont nous allons créer une pages web en utilisant un fichier XML, un fichier XSLT et un fichier CSS.

Tout d’abord, on crée un fichier xml bien structuré qui contient toutes les informations et les liens qu’on veut les mettre. Vous savez le choix des balises dans le xml est arbitraire donc vous créez votre page « index.xml » comme vous voulez à condition qu’il soit bien formé.

Dans notre exemple, le document suivant que je l’ai appelé index.xml présente l’enonce et la solution d’exercice1 de TP XPATH.

Voici notre exemple index.xml :

<?xml version="1.0" encoding="UTF-8"?>
<rapport>
    <page titre="Accueil" status="nav" link="ACCUEIL.xml"/>
    <page titre="XML" status="nav" link="XML.xml"/>
    <page titre="XPATH" status="cour" link="XPATH.xml">
	        <section titre="result_bio-v3.xml">
            <exercice>
                <enonce>Rechercher tous les SN</enonce>
                <solution><code><![CDATA[//SN]]></code></solution>
            </exercice>
            <exercice>
                <enonce>Rechercher tous les SV</enonce>
                <solution><code><![CDATA[//SV]]></code></solution>
            </exercice>
            <exercice>
                <enonce>Rechercher tout élément ORGANIZATION</enonce>
                <solution><code><![CDATA[//ORGANIZATION]]></code></solution>
            </exercice>
            <exercice>
                <enonce>Rechercher tout élément LOCATION</enonce>
                <solution><code><![CDATA[//LOCATION]]></code></solution>
            </exercice>

        </section>
</page>
<page titre="XSLT" status="nav" link="XSLT.xml"/>
</rapport>

Aprés comme nous avons fait dans le TP XSLT, nous créons tous d'abord la feuille de style xslt pour cette
 page.
Pour notre exemple la feuille de style XSL est la suivante:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="html"/>

<!-- ******************* impression de la structure HTML *********************** -->

<xsl:template match="rapport">

    <html lang="fr" xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">

        <head>
            <title><xsl:value-of select="info/titre"/></title>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
           <!-- L'appel au feuille de style CSS -->
           <link rel="stylesheet" href="rapport_fichiers/style.css"/>
        </head>

        <body>
            <div id="entete">
           <h2 style="color:#000000;"> Site Documents Structurés</h2>
            </div>

            <div id="navigation">
                <xsl:call-template name="navigation"/>
            </div>

            <div id="espace_de_travail">
                <xsl:apply-templates select="page"/>
            </div>

            <div id="footer">
                Présentation faite par <b><xsl:value-of select="info/nom"/></b>,
                <xsl:value-of select="info/e-mail"/>, <xsl:value-of select="info/date"/>
            </div>
        </body>

    </html>
</xsl:template>

<!-- ******************* impression des onglets *********************** -->

<xsl:template name="navigation">
    <xsl:for-each select="page">
        <a>
            <xsl:attribute name="class">
                <xsl:value-of select="@status"/>
            </xsl:attribute>

            <xsl:attribute name="href">
                <xsl:value-of select="@link"/>
            </xsl:attribute>

            <xsl:value-of select="@titre"/>
        </a>
        <xsl:text> </xsl:text>
    </xsl:for-each>
</xsl:template>

<!-- ******************* impression page *********************** -->

<xsl:template match="page">
    <xsl:if test="@status='cour'">
        <h2><xsl:value-of select="./@titre"/></h2>
        <xsl:for-each select="section">
            <h3><xsl:value-of select="./@titre"/></h3>
            <xsl:apply-templates/>
            <h4 align="right"><a href="#entete">remonter</a></h4>
        </xsl:for-each>
    </xsl:if>
</xsl:template>

<!-- ******************* impression section *********************** -->

<xsl:template match="commentaire">

    <p><xsl:apply-templates/></p>

</xsl:template>

<xsl:template match="exercice">

    <p><b><xsl:number format="1"/>.</b><xsl:apply-templates/></p>

</xsl:template>

<!-- ******************* impression exercice *********************** -->

<xsl:template match="enonce">

    <b><xsl:value-of select="."/></b><br/>

</xsl:template>

<xsl:template match="solution">

    <p><xsl:apply-templates/></p>

</xsl:template>

<xsl:template match="prog">
    <blockquote>
        <pre>
            <xsl:apply-templates/>
        </pre>
    </blockquote>
</xsl:template>

<!-- ******************* mise en page bold/italic/code *********************** -->

Après n'oubliez pas d'ajouter l'appel au feuille de style dans le fichier index.xml comme nous voyons
dans notre exemple:
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>
Maintenant vous pouvez tester et voir que votre fichier index.xml est bien transformé.
La résultat n'est pas très agréable. C'est pour cela nous allons faire appel au css pour que notre
fichier soit beaucoup mieux.
Puisque les transformation se fait en utilisant une feuille XSLT. Donc au niveau de feuille de style XSLT
aussi qu'il faut appliquer le CSS.
Il existe 3 méthodes pour appliquer les classes CSS, la meilleur méthode consiste à créer un fichier
style.css qui contient tous les classes CSS que vous voulez l'appliquer sur stylesheet.xsl.
Afin de faire un appel à style.css dans stylesheet.xsl.
L'appel se fait en ajoutant la ligne suivante dans votre fichier stylesheet.xsl
<link rel="stylesheet" href="rapport_fichiers/style.css"/>

Voici un exemple de fichier style.css:
body
{
font-family: Verdana, Arial, sans-serif;
font-size: 11px;
padding:15px;

}

#entete
{
width:700px;
height: 100px;
margin:auto;
border-color:#5d6c79;
border-style:solid;
border-width:1px;
border-bottom-style:solid;

padding-left:15px;
padding-right:15px;
background-repeat:repeat-x;
background-position:top;
background-color:#ffffff;
}
a.nav
{
padding-left:25px;
padding-right:25px;
border-color:#5d6c79;
border-style:solid;
border-width:1px;
text-align:center;
background-color:#fdb57a;
}

a.nav:hover
{
padding-left:25px;
padding-right:25px;
border-color:#5d6c79;
border-style:solid;
border-width:1px;
text-align:center;
background-color:#ffffff;
}
Maintenant, vous avez une page web très agréable :).
Enfin si vous avez bien compris vous pouvez utilisez ce exemple pour faire vos sites.
Et comme a dit M. Fleury « n'hésitez pas à voir les travaux des années derniére »
pour inspiré et prendre des bonnes idées.
Remarque importante: Ce exemple est extrait de site de Ivan Smilauer (2006-2007)

                                     Bon courage
                                     Mourad Aouini

wget en local et lynx en local (projet multilingue)

Posted in pluriTAL by pluritaluser on 20 mai 2009

Au cas où wget ne marche pas en local, essayez: lynx -source, je n’ai trouvé aucun forum qui propose cela, mais j’ai eu l’idée parce que c’est comme cela que l’on fait avec les navigateurs comme IE ou Mozilla on peut sélectionner la source et la sauvegarder en .html
Le -term=vt100 indique le type de navigateur, on ne l’utilise que si cygwin nous le demande.

Exemples:
wget -O wget-blogtal-enligne.html https://tal-p3.wordpress.com/
wget -O wget-blogtal-enlocal.html file://localhost/cygdrive/c/cygwin/home/fran/wget-blogtal-enligne.html
lynx -source https://tal-p3.wordpress.com/ > ./lynx-blogtal-enligne.html
lynx -source -term=vt100 file://localhost/cygdrive/c/cygwin/home/fran/lynx-blogtal-enligne.html > lynx-blogtal-enlocal.html

Toutes les pages téléchargées sont pareilles !

********Rappel:
Pour poster sur le blog, le username c’est: pluritaluser et le mot de passe c’est le nom de l’endroit où on apprend le projet encadré -2008, après on fait: articles > add new, moi je fais toujours  » aperçu  » avant de  » publier  » sinon ça ne marche pas de chez moi.

Françoise Del Socorro

Devoir Loupy – RI pour le Mardi 26 Mai

Posted in pluriTAL by pluritaluser on 18 mai 2009

Aller sur Wordnet http://wordnet.princeton.edu/ > Use Wordnet Online, regarder 5 mots appartenant à un domaine assez concret et pas trop large, et essayer de voir les liens entre ces mots: synonymie, hyponymie, hyperonymie, méronymie, etc. Répondre aux questions:

  1. Quelle est la nature des liens entre ces mots ?

  2. Est-ce que le lien thématique est bien fait (au cas où on le trouve)?

    Remarques:

    * En cours il a critiqué Wordnet parce que il n’y a pas le lien entre King et Queen à part Human parce que ce sont des gens qui ne se connaissaient pas qui ont étiqueté ces deux mots séparément, et il n’est pas non plus d’accord avec la top ontology parce que les américains rapportent tout dans la catégorie Dieu, or pour nous ce n’est ni objectif ni utile puisque notre but est d’avoir un lexique qui permette de désambiguïser les mots sémantiquement de façon automatique.

    * Il n’est pas non plus d’accord avec les définitions dans les dictionnaires communs car elles sont trop générales parce que si on essaye de relier les mots en contextes avec leurs définitions lexicologiques on voit très vite qu’il y a des sens qui manquent, et donc ce qui nous intéresse c’est d’avoir la distinction la plus grossière possible porteuse d’information en rapport avec ce qui est dit dans le texte.

    * De plus il n’est pas non plus d’accord avec l’idée de tout devoir relier au sommet, il pense qu’on peut avoir des catégories isolées parce qu’on ne cherche pas à représenter l’univers. On veut c’est travailler par champ sémantique en fonction du client que l’on a: assurances, voyages, vacances, informatique… Donc il faut qu’on néglige les 3 premiers niveaux hiérarchiques en partant du sommet et qu’on critique le sens des mots dans le domaine sémantique qu’on a choisi.

    * Finalement il pense aussi qu’il faut admettre les doubles héritages: un mot peut appartenir à plusieurs catégories sémantiques différentes. Et que l’homogénéité dans la description des catégories n’est pas importante, si on a besoin, on peut avoir dans la catégorie SPORT l’hyponyme sport d’équipe et l’hyponyme sport de ballon, ce n’est pas incompatible.

Vous avez le temps, on n’a pas cours ce jeudi (21 mai), et le devoir c’est pour mardi prochain (26 mai),

Françoise Del Socorro

***************************************************************

Comment utiliser facilement le XSL ?

Un document XML contient des données structurées.

Un document XSL contient la page web (ou le fichier texte en output) + les données structurées.

Ce qui fait que XML + XSL <> HTML.

En HTML on peut avoir une liste de règles prédéfinies associées aux balises:

<html>Définit un document html.</html>

<head>Délimite l’en-tête.</head>

<body>Délimite le corps du document et permet de donner l’affichage à défaut pour tout le document.</body>

<p>Permet de sauter une ligne (angl = paragraph).

<br>Permet d’aller à la ligne (angl = line break).

<pre>Permet d’afficher le texte tel qu’il est préformatté dans le fichier texte.</pre>

<b>Permet de mettre le texte en gras.</b>

<i>Permet de mettre le texte en italique.</i>

<u>Permet de souligner le texte.</u>

<sup>Permet de mettre un texte en indice.</sup>

etc…

En XML, comme c’est la première fois que j’en fais, j’ai essayé de re-créer cette idée, mais ça a été un échec car ça ne sert pas à cela. Le XML ne présente pas le texte tel qu’il doit s’afficher et ne doit pas donner d’indices sur comment l’afficher.

Un document XML contient des données structurées dans le but de partager un corpus textuel avec d’autres chercheurs et sur lequel on peut effectuer des requêtes XPATH. Donc le document XSL contient les requêtes XPATH + l’HTML avec toutes ses balises fermées ou auto-fermées:

<p/> ou <p>texte</p>

<br/> ou <br>texte</br>

etc…

Donc on peut considérer le fichier XSL comme un fichier HTML enrichi.

1) Relation entre XML et XSL

Un document XML est bien formé si il contient au moins la déclaration XML <?xml version= »1.0″?> et que il est sauvegardé en .xml. Mais le français contient des signes diacritiques et donc il faut dire que le codage qu’on utilise c’est du latin 1: <?xml version= »1.0″ encoding= »iso-8859-1″?> pour que tous nos caractères soient valables. On pourrait également utiliser de l’UTF-8 qui est apparemment le codage utilisé dans MAC OS et LINUX.

Un document XML s’affiche comme un fichier HTML sur le navigateur s’il contient le lien vers le fichier XSL qui donne les règles d’affichage du document: <?xml-stylesheet type= »text/xsl » href= »nom-fichier.xsl »?>

Un document XML associé à une feuille de style XSL peut être transformé en un fichier HTML soit au moyen d’un éditeur XML (ex: cooktop, editix) soit au moyen de la commande Transform du programme SAXON:

Ex: Invite de commandes

C:\Users\fran>cd /

C:\>cd ./Fpgmes/Saxon

C:\Fpgmes\Saxon>.\saxonb9-1-0-6n\bin\Transform -t -s:\fran\aaa\art1.xml -xsl:\fran\aaa\style-art1.xsl -o:c:\fran\aaa\art1.html

(Sur cygwin c’est la même chose avec les slash à l’envers et il faut vérifier s’il préfère les chemins relatifs ou absolus / ou ./)

2) Relation entre XSL et HTML

On a le choix entre modifier les balises XML qui suggèrent un format de sortie HTML, ce qui est pénible car la plupart du temps on ne trouve pas comment faire:

XML:

<a href= »http://www.centrepompidou.fr/education/ressources/ENS-abstrait/ENS-abstrait.html »>la peinture abstraite</a>ne reflète pas<a href= »http://www.espacefrancais.com/realisme.html« >la réalité</a>

XSL:

<xsl:template match= »a »>

<xsl:choose>

<xsl:when test= »//a[@href] »>

<a href= »{@href} »>

<xsl:value-of select= ». »/><xsl:text/></a>

</xsl:when>

</xsl:choose>

</xsl:template>

Ou utiliser le fichier XSL comme un fichier HTML enrichi avec les requêtes XPATH.

En ce qui concerne XPATH, je fais mes tests sur XPathBuilder http://www.bubasoft.net/xpathbuilder/Xpathbuilder.aspx qui malgré tout ne reconnaît pas les accents, et je n’oublie pas de mettre //. Et là je crée ma page web entièrement sur le fichier XSL. Voici un exemple:

XML:

<?xml version= »1.0″ encoding= »iso-8859-1″ standalone= »no »?>
<?xml-stylesheet type= »text/xsl » href= »style-art3.xsl »?>
<document>
<phrase>
<syntagme cat= »GN »>
<token>
<categorie>D</categorie><lemme>le</lemme><vocable>L'</vocable>
</token>
<token>
<categorie>N</categorie><lemme>art</lemme><vocable>art</vocable>
</token>
<token>
<categorie>A</categorie><lemme>contemporain</lemme><vocable>contemporain</vocable>
</token>
</syntagme>
<syntagme cat= »GV »>
<token>
<categorie>V</categorie><lemme>plaire</lemme><vocable>plaît</vocable>
</token>
</syntagme>
<syntagme cat= »PO »>
<token>
<categorie>E</categorie><lemme>!</lemme><vocable>!</vocable>
</token>
</syntagme>
</phrase>
</document>

XSL:

<?xml version= »1.0″ encoding= »iso-8859-1″?>

<xsl:stylesheet xmlns:xsl= »http://www.w3.org/1999/XSL/Transform &raquo; version= »2.0″>

<xsl:output method= »html »/>

<xsl:template match= »/ »>

<html>

<head>

<title>Le titre de votre page</title>

<meta http-equiv= »content-type » content= »text/html; charset=windows-1250″/>

</head>

<body bgcolor= »lightpink » text= »mediumseagreen » link= »red » alink= »indigo » vlink= »gray » background = »./IMAGES/image-fond.jpg »>

<p align= »left »/><u>Auteur 1:</u> Liste de vocables:

<xsl:for-each select= »//vocable »>

<xsl:apply-templates select= ». »/><xsl:text> </xsl:text>

</xsl:for-each>

<p/><xsl:apply-templates select= »./document/phrase »/>

</body>

</html>

</xsl:template>

<xsl:template match= »//phrase »>

<p align= »left »>

<table bgcolor= »mediumseagreen »>

<tr><td><font color= »blue »>Auteur 2</font></td></tr>

<tr><td><font color= »lightpink »>

Liste de lemmes:

<xsl:for-each select= »//lemme »>

<b><xsl:apply-templates select= ». »/></b><xsl:text> </xsl:text>

</xsl:for-each>

</font></td></tr></table>

</p>

<p align= »center »>

<table bgcolor= »mediumseagreen »>

<tr><td><font color= »lightpink »>Auteur 3</font></td></tr>

<tr><td><font color= »lightblue »>

Liste de categories:

<xsl:for-each select= »//categorie »>

<pre><xsl:apply-templates select= ». »/></pre>

</xsl:for-each>

</font></td></tr></table>

</p>

<p align= »right »>

<table bgcolor= »#3034E0″>

<tr><td><font color= »greenyellow »>Auteur 4</font></td></tr>

<tr><td><font color= »lightcoral »>

Liste de syntagmes:

<xsl:for-each select= »//syntagme »>

<xsl:text> </xsl:text>

<xsl:value-of select= »name() »/>

<xsl:text> = </xsl:text>

<xsl:apply-templates select= »@cat »/>

<xsl:text> ,</xsl:text>

</xsl:for-each>

<br/>

<p/>

<xsl:for-each select= »//syntagme[@cat=’GN’] »>

<xsl:text> </xsl:text>

<xsl:value-of select= »@cat »/>

<xsl:text> = </xsl:text>

<xsl:apply-templates select= »//syntagme[@cat=’GN’]/token/categorie »/>

<xsl:text> ,</xsl:text>

</xsl:for-each>

<xsl:for-each select= »//syntagme[@cat=’GV’] »>

<xsl:text> </xsl:text>

<xsl:value-of select= »@cat »/>

<xsl:text> = </xsl:text>

<xsl:apply-templates select= »//syntagme[@cat=’GV’]/token/categorie »/>

<xsl:text> ,</xsl:text>

</xsl:for-each>

<xsl:for-each select= »//syntagme[@cat=’PO’] »>

<xsl:text> </xsl:text>

<xsl:value-of select= »@cat »/>

<xsl:text> = </xsl:text>

<xsl:apply-templates select= »//syntagme[@cat=’PO’]/token/categorie »/>

<xsl:text> .</xsl:text>

</xsl:for-each>

</font></td></tr></table>

</p>

</xsl:template>

</xsl:stylesheet>

Ainsi vous avez plus de liberté pour créer votre page web et moins de contraintes et de règles en conflit. Une fois que vous aurez choisi le format de votre page HTML, vous la mettez dans le XSL et puis voilà. Ce n’était pas mon idée de départ quand j’ai commencé à imaginer mon site mais c’est ma conclusion. Je mets les deux fichiers sur mon Bloop http://www.mybloop.com/francoisepeace pour que vous les testiez et Mourad va sûrement vous expliquer comment utiliser css et xsl au même temps.

Françoise Del Socorro

FTP explication d’une nécessité

Posted in pluriTAL by pluritaluser on 27 avril 2009

Mon site web du projet 2 est presque fini:
http://francoisepeace.cwahi.net/rss-livres.culture-lemonde/index.htm

Il remplace celui de geocities (qui va fermer) et de 125mb.com qui n’acceptait pas de télécharger de gros fichiers.

J’ai commencé par utiliser le FTP interne, mais après je me suis rendue compte que dans l’onglet My Account il y a les instructions pour utiliser le FTP externe, celui qui aspire tous nos fichiers et tous nos dossiers sans qu’on ne fasse rien. Bien que dans la version gratuite de Core FTP il ne supporte pas d’innombrables fichiers au même temps. Bref, l’adresse FTP de ce site fonctionne de la façon suivante: 1 FTP pour tous les sites de cwahi, mais il faut être honnête et indiquer la bonne destination de ces fichiers. La sécurité n’est pas géniale mais au moins tout est illimité.

Pour les autres cours, j’ai encore de l’espoir dans la session de septembre, car pour moi le plus difficile ce n’est pas l’informatique, c’est aller vite.

Françoise Del Socorro

——————————————————————————————————————————————————————————-

Après avoir essayé Yahoo Geocities (15Mo max) et 125Mb.com (125Mo max):

http://rss-livres-culture-lemonde.medianewsonline.com/

Je me suis rendue compte qu’il n’y a pas que la taille du site web qui compte pour mettre mes devoirs de Projet Encadré (qui n’est pas encore fini). Il y a aussi la taille maximale des fichiers qu’il accepte.

Me voilà donc en train de chercher un nouveau site web gratuit (free web hosting) avec au moins 100mo et no file size limit.

En ce qui concerne le upload, il faut absolument utiliser le FTP vu la taille et la quantité des fichiers qui pour nous sont petits mais pour le web sont grands. C’est la première fois que j’utilise un FTP et c’est très facile.

Le site web vous fournit le nom de l’hôte qui est l’adresse de votre site web (ou du sous-domaine) après le home\www\, vous choisissez à l’intérieur du site votre 2eme username et 2eme password, et le port à défaut c’est 21 pour tous les ordinateurs.

host: rss-livres-culture-lemonde.medianewsonline.com
user: 258228_258228
password: ***************
port: 21

J’ai essayé Filezilla mais c’est trop lent, je vous recommande la version gratuite de Core FTP:

http://www.coreftp.com/download.html

Si vous utilisez Core FTP, on met ces informations dans le File Manager. Et pour que ça fonctionne il faut être simultanément connecté dans le File Manager de votre site web, là où il y a tous vos dossiers et vos fichiers car le FTP ne passe pas par l’entrée principale du site web, il passe par les options FTP que vous avez choisis (2eme username, 2eme mot de passe) dans votre nom de domaine gratuit.

Quand il y a trop de FAILED c’est parce que le site web gratuit limite la taille de ses fichiers à 500Ko environ d’où l’intérêt d’avoir un host gratuit avec no file size limit (nos fichiers ont plus de 700Ko). Vous verrez que mon site web n’est pas complet à cause de cela, donc il va falloir que je déménage encore une fois.

Françoise Del Socorro

Questions

Posted in pluriTAL by pluritaluser on 23 avril 2009

J’avais posé la question:

Comment lancer patron2graphe.exe ?

Est-ce qu’il faut ne pas avoir Windows Vista ? Parce que Treetagger ne fonctionne pas dans mon ordinateur. Ou alors il faut télécharger un programme pour que Cygwin reconnaisse les .exe ?

fran@Charmmy-Kitty ~/Projet2/patron2graphe-2.0
$ patron2graphe.exe « iso-8859-1 » patrons-1.txt
bash: patron2graphe.exe: command not found

Et je viens de trouver la réponse ce matin:

./patron2graphe.exe « iso-8859-1 » patrons-1.txt

Françoise Del Socorro

Utilités (doublons, html)

Posted in pluriTAL by pluritaluser on 18 avril 2009

1) La commande sort (sort -u fic) est téléchargeable dans le package coreutils: GNU core utilities (includes fileutils, sh-utils and textutils) à partir du setup.exe de Cygwin.

2) C’est ainsi que je vais éditer automatiquement mes pages web:
http://www.mybloop.com/francoisepeace
Pour changer l’affichage automatique de la page web, remplacez le code source de ma page web par le code source de votre page web. Mon code source est en bas du fichier Perl.
Pour changer les couleurs, il faut soit mettre les noms en anglais, soit télécharger un éditeur hexadécimal de couleurs (visual color picker, etc…) soit aller dans une page qui vous donne ce code et le mettre après le #.
Pour additionner ou supprimer des changements, il suffit d’imiter le code.

MyBloop stores your files forever. They will never be deleted and will never expire, unless you delete the file yourself.
The site to upload and share files for free with infinite space.

Françoise Del Socorro

——————————————–

3) Je pense que la plupart d’entre vous on finalisé la BAO3, mais pour ceux qui ne savent pas du tout la faire et qui n’ont pas eu les programmes de SF, extrait-term.pl ni extract-patron-cordial.pl de SF je vous propose mes programmes qui font la même chose en plus long et plus compliqué. Je n’ai pas fait de version générale pour mon dernier programme car je devais commencer Document structuré et donc c’est vous qui devez la faire.

-3- treetagger

-3c- treetagger + cordial

-c3- cordial normalisé en treetagger

j’ai fait les rubriques livres et culture mais la plupart des programmes ont des versions générales incluses

le résultat est un tableau comparatif de Cordial et Treetagger

http://www.mybloop.com/francoisepeace

Françoise Del Socorro

———————————–

J’ai commencé les TP de document structurés, et j’ai été étonné qu’on n’avait pas besoin des entités HTML dans XML:

http://xmlfr.org/documentations/tutoriels/010115-0003

Le deuxième point qui frappe les développeurs HTML s’attaquant à XML est le petit nombre de « caractères spéciaux » permettant de désigner des caractères non- ascii.

Les caractères spéciaux HTML appelés « entités générales internes » ou plus communément entités dans la terminologie XML et permettant de définir des caractères accentués, des symboles monétaires et autres copyright ou espaces insécables dans des encodages où ils peuvent ne pas exister ne sont pas nécessaires pour XML qui s’appuyant sur Unicode permet d’insérer tous ces caractères sans avoir recours à cet artifice.

Ces caractères spéciaux ne sont donc pas prédéfinis en XML et doivent être définis dans une DTD avant de pouvoir être utilisés.

Si cette définition est réalisée dans certaines DTDs comme XHTML (pour des raisons de compatibilité) ou DocBook, pour la plupart des vocabulaires XML et en particulier pour XSLT, ces entités ne sont pas définies et un parseur XML générera une erreur s’il rencontre par exemple « &nbsp; » ou « &eacute; ».

Les seules exceptions sont, bien entendu, les entités nécessaires à inclure les caractères de balisage (« &amp; », « &lt; », « &gt; », « &apos; » et « &quot; »).

Et donc un petit programme en Perl comme xml2web.pl (pas xml2html.pl qui affiche xml) contenant

while(my $recup=<FILEIN>) {
#1. transcodage
###Les paragraphes###
$recup=~s/(\s)*\n/\n/g; #supprime les espaces avant le retour à la ligne
$recup=~s/^\n/<p\/>\n/g; #met des paragraphes dans tous les sauts de ligne
if ($recup=~/[^<p\/>]\n/g) {
$recup=~s/\n/<br\/>\n/g
};# met des br en fin de ligne lorsque la balise <p> n’est pas là
###Les guillemets dans le texte balise
unless (($recup=~/1.0/g)||($recup=~/UTF-8/g)||($recup=~/text\/xsl/g)||($recup=~/ti-prince/g)){
$recup=~s/\ »/&quot\;/g;
}
#2. Memorisation dans DUMPFULL
$DUMPFULL.=$recup;
}

devrait suffire largement pour éditer toutes vos pages en XML avec des feuilles de style XSL.

Je n’ai pas encore testé le résultat mais je pense que le texte sera mis en forme convenablement car cooktop accepte les documents avec des balises XML modifiés ainsi.

Et j’ai aussi découvert que le </br> n’était pas fermé pour XML, il faut qu’il soit : <br/>.

Je n’ai pas encore mis ce programme en ligne, mais il y en a tellement qui se ressemblent que vous pourrez facilement l’essayer en modifiant paragraphes.pl

Espérons que les br et les p fermés s’afficheront comme il faut.

Françoise Del Socorro

—————————————

Pour le XSLT et le XPath, je vous conseille un site où je suis en train d’apprendre:

http://www.zvon.org/index.php?nav_id=tutorials
Pour Xpath, on peut tester avec Xlab les exemples.

Françoise Del Socorro

————————————

Finalement en ce qui concerne les bibliographies (corpus parallèles et comparables, etc.), je crois que le TAL a des normes de présentation des auteurs que je ne connais pas encore et qui sont différentes de celles-ci, mais celles que je connais sont les suivantes:

http://www.ulb.ac.be/philo/infodoc/biblio.html#types
Exemple:  »

Responsabilité principale (de la contribution) – Titre (de la contribution) – Titre (de la série) – Type de support – Édition – Désignation du numéro – Date de mise à jour ou de révision – Emplacement à l’intérieur du document hôte.

THANARAJ, T.A., et ARGOS, P., « Ribosome-mediated translational pause and protein domain organization » dans Protein Science. Electronic Edition, Revue sur INTERNET, août 1996, vol. 5, n° 8, p. 1594-1612, dernière mise à jour : 6 août 1996, http://www.prosci.uci.edu/cgi-bin/sgmhtm5.conv.pl?, Vol5 No08/6048, 1996.

 »

Et pour avoir les auteurs présumés des sites: http://news.nic.com/cgi-bin/whois (sites anglais), http://www.afnic.fr/outils/whois (sites français), essayez sur Mozilla: Outils > Informations sur la page, pour avoir la dernière date de modification.

Françoise Del Socorro

Comment effacer les doublons des fichiers texte ?

Posted in pluriTAL by pluritaluser on 3 avril 2009

Comment effacer les doublons?

1) Il faut aller à la ligne après chaque point et après chaque majuscule au début de la deuxième phrase.

Bash:
$ sed -i.bak -e s/ »\. »/ »\.\n »/g ./livres.txt  #Va à la ligne après le point (que sur l’ordi de la fac)

Perl:
$recup=~s/\./\.\n/g; #Va à la ligne après chaque points  –> NE MARCHE PAS

Il faudrait aussi pouvoir lui dire de ne pas aller à la ligne après « … » mais (^.) ne marche dans aucun langage.

#On doit aussi faire une commande pour aller à la ligne après une majuscule lorsque deux phrases sont collées mais ça ne marche pas.
if ($recup=~/([a-z])([A-Z][a-z])/g) {
$recup=~s/$2/$2\n/g  #Va à la ligne lorsque c’est une fin de ligne sans point
}; –> NE MARCHE PAS (ex: compagne de ModiglianiAu Palais Garnier)

Et après être allé à la ligne après chaque point, il faut aussi supprimer les espaces éventuels en début de ligne:

Bash:
$ sed -i.bak -e s/ »^ « / » »/g livres.txt

2)Il faut ensuite faire:

Bash:

sort -u livres.txt > livres-un.txt #Supprime les doublons, mais on ne peut pas écraser son propre fichier sinon tout disparaît.  (Je pense qu’il s’agit d’un programme à télécharger car cela ne marche que sur l’ordinateur de la fac. )

Je n’ai pas cherché comment faire pour Perl.

Cela ne supprime les doublons que dans les fichiers texte.

Il reste quand même le problème des majuscules
:
Des archéologues retrouvent des sculptures
Des archéologues retrouvent des sculpturesNé le 18 juillet 1917 à Cayenne (Guyane), le chanteur avait fait ses adieux à la scène au Palais des congrès, à Paris, en décembre 2007.
Des ivoires métis sont présentés Quai Branly.
Des oeuvres d’Inde ou d’Iran voient leur cote s’envoler.
Des responsables du spectacle sont inquiets pour leurs budgets.
Deux nouveaux fauteuils sont à pourvoir, le 7 février, pour tenter de repeupler une Académie française qui enregistre davantage de morts que d’élus.
Deux sites proposent des plates-formes musicales participatives pour les producteurs amateurs et les musiciens.
Deux solos à la Manufacture des Abbesses.
Décevante « Ecole des femmes » à l’Odéon.
Désignée comme capitale européenne de la culture, la cité anglaise ouvre les festivités.
En cause, 77 « copies » de la dernière compagne de Modigliani
En cause, 77 « copies » de la dernière compagne de ModiglianiAu Palais Garnier, un rare manifeste de l’Italien Luigi Dallapiccola.
En cause, 77 « copies » de la dernière compagne de ModiglianiLe tout est l’oeuvre du Niçois Céleste Boursier-Mougenot.

Françoise Del Socorro

—————————————-

J’ai résolu le problème des majuscules au milieu de phrase en amont:

Des archéologues retrouvent des sculptures
Des ivoires métis sont présentés Quai Branly.
Des oeuvres d’Inde ou d’Iran voient leur cote s’envoler.
Des responsables du spectacle sont inquiets pour leurs budgets.
Deux nouveaux fauteuils sont à pourvoir, le 7 février, pour tenter de repeupler une Académie française qui enregistre davantage de morts que d’élus.
Deux sites proposent des plates-formes musicales participatives pour les producteurs amateurs et les musiciens.
Deux solos à la Manufacture des Abbesses.
Décevante  Ecole des femmes  à l’Odéon.
Désignée comme capitale européenne de la culture, la cité anglaise ouvre les festivités.
Édouard II  et  Massacre à Paris  du dramaturge élisabéthain sont représentés en France.
Eldorado  s’impose au Théâtre de la Ville.
En cause, 77  copies  de la dernière compagne de Modigliani
Entretien avec l’historien israélien.

(exemple tiré de culture.txt et pas de livres.txt)

Et donc je fais tout sur bash:

sed -i.bak -e s/ »\. »/ »\.\n »/g ./livres.txt
sed -i.bak -e s/ »^ « / » »/g livres.txt
sort -u livres.txt > livres-un.txt

Françoise Del Socorro

Comment installer ubuntu (linux) en 10min?

Posted in pluriTAL by pluritaluser on 25 mars 2009

Bonjour, comme je viens d’installer Ubuntu sur la VirtualBox, je vous décris comment j’ai fait:

http://www.geocities.com/francoise_peace/ubuntu.html

J’ai pensé à Raoum en faisant cela, ça peut être utile pour ceux qui ont des problèmes avec cygwin ou avec d’autres programmes comme treetagger qui n’ont que des versions pour un autre windows ou pour linux.

Nassim m’a dit que treetagger ne fonctionnait pas parce que j’ai windows vista, alors que à l’université ça a fonctionné, je pense qu’on est sous windows xp.

Donc j’ai utilisé le treetagger de l’ilpga, mais si cela n’avait pas été possible, j’aurai du l’installer dans ubuntu.

Je ne sais pas encore utiliser les additions invité, alors si vous installez ubuntu, vous aurez tous ces problèmes que vous n’avez pas eu avec cygwin.

L’intérêt de la VirtualBox c’est qu’on n’a pas besoin de formater Windows, surtout quand on n’a pas son CD d’installation, pour avoir des nouveaux systèmes d’exploitation gratuits ou payants.

Geocities sera en maintenance demain le 26 Mars 2009 donc au cas où mon site ne fonctionnerait pas, ne vous étonnez pas.

Françoise Del Socorro

BaO2: Treetagger – limité à 1000 mots !

Posted in Boîte à Outils, pluriTAL by pluritaluser on 23 mars 2009

Bonjour,

Tout d’abord j’ai joint mes deux fichiers de fils RSS en un seul: livres-culture.txt, cygwin a dit:

ERROR: Not enough memory
aborted.

Ensuite j’ai modifié mon programme parcours-arborescence et je les ai disjoint en livres.txt ( 5043 mots d’après Treetagger en ligne) et culture.txt (6535 mots d’après Treetagger en ligne), mais cygwin continue de donner le même message d’erreur pour Treetagger (idem en ligne). Alors que quand il n’y avait pas de saut à la ligne, cela fonctionnait, mais je pense que quand il n’y a jamais de saut à la ligne sûrement le texte doit être tronqué par notepad++ sans preuves.

Alors que pour le petit corpus de janvier, cela fonctionnait. Et j’ai refait des tests avec Notepad++, conclusion il y a un bug quand on veut visualiser une ligne de plus de 65535 caractères environ sans aucun retour charriot, les espaces sont comptés, dans le cas de l’assemblage manuel livres.txt + culture.txt, on voit apparaître des lettres superposés, dans le cas de l’assemblage mécanique le texte est tronqué à 79% mais dans le cas de l’assemblage manuel, presque tout le texte est là sauf  5%. Mais avec le retour charriot tout semble marcher sauf que je n’ai pas réussi à trouver une manière de le contrôler car les phrases de culture et livres se mélangent (ou alors tout est faux) au lieu que les deux parties se suivent.

Donc il vaut mieux avoir deux output livres.txt et culture.txt et des retours charriots si on veut être sûr de la réponse de notepad car les corpus sont trop gros même s’ils sont plus petits qu’un long devoir (texte+culture en mode LF =22 pages).

(Calculs tirés de la partie inférieur de Notepad++ où les colonnes indiquent le numéro du caractère où on est et où on a la somme des caractères qu’il a pu compter:

Sans retour charriot:

culture.txt + livres.txt sans retour charriot (collage manuel): 68982 cractères reconnus mais 65535 cararctères visualisables + symbole d’erreur (lettres superposées).
livres-culture.txt sans retour charriot: 69626 caractères reconnus, pas de symbole d’erreur, mais que 15039 caractères visualisés.
culture.txt sans retour charriot: 38870 caractères y compris l’espace reconnus, un caractère en plus visualisé.
livres.txt sans retour charriot:30232 caractères y compris l’espace reconnus, un caractère en plus visualisé.

Avec retour charriot:


livres-culture.txt avec retour charriot: 70326 caractères reconnus, les caractères en plus sont dus à l’espace et aux sauts de ligne.
culture.txt: 39663 caractères reconnus, les caractères en plus sont dus à l’espace et aux sauts de ligne.
livres.txt: 30678 caractères reconnus, les caractères en plus sont dus à l’espace et aux sauts de ligne.

Donc on a bien la somme des deux. Mais on ne peut pas vérifier que les deux parties sont entières car il y a des mélanges phrastiques.)

Et donc comment faire pour couper le texte en tranches de nombre de lignes qui contiennent moins de 1000mots en Perl ?

Je vais recopier votre cours, regarder de nouveau vos slides sur perl et réfléchir à comment faire ce programme et après je vous re-questionnerais, mais si quelqu’un à une idée, merci de nous la faire parvenir !

Françoise Del Socorro

————————————————————————–

Je remets en question ma théorie selon laquelle le TreeTagger téléchargé est limité à 1000mots comme le TreeTagger en ligne ainsi que la théorie de Nassim selon laquelle le TreeTagger ne fonctionne pas sous Windows Vista. Je pense que comme le programme nécessite qu’on configure des variables d’environnement pour qu’il fonctionne (et je ne sais pas ce que c’est) et que je n’ai fait que copier-coller le programme alors c’est normal qu’il ne fonctionne pas. Donc j’ai besoin de votre aide pour finir l’installation.

Réinstallation de TreeTagger sous Windows Vista Basic

Install.txt

OK (ActivPerl 5.10, sa version gratuite vient avec le ppm, pour avoir son Icône cliquez sur ouvrir avec.) 1. Install a Perl interpreter (if you have not already installed one).

You can download Perl for free at

http://www.perl.com/pub/language/info/software.html

OK (C:\TreeTagger) 2. Move the TreeTagger directory to the root directory of drive C:.

OK (avec 7-Zip, on n’a plus besoin de renommer les fichiers qui étaient zippés sous linux.) 3. Download the PC parameter files for the languages you need, decompress

them (e.g. using Winzip) and move them to the subdirectory lib.

Rename the parameter files to <language>.par

Example: Rename french-par-linux-3.1.bin to french.par

OK (Panneau de configuration > Système > Paramètre système avancé > Variables d’environnement – autoexec.bat n’existe plus au-delà de Windows 98, mais c’est plus facile.) 4. Add the following line to autoexec.bat (Windows 95/98) set PATH=C:\TreeTagger\bin;%PATH% or change the corresponding system settings (Windows NT).

5. Open a shell and type the command

set PATH=C:\TreeTagger\bin;%PATH%

6. Change to the directory C:\TreeTagger

7. Now you can test the tagger, e.g. by analyzing this file with the command

tag-english INSTALL.txt

Sur l’invite de commandes il ne se passe rien ni sur cygwin:

*Invite de commandes j’ai tapé

C:\Users\fran>PATH=C:\TreeTagger\bin;%PATH% et il est revenu à la ligne mais quand

C:\Users\fran>cd C:\TreeTagger\

C:\TreeTagger>tag-english INSTALL.txt

‘perl’ n’est pas reconnu en tant que commande interne

ou externe, un programme exécutable ou un fichier de commandes.

*Cygwin j’ai tapé

fran@Charmmy-Kitty ~

$ PATH=C:\TreeTagger\bin;%PATH%

bash: fg: %PATH%: no such job

fran@Charmmy-Kitty ~

$ cd /cygdrive/C/TreeTagger

fran@Charmmy-Kitty /cygdrive/C/TreeTagger

$ tag-english INSTALL.txt

bash: tag-english: command not found

Donc comment finaliser l’installation de TreeTagger ?

Françoise Del Socorro

—————————————————————————–

Françoise

Pour travailler avec treetagger sous windows, on peut faire simple (comme on le fait en cours).

1. Vous récupérez treetagger pour windows sur la page du cours

(http://www.cavi.univ-paris3.fr/ilpga/ilpga/tal/cours/BAO-master/treetagger-win32.zip)

2. Vous dézippez cette archive. Treetagger est disponible dans une sous-arborescence de cette archive avec plusieurs sous-dossiers (bin, cmd…). Mettez l’arborescence « pas trop loin » de votre répertoire de travail pour les BàO puis lancer les commandes pour l’étiquetage (tokenisation, étiquetage, normalisation XML cf mode d’emploi disponible dans l’archive) en adaptant avec des chemins relatifs correspondants à votre organisation locale sur votre disque.

Si c’est pas clair, on regarde mercredi.

SF

Page web

Posted in pluriTAL by pluritaluser on 23 mars 2009

Page web en cours de réalisation pour le projet encadré pour moi et Hugo: http://www.geocities.com/rss_culture.livres_lemonde/index.htm

Françoise Del Socorro

Lexico 3 – quelques résumés

Posted in pluriTAL by pluritaluser on 21 mars 2009

Cours de Mr Salem:

On doit rassembler un corpus de textes autour d’un sujet de notre choix.

On peut rassembler un corpus de type:

*texte source – traduction. Ex de balisage: <titre=La theorie de l’évolution><langue=fr><date de publication=1969><auteur=Charles Darwin>

*corpus chronologique: où on étudiera par exemple l’évolution de l’emploi du mot crise dans le journal Le Monde . Ex de balisage: <annee=1998><lieu=Toulouse><jour=01><mois=01>

*corpus des interventions d’un chef d’état.

En tout cas on a:

<partie=1>s’oppose à<partie=2>

Il faut chercher des corpus semblables pour ne pas avoir à comparer un troupeau d’éléphants et un troupeau de mouches. La taille du corpus dépend de la quantité de redondance que vous avez, si vous avez beaucoup de motifs répétés dans un petit corpus ça va, sinon il vaut mieux avoir un grand corpus pour les études statistiques.

D’après le Trésor de la langue Française Informatisé: http://atilf.atilf.fr/

lexicométrie, (dans l’article -MÉTRIE, élém. formant)
C. [Le 1er élém. est d’orig. fr.] V. économétrie, granulométrie, sensorimétrie, volumétrie et aussi:
lexicométrie, lexicol. Étude statistique du vocabulaire; science qui étudie la répartition du vocabulaire dans le discours. La lexicologie quantitative, ou lexicométrie, permet une approche réductionniste, interne et, partiellement, explicative (D. DUGAST, Vocab. et styl., Genève, éd. Slatkine, t.1, 1979, p.43).

Sur internet il y a beaucoup de possibilités.

Regarder les travaux des élèves sur le site de Lexico 3:

Rp d’analyse > sommaire des explorations > regarder les travaux des étudiants

Si on veut faire de l’alignement, Mr Salem et Mr Gerdes nous ont conseillé le logiciel mkalign de Serge fleury. Où est le logiciel Mr Fleury ?

il est ici : http://tal.univ-paris3.fr/mkAlign/

Le programme mkAlign permet de construire, corriger et visualiser un alignement de deux textes via un éditeur à double entrée. Il permet d’afficher simultanément les textes source et cible pour y rajouter ou corriger des segments équivalents. Ce programme n’est pas (seulement) un aligneur automatique. Il est conçu pour aider l’utilisateur dans la création, l’alignement, la correction et la validation de textes traduits. L’utilisateur garde la maîtrise sur l’ensemble de ces processus, depuis la mise en correspondance initiale des segments équivalents jusqu’à l’export final du bi-texte produit. Il appartient à l’utilisateur de construire l’alignement et de définir son degré de précision (résolution). Cette résolution peut varier pour mettre en évidence les correspondances entre les segments textuels des différents niveaux. La notion de sauvegarde de session de travail (création de fichiers d’export/import de bi-textes au format xml et html) permet de commencer le travail sur un corpus à deux volets textuels, l’exporter au format désiré, puis le réimporter plus tard pour y apporter des modifications. La visualisation de l’alignement dans une représentation cartographique (bi-text map) offre plusieurs possibilités de gestion de corpus qui partagent des similitudes au plan traductionnel.

Cours de Mr Gerdes:

Il faut choisir les mots qu’on veut étudier.

Une collocation est une sorte de structure sémi-idiomatique, un mot qui n’a pas son sens propre mais qui modifie le sens d’un autre mot.

D’après le Trésor de la langue Française Informatisé: http://atilf.atilf.fr/

COLLOCATION, subst. fém.
b) LING. Emploi d’un terme relativement à d’autres, toutes variantes morphologiques confondues, et sans égard à la classe grammaticale. Les noms de fruit comme pomme, orange, poire, pêche (…) se trouvent en collocation fréquente avec dessert, manger, doux, fruit, etc. (HALLIDAY, Ét. de ling. appliquée, t. 1, 1962, p. 22).

Rem. 1. L’acception ling. appartient à l’école angl., qui rapporte le sens d’un terme à l’emploi du terme. 2. Hapax collocage, subst. masc., avec le sens d’hébergement. Je compte toujours sur tes bienveillants efforts en ma faveur pour collocage mien éventuel ès asile honorable et petits ménages déguisés (VERLAINE, Correspondance, t. 1, 1888, p. 220).

Exemples de collocations:

Prenons le syntagme  » un fumeur  » en français.

français: il est un gros fumeur

anglais: he is a heavy smoker

Prenons des verbes support comme prendre ou faire:

  • prendre + une décision

  • to make + a decision

  • faire + une sieste

D’après http://infolingu.univ-mlv.fr/DonneesLinguistiques/Lexiques-Grammaires/PhrasesVsup.html

« Phrases à verbe support

Le lexique-grammaire recense, en grandeur réelle, les structures syntaxiques élémentaires. Les sens sont soigneusement distingués. La phrase élémentaire est l’unité minimale d’étude. Un jeu de transformations syntaxiques facilite la description des variations entre structures.

Dans les phrases à verbe support, ce n’est pas le verbe qui remplit la fonction de prédicat de la phrase, mais un nom prédicatif (Luc monte une attaque contre le fort), un adjectif prédicatif (Luc est fidèle à ses idées), etc. La distribution du sujet et éventuellement des compléments essentiels dépend de cet élément prédicatif.

Le verbe support est souvent un petit verbe fréquent : avoir, être, faire, prendre … mais il peut aussi contribuer au sens de la phrase : Luc multiplie les attaques contre le fort. Une construction à verbe support est toujours reliée à des constructions dans lesquelles le verbe support n’apparaît pas : Max assiste à l’attaque de Luc contre le fort ; Luc, fidèle à ses idées, relève le défi.

En français, plusieurs dizaines de tables décrivent certaines catégories de phrases nominales et adjectivales à verbe support.

Visualisation des tables de noms prédicatifs du français

Maintenance de cette page : Éric Laporte  »

Le calcul des spécificités permet de mesurer à quel degré c’est étonnant, surprenant, de trouver tel mot dans un sous-corpus?

Le calcul des anti-spécificités permet de mesurer les mots qui apparaissent moins souvent dans un sous-corpus. Par exemple on ne trouve pas souvent « ferait » mais on trouve souvent « faire », on trouve souvent  » monter  » quand on a « cheval » mais on ne trouve pas souvent « monte ».

Soit un sous-corpus avec les mots: sieste, sieste et les mots: panneau, panneau, panneau.

Quelle est la probabilité qu’on ai plus de une fois panneau dans le contexte de sieste ?

Sous-corpus: panneau, panneau, faire, faire

Sous-corpus sélectionné: panneau, panneau, faire, faire, sieste, faire, faire, sieste, panneau

On peut par exemple calculer les spécificités de chaque chapitre du livre si tous les chapitres étaient égaux.

On peut aussi regarder les mots qui sont difficiles à traduire en anglais comme « dérogation » ou « fonctionnaire » en faisant des corpus alignés pour voir:

-tous les paragraphes où le mot « fonctionnaire » apparaît en français

-tous les paragraphes en anglais où il y a la traduction du mot « fonctionnaire »

Puis calculer les spécificités du sous-corpus et déduire que on traduit le plus souvent en anglais « fonctionnaire » par « official », qui est le mot le plus pertinent.

Puis calculer les spécificités négatives et déduire que « agent » en anglais, mot qui n’est pas le mot « official », s’emploie lorsque on trouve souvent le mot « policial » autour.

Lorsque on a différentes traductions dans différents contextes mais pas une meilleure traduction, on peut rajouter plusieurs traductions dans son dictionnaire.

Au niveau des applications de Lexico 3, il y en a dans tous les domaines:

-Il existe des systèmes de traduction automatiques bilingues qui regardent le contexte des mots.

-Les sciences humaines sont en train de changer à cause des outils qui nous permettent d’avoir des mesures de répétition.

-Il existe des sociologues qui utilisent Lexico 3 pour se demander si la violence à l’école est une création médiatique ou un fait réel ?

Indépendamment des statistiques, on remarque que c’est juste avant les élections que ça augmente: Donc il s’agit d’une création médiatique plus que d’un fait réel, et donc d’une manipulation, on peut montrer que ce n’est pas le reflet de la violence à l’école, mais on ne sait pas si la médiatisation est consciente, inconsciente ou due au hasard.

En tout cas pour faire des études statistiques il vaut mieux avoir un grand corpus.

Conseils personnels pour utiliser lexico3:

Remplacer tous les – > par un mot comme « implique » par exemple. Car il ne faut pas avoir de frontière de balise ouvrante ni fermante dans un texte qui va être traité par Lexico3 qui reconnaît les balises. Rappel: > supérieur à, < inférieur à.

Faire Nouvelle base (segmentation) si vous mettez pour la première fois votre corpus en format nomducorpus.txt dans Lexico3 ou faire ouvrir > nomdefichier.par si vous l’avez déjà ouvert au moins une fois dans Lexico3.

Vos balises sont surlignées en jaune fluo.

Regarder tous les fichiers dont le .dic qu’il crée dans le répertoire où se situe le fichier que vous avez ouvert.

Quelques boutons:

-Concordances > changement de fenêtre.

-Groupe de formes > changement de fenêtre.

-Segments répétés > vous pouvez changer la fréquence minimale (seuil) de répétition attendue en réponse > cliquer sur le nouvel onglet.

-Statistiques par partie > choix de la partition: en fonction de la partie gauche de vos balises

Ouvrir avec le petit carré la petite fenêtre fermée en bas ou si vous ne la voyez pas, cliquez sur Mosaïque pour accéder aux statistiques par partie.

-Avec shift + sélection j’arrive à sélectionner les parties qui vont être comparées aux parties non sélectionnées.

-Spécifs donne les spécificités positives (case à cocher) ou négatives (case à cocher) des parties sélectionnées par rapport aux autres parties.

Pour sauvegarder vos résultats en .html (vous pouvez éditer ensuite votre .html en l’ouvrant avec notepad++ si il y a des erreurs pour ne pas avoir à tout recommencer):

  • Lorsque ce qu’il y a sur la fenêtre principale vous intéresse, cliquer sur le bouton: ajouter au rapport.

  • Lorsque ce qu’il y a à gauche vous intéresse, cliquer sur le bouton: ajouter au rapport.

  • Cliquez sur l’onglet « Rapport » à gauche > en bas sur la disquette: enregistrer.

  • Votre page web s’appelle index.htm et elle est placé dans l’endroit de votre choix dans un dossier avec le nom du corpus et plein de numéros. Renommez l’index avec l’option renommer de windows, et changez le contenu avec notepad++ ou votre éditeur html.

  • Pour quitter: c’est la porte « quitter ».

C’est tout ce que je sais, le reste je ne connais pas.

Françoise Del Socorro

Questions sur Perl

Posted in pluriTAL by pluritaluser on 21 mars 2009

Quelle est la différence entre l’assignation et le égal ?

$var1.= 11;
print "$var1\n";
$var2 = 22;
print "$var2\n";

Françoise Del Socorro

—————————————————————-

Françoise

Recopiez ce bout de code dans un fichier et lancez le script :

#cette première ligne définit une variable scalaire (de type chaîne de caractères)
# on créé la variable $var1 et on lui assigne une valeur (=)
$var1="a";

# on l'affiche
print "Valeur initiale de \$var1 : $var1\n";

# l'opération . est une opération de concaténation de chaîne de caractère,
#la notation .= est équivalente à $var1 = $var1 . "a";
$var1.="a";
print "Valeur modifiee de \$var1 : $var1\n";

# ici, l'opération . (qui travaille sur des chaînes de caractères) va
#concaténer "aa" à la chaîne "11"
$var1.=11;
print "Valeur modifiee de \$var1 : $var1\n";

Execution du script

SF

_____________________________________________________________________________________________

Merci Mr Fleury, j’ai compris que .= signifie la concaténation avec ce qu’on avait déjà mémorisé dans la variable.

Mais je vais poser + de questions sur le blog, mes camarades peuvent aussi répondre:

Question 1:

print "tape le premier numéro\n";
read ($premier_n);
print "tape le deuxieme numéro\n";
read ($deuxieme_n);
$troisieme_n = $premier_n + $deuxieme_n;
print "la somme de", $premier_n, " et ", $deuxieme_n, " est ", $troisieme_n, " \n ";

Pourquoi ça ne fonctionne pas ?

Réponse à la question 1

En Perl, les données « arrivant par le clavier »  sont disponibles par le descripteur <STDIN> (l’entrée standard).

De cette façon, on peut récupérer ce que l' »‘utilisateur »  tape au clavier :

$var = <STDIN>

L’expression «$var = <STDIN>;» signifie : affecter à la variable $var la suite de caractères

terminée par un caractère de saut de ligne à partir du fichier d’entrée standard STDIN (i.e la clavier).

Parfois il est nécessaire de supprimer le caractère \n récupéré lors de ce type d’affectation,

pour le supprimer on utilise par exemple la fonction chomp.

Compléments  en ligne :

Ce qui donne pour votre programme :

print "Entrez le premier nombre : ";
$premier_n=<STDIN>;
chomp($premier_n);
print "(la premier nombre lu est : $premier_n)";
print "\nEntrez le second : ";
$deuxieme_n=<STDIN>;
chomp($deuxieme_n);
print "(le second nombre lu est : $deuxieme_n)";

$troisieme_n = $premier_n + $deuxieme_n;
print "\nLa somme de ", $premier_n, " et de ", $deuxieme_n, " est ", $troisieme_n, " \n ";

Exécution :

test2

Question 2 (envoyée par e-mail, mais si vous répondez, je collerais la réponse sur le blog):

print"Tapez a pour avoir le produit de var 1 = 33 et var 2 = 44,
b pour avoir le produit de var 1 = 33 et var 3 = 55,
p12 pour permuter var1 et var2, p13 pour permuter var1 et var3,
p23 pour permuter var2 et var3, p0 pour remettre les variables à leur place.\n";

$var1 = 33;
$var2 = 44;
$var3 = 55;

$a .= ($produit=$var1*$var2); # erreur
$b .= ($produit=$var1*$var3); # erreur
$p12 .= ($var1.=$var2); # erreur
$p13 .= ($var1.=$var3); # erreur
$p23 .= ($var2.=$var3); # erreur

if $x="a" {print "$a\n"}; # erreur
if $x="b" {print "$b\n"}; # idem
if $x="p12" {$var1=$p12; print "var1=$var1\n"};
if $x="p13" {$var1=$p13; print "var1=$var1\n"};
if $x="p23" {$var2=$p23; print "var2=$var2\n"};
if $x="p0" {$var1 = 33; $var2 = 44; $var3 = 55; print "var1=$var1, var2=$var2, var3=$var3"};

Pourquoi ça ne fonctionne pas ?

Réponse à la question 2

print "Tapez votre choix : \na pour avoir le produit de var 1 = 33 et var 2 = 44,\n
b pour avoir le produit de var 1 = 33 et var 3 = 55,\n
p12 pour permuter var1 et var2,\n p13 pour permuter var1 et var3,\n
p23 pour permuter var2 et var3,\n p0 pour remettre les variables à leur place.\n
Votre choix :";
$choix=<STDIN>;
chomp($choix);

$var1 = 33;
$var2 = 44;
$var3 = 55;

if ($choix eq "a") {
      $produit1=$var1*$var2;
      print "Choix $choix : $produit1 \n";
}
elsif ($choix eq "b") {
      $produit2=$var1*$var3;
      print "Choix $choix : $produit2 \n";
}
elsif ($choix eq "p12") {
      $tmp1=$var2;
      $var2=$var1;
      $var1=$tmp1;
      print "Choix $choix : VAR1 : $var1 VAR2 : $var2 \n"
}
elsif ($choix eq "p13") {
      $tmp2=$var2;
      $var2=$var3;
      $var3=$tmp2;
      print "Choix $choix : VAR2 : $var2 VAR3 : $var3 \n"
}
else {
      print "Choix $choix : à vous de jouer pour traiter les autres cas...\n";
}

Je n’ai pas traité tous les cas de figure… A vous de jouer !!!

Exécution actuelle :

test3

——————————————————————————————————————–

Question 3

Décidement, j’ai énormément du mal avec Perl, est-ce que vous ou un camarade peut me corriger cela ? Cela sert à remplacer les accents automatiquement dans les pages web qu’on fait, cygwin accepte mon programme, mais il y a un petit problème: le fichier de sortie est vide.

Pour les balises <br> j’utilise PSPad Editor parce que là il y en a trop, mais comme je n’ai jamais utilisé d’éditeur HTML, je ne sais pas où cliquer pour le reste et donc je préfère faire le programme.

#/usr/bin/perl
print "Le fichier html bien accentue se nomme fichier-accentue.html";
open (FILEIN,"$FILE");
open (FILEOUT,">fichier-accentue.html");
$recup=~s/&agrave;/à/g;
$recup=~s/&aacute;/á/g;
$recup=~s/&acirc;/â/g;
$recup=~s/&atilde;/ã/g;
$recup=~s/&auml;/ä/g;
$recup=~s/&aring;/å/g;
$recup=~s/&aelig;/æ/g;
$recup=~s/&egrave;/è/g;
$recup=~s/&eacute;/é/g;
$recup=~s/&ecirc;/ê/g;
$recup=~s/&euml;/ë/g;
$recup=~s/&egrave;/è/g;
$recup=~s/&eacute;/é/g;
$recup=~s/&ecirc;/ê/g;
$recup=~s/&euml;/ë/g;
$recup=~s/&igrave;/ì/g;
$recup=~s/&iacute;/í/g;
$recup=~s/&icirc;/î/g;
$recup=~s/&iuml;/ï/g;
$recup=~s/&ograve;/ò/g;
$recup=~s/&oacute;/ó/g;
$recup=~s/&ocirc;/ô/g;
$recup=~s/&otilde;/õ/g;
$recup=~s/&ouml;/ö/g;
$recup=~s/&ugrave;/ù/g;
$recup=~s/&uacute;/ú/g;
$recup=~s/&ucirc;/û/g;
$recup=~s/&uuml;/ü/g;
$recup=~s/&ccedil;/ç/g;
$DUMPFULLtxt.=$recup;
print FILEOUT $DUMPFULL;
close (FILEOUT);
close (FILEIN);

Réponse à la question 3

Rien à signaler dans le code précédent SAUF que nous ne voyons pas où vous récupérez la variable $recup

ni le contenu de la variable $FILE sensée contenir le « nom physique » du fichier en entrée.

Si je comprends bien (mais c’est pas sûr), vous devez lire le fichier FILEIN et convertir les entités HTML

présentes dans ce fichier sous leur forme « classique de caractère accentué » et réécrire la chaîne modifiée

dans FILEOUT.

D’autre part, êtes-vous sûre de vouloir créer en sortie un fichier HTML ?

Car dans ce cas, pourquoi convertir les entités ?

Parce que depuis que j’ai découvert Notepad++ et Options des dossiers et de Recherche > ne pas masquer les extensions des fichiers dont le type est connu, pour créer une page html, je crée une page html vide et j’écris dedans, donc j’aurai même préféré rechercher et remplacer les accents dans la page html que je suis en train d’éditer sans faire de brouillon, mais là il vaut mieux sauvegarder sous fichier-accentue.html par prévention, mais ce n’est pas utile. Je vais encore tester votre correction et si ça marche bien, comme je ne remplace pas les balises, je mettrais à la place de fichier-accentue.txt, $FILE en espérant actualiser ma page en cours d’édition. Cela peut paraître bizarre mais comme les fichiers texte oublient fréquemment ce qu’on a tapé dedans, je pense que ne pas utiliser leur extension, est tout aussi utile. Françoise

Il manque donc a priori la boucle de lecture du fichier FILEIN et  :

#/usr/bin/perl
print "Le fichier html bien accentue se nomme fichier-accentue.html";
$FILE="fichier_en_entree";
open (FILEIN,"$FILE");
open (FILEOUT,">fichier-accentue.txt");
my $DUMPULL="";
while(my $recup=<FILEIN>) {
          # 1. transcodage
          $recup=~s/&agrave;/à/g;
          $recup=~s/&aacute;/á/g;
          $recup=~s/&acirc;/â/g;
          #etc...
          # 2. memorisation dans DUMPFULL
          $DUMPFULLtxt.=$recup;
}

print FILEOUT $DUMPFULL;
close (FILEOUT);
close (FILEIN);


Enlever toutes les balises de façon simple:

Posted in pluriTAL by pluritaluser on 18 mars 2009

BaO1

Insérez dans le filtreur:

$recup=~s/&lt;((\w)*(\W*))*&gt;/ /g;  # enlève toutes les balises

$DUMPFULL1.= »<extract num=\ »$i\ »>$recup</extract> »;

$DUMPFULL1=~s/<extract num=\ »$i\ »> <\/extract>/ /g; # enlève tous les extract répétés

et après il n’y a plus de <a href=…> ni de <img src=…>  ni de <extract num=’1′> </extract><extract num=’1′> </extract>

Françoise Del Socorro

Merci à Mourad pour toute l’aide  et pour suggérer $i à la place de 1 afin de supprimer toutes les balises redondantes, même celles qui contiennent un autre chiffre que 1, j’ai remis la sortie vers le fichier texte car on a besoin de ça pour le treetagger, je vais encore rajouter les balises de titre dans mon programme.

Françoise Del Socorro