Patrons syntaxiques
La taille du corpus étant importante il est intéressant d'en difinir un sous-ensemble pour comprarer plus en détails les différence d'analyse des deux logicels
Extraction de patron syntaxique
Afin d'observer les résultats on va déterminer quelque patrons syntaxiques et l'on va les appliquer sur ls fichiers étiquetés.Patrons de Treetagger
- XSLT Le fichier étiquetté formaté en Xml offre la possibilité d'appliquer uns feuille de style xslt contenant les patrons à garder dans le document XML. les transformations xslt correspondant à chaque patron sont les suivantes
- Nom Adj ou Adj Nom
- Nom Nom
- Nom Prp Nom
- Perl On peut stocker un patron sous la forme d'un tableau indexé
- XPATH enfin un requête Xpath peut aussi être utilisée
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output omit-xml-declaration="yes" method="text"/>
<xsl:template match="element">
<xsl:choose>
<xsl:when test="(./data[contains(text(),'NOM')]) and (following-sibling::element[1][./data[contains(text(),'ADJ')]])">
<xsl:value-of select="./data[3]"/>
<xsl:text> </xsl:text>
</xsl:when>
<xsl:when test="(./data[contains(text(),'ADJ')]) and (preceding-sibling::element[1][./data[contains(text(),'NOM')]])">
<xsl:value-of select="./data[3]"/>
<xsl:text>
</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output omit-xml-declaration="yes" method="text"/>
<xsl:template match="element">
<xsl:choose>
<xsl:when test="(./data[contains(text(),'NOM')]) and (preceding-sibling::element[1][./data[contains(text(),'NOM')]])">
<xsl:value-of select="./data[3]"/>
<xsl:text>
</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output omit-xml-declaration="yes" method="txt"/>
<xsl:template match="element">
<xsl:choose>
<xsl:when test="(./data[contains(text(),'NOM')]) and (following-sibling::element[1][./data[contains(text(),'PRP')]]) and (following-sibling::element[2][./data[contains(text(),'NOM')]])">
<xsl:value-of select="./data[3]"/>
<xsl:text> </xsl:text>
</xsl:when>
<xsl:when test="(./data[contains(text(),'PRP')]) and (preceding-sibling::element[1][./data[contains(text(),'NOM')]]) and (following-sibling::element[1][./data[contains(text(),'NOM')]])">
<xsl:value-of select="./data[3]"/>
<xsl:text> </xsl:text>
</xsl:when>
<xsl:when test="(./data[contains(text(),'NOM')]) and (preceding-sibling::element[1][./data[contains(text(),'PRP')]]) and (preceding-sibling::element[2][./data[contains(text(),'NOM')]])">
<xsl:value-of select="./data[3]"/>
<xsl:text>
</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
@patrons = ('NOM','ADJ'); ou
@patrons = ('NOM','NOM');ou
@patrons = ('NOM','PRP','NOM');ou ...
et utiliser des expressions régulières:
si l'élément capturé par les parenthèses(.*) dans l'expression
/^\<element><data type=\"type\">$patrons[$i]\<\/data><data type=\"lemma\">.*\<\/data><data type=\"string\">(.*)\<\/data><\/element>/)
est suivi par un mot correspondant à l'élément $i+1 du tableau, et ce jusqu'à la fin du tableau @patrons, alors tous les mots sont recopiés sur une ligne, séparés entre eux par des espaces.
values:(//element[./data[contains(text(),'NOM')]]/following-sibling::element[1][./data[contains(text(),'ADJ')]]/data[3])|(//element[./data[contains(text(),'ADJ')]]/preceding-sibling::element[1][./data[contains(text(),'NOM')]]/data[3])
Cordial
Les étiquette utilisées par Cordial apportent un peu de précision en précisant le genre et le nombre donc doivent être prises en compte dans le script adapté à cordial. on doit modifier les feuilles de style pour qu'elle prennent en compte ces variations:
data[contains(text(),'PREP') or contains(text(),'PRP')]
data[contains(text(),'NC') or contains(text(),'NOM')]
“I think it’s a new feature. Don’t tell anyone it was an accident.”
– Larry Wall.