<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.apertium.org/w/index.php?action=history&amp;feed=atom&amp;title=Tronquer_automatiquement_un_dictionnaire_morphologique</id>
	<title>Tronquer automatiquement un dictionnaire morphologique - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.apertium.org/w/index.php?action=history&amp;feed=atom&amp;title=Tronquer_automatiquement_un_dictionnaire_morphologique"/>
	<link rel="alternate" type="text/html" href="https://wiki.apertium.org/w/index.php?title=Tronquer_automatiquement_un_dictionnaire_morphologique&amp;action=history"/>
	<updated>2026-05-31T10:12:31Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>https://wiki.apertium.org/w/index.php?title=Tronquer_automatiquement_un_dictionnaire_morphologique&amp;diff=50528&amp;oldid=prev</id>
		<title>Bech: Lien page anglaise</title>
		<link rel="alternate" type="text/html" href="https://wiki.apertium.org/w/index.php?title=Tronquer_automatiquement_un_dictionnaire_morphologique&amp;diff=50528&amp;oldid=prev"/>
		<updated>2014-10-07T14:52:03Z</updated>

		<summary type="html">&lt;p&gt;Lien page anglaise&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 14:52, 7 October 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-addedline diff-side-added&quot;&gt;&lt;div&gt;[[Automatically trimming a monodix|In English]]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-addedline diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;div&gt;En ce moment nous avons un problème dans Apertium concernant les copies. Quand on commence à créer une nouvelle paire de langues qui est basée sur quelque ressource existant dans Apertium (ex : un [[Dictionnaire unilingue]]), alors habituellement on fait une copie de cette ressource, et ensuite on la change selon nos besoins. Ce n&#039;est pas idéal parce que :&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;div&gt;En ce moment nous avons un problème dans Apertium concernant les copies. Quand on commence à créer une nouvelle paire de langues qui est basée sur quelque ressource existant dans Apertium (ex : un [[Dictionnaire unilingue]]), alors habituellement on fait une copie de cette ressource, et ensuite on la change selon nos besoins. Ce n&#039;est pas idéal parce que :&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Bech</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.apertium.org/w/index.php?title=Tronquer_automatiquement_un_dictionnaire_morphologique&amp;diff=37076&amp;oldid=prev</id>
		<title>Bech: Création page</title>
		<link rel="alternate" type="text/html" href="https://wiki.apertium.org/w/index.php?title=Tronquer_automatiquement_un_dictionnaire_morphologique&amp;diff=37076&amp;oldid=prev"/>
		<updated>2012-11-11T00:29:24Z</updated>

		<summary type="html">&lt;p&gt;Création page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;En ce moment nous avons un problème dans Apertium concernant les copies. Quand on commence à créer une nouvelle paire de langues qui est basée sur quelque ressource existant dans Apertium (ex : un [[Dictionnaire unilingue]]), alors habituellement on fait une copie de cette ressource, et ensuite on la change selon nos besoins. Ce n&amp;#039;est pas idéal parce que :&lt;br /&gt;
&lt;br /&gt;
* ça signifie que les améliorations qu&amp;#039;on faites ne sont pas automatiquement transférées vers le dictionnaire qu&amp;#039;on a copié,&lt;br /&gt;
* ça signifie que les améliorations dans le dictionnaire qu&amp;#039;on a copié ne sont pas transférées dans notre nouveau dictionnaire.&lt;br /&gt;
&lt;br /&gt;
Donc pourquoi faisons-nous ça ? -- [[Test de vocabulaire]]. Si nous avons des entrées dans notre monodix qui ne sont pas dans notre [[Bidix (français)|bidix]], alors on obtient beaucoup de &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; sur notre sortie. C&amp;#039;est [[Pourquoi nous tronquons|mauvais]].&lt;br /&gt;
&lt;br /&gt;
Une façon de contourner le problème est d&amp;#039;utiliser des scripts &amp;#039;&amp;#039;ad hoc&amp;#039;&amp;#039; pour tronquer les dictionnaires (voir par exemple : [[apertium-af-nl]], [[apertium-sme-nob]] et le script &amp;lt;code&amp;gt;trim-lexc.py&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;trunk/apertium-tools&amp;lt;/code&amp;gt;), mais ils ne sont pas idéaux car habituellement ils doivent inclure des hacks spécifiques pour des différences dans le format des dictionnaires.&lt;br /&gt;
&lt;br /&gt;
Une autre solution serait de prendre l&amp;#039;&amp;#039;&amp;#039;intersection&amp;#039;&amp;#039; de notre monodix et notre bidix, et d&amp;#039;utiliser ça pour l&amp;#039;analyse. C&amp;#039;est ce qui est décrit plus bas.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Note&amp;#039;&amp;#039;&amp;#039;: Cela ne prend pas en compte la totalité du problème de [[test de vocabulaire]]. Il resterait encore nécessaire de se débarrasser des symboles &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Exemple ==&lt;br /&gt;
&lt;br /&gt;
Supposons que nous avons le [[dictionnaire unilingue]] :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;alphabet&amp;gt;abcdefghijklmnopqrstuvwxyz&amp;lt;/alphabet&amp;gt;&lt;br /&gt;
  &amp;lt;sdefs&amp;gt;&lt;br /&gt;
    &amp;lt;sdef n=&amp;quot;n&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;sdef n=&amp;quot;sg&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;sdef n=&amp;quot;pl&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/sdefs&amp;gt;&lt;br /&gt;
  &amp;lt;pardefs&amp;gt;&lt;br /&gt;
    &amp;lt;pardef n=&amp;quot;beer__n&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;e&amp;gt;&amp;lt;p&amp;gt;&amp;lt;l&amp;gt;&amp;lt;/l&amp;gt;&amp;lt;r&amp;gt;&amp;lt;s n=&amp;quot;n&amp;quot;/&amp;gt;&amp;lt;s n=&amp;quot;sg&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/e&amp;gt;&lt;br /&gt;
      &amp;lt;e&amp;gt;&amp;lt;p&amp;gt;&amp;lt;l&amp;gt;s&amp;lt;/l&amp;gt;&amp;lt;r&amp;gt;&amp;lt;s n=&amp;quot;n&amp;quot;/&amp;gt;&amp;lt;s n=&amp;quot;pl&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/e&amp;gt;&lt;br /&gt;
    &amp;lt;/pardef&amp;gt;&lt;br /&gt;
  &amp;lt;/pardefs&amp;gt;&lt;br /&gt;
  &amp;lt;section id=&amp;quot;main&amp;quot; type=&amp;quot;standard&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;e lm=&amp;quot;beer&amp;quot;&amp;gt;&amp;lt;i&amp;gt;beer&amp;lt;/i&amp;gt;&amp;lt;par n=&amp;quot;beer__n&amp;quot;/&amp;gt;&amp;lt;/e&amp;gt;&lt;br /&gt;
    &amp;lt;e lm=&amp;quot;school&amp;quot;&amp;gt;&amp;lt;i&amp;gt;school&amp;lt;/i&amp;gt;&amp;lt;par n=&amp;quot;beer__n&amp;quot;/&amp;gt;&amp;lt;/e&amp;gt;&lt;br /&gt;
    &amp;lt;e lm=&amp;quot;computer&amp;quot;&amp;gt;&amp;lt;i&amp;gt;computer&amp;lt;/i&amp;gt;&amp;lt;par n=&amp;quot;beer__n&amp;quot;/&amp;gt;&amp;lt;/e&amp;gt;&lt;br /&gt;
    &amp;lt;e lm=&amp;quot;house&amp;quot;&amp;gt;&amp;lt;i&amp;gt;house&amp;lt;/i&amp;gt;&amp;lt;par n=&amp;quot;beer__n&amp;quot;/&amp;gt;&amp;lt;/e&amp;gt;&lt;br /&gt;
  &amp;lt;/section&amp;gt;&lt;br /&gt;
&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il génère les chaînes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lt-expand test-en.dix&lt;br /&gt;
beer:beer&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;&lt;br /&gt;
beers:beer&amp;lt;n&amp;gt;&amp;lt;pl&amp;gt;&lt;br /&gt;
school:school&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;&lt;br /&gt;
schools:school&amp;lt;n&amp;gt;&amp;lt;pl&amp;gt;&lt;br /&gt;
computer:computer&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;&lt;br /&gt;
computers:computer&amp;lt;n&amp;gt;&amp;lt;pl&amp;gt;&lt;br /&gt;
house:house&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;&lt;br /&gt;
houses:house&amp;lt;n&amp;gt;&amp;lt;pl&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais notre [[Bidix (français)|bidix]] contient seulement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;alphabet&amp;gt;abcdefghijklmnopqrstuvwxyz&amp;lt;/alphabet&amp;gt;&lt;br /&gt;
  &amp;lt;sdefs&amp;gt;&lt;br /&gt;
    &amp;lt;sdef n=&amp;quot;n&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;sdef n=&amp;quot;sg&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;sdef n=&amp;quot;pl&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/sdefs&amp;gt;&lt;br /&gt;
  &amp;lt;pardefs&amp;gt;&lt;br /&gt;
  &amp;lt;/pardefs&amp;gt;&lt;br /&gt;
  &amp;lt;section id=&amp;quot;main&amp;quot; type=&amp;quot;standard&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;e&amp;gt;&amp;lt;p&amp;gt;&amp;lt;l&amp;gt;beer&amp;lt;s n=&amp;quot;n&amp;quot;/&amp;gt;&amp;lt;/l&amp;gt;&amp;lt;r&amp;gt;garagardo&amp;lt;s n=&amp;quot;n&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/e&amp;gt;&lt;br /&gt;
    &amp;lt;e&amp;gt;&amp;lt;p&amp;gt;&amp;lt;l&amp;gt;house&amp;lt;s n=&amp;quot;n&amp;quot;/&amp;gt;&amp;lt;/l&amp;gt;&amp;lt;r&amp;gt;etxe&amp;lt;s n=&amp;quot;n&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/e&amp;gt;&lt;br /&gt;
  &amp;lt;/section&amp;gt;&lt;br /&gt;
&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On ne veut pas mettre les entrées pour &amp;quot;computer&amp;quot; et &amp;quot;school&amp;quot;, parce qu&amp;#039;alors on pourrait obtenir des &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; sur notre sortie. &lt;br /&gt;
&lt;br /&gt;
Voici un Makefile qui étant donné deux dictionnaires &amp;lt;code&amp;gt;test-en.dix&amp;lt;/code&amp;gt; (le monodix) et &amp;lt;code&amp;gt;test-en-eu.dix&amp;lt;/code&amp;gt; (le bidix), va produire un transducteur binaire du monodix (dans le format [[HFST]] pour l&amp;#039;instant) qui contient seulement les chaînes correspondant aux préfixes dans le bidix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
all:&lt;br /&gt;
	lt-comp lr test-en.dix test-en.bin&lt;br /&gt;
	lt-comp lr test-en-eu.dix test-en-eu.bin&lt;br /&gt;
	lt-print test-en.bin &amp;gt; test-en.att&lt;br /&gt;
	lt-print test-en-eu.bin &amp;gt; test-en-eu.att&lt;br /&gt;
	hfst-txt2fst -e ε &amp;lt;  test-en.att &amp;gt; test-en.fst&lt;br /&gt;
	hfst-txt2fst -e ε &amp;lt;  test-en-eu.att &amp;gt; test-en-eu.fst&lt;br /&gt;
	hfst-invert test-en.fst -o test-en.mor.fst&lt;br /&gt;
	hfst-project -p upper test-en-eu.fst &amp;gt; test-en-eu.en.fst&lt;br /&gt;
	echo &amp;quot; ?* &amp;quot; | hfst-regexp2fst &amp;gt; any.fst&lt;br /&gt;
	hfst-concatenate -1 test-en-eu.en.fst -2 any.fst -o test-en-eu.en-prefixes.fst&lt;br /&gt;
	hfst-compose-intersect -1 test-en-eu.en-prefixes.fst -2 test-en.mor.fst | hfst-invert -o test-en.trimmed.fst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm *.bin *.att *.fst&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si on lance &amp;lt;code&amp;gt;hfst-fst2strings&amp;lt;/code&amp;gt;, on obtient :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ hfst-fst2strings test-en.trimmed.fst&lt;br /&gt;
beer:beer&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;&lt;br /&gt;
beers:beer&amp;lt;n&amp;gt;&amp;lt;pl&amp;gt;&lt;br /&gt;
house:house&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;&lt;br /&gt;
houses:house&amp;lt;n&amp;gt;&amp;lt;pl&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comment implémenter ça dans lttoolbox directement ==&lt;br /&gt;
&lt;br /&gt;
Ça pourrait être bien de le voir comme :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lt-comp rl apertium-en-ca.en-ca.dix ca-en.autobil.bin&lt;br /&gt;
&lt;br /&gt;
$ lt-comp lr apertium-en-ca.ca.dix ca-en.automorf.bin ca-en.autobil.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
où le coté gauche du second transducteur (ca-en.autobil.bin) est converti en préfixes, et seulement les chaînes du premier transducteur qui correspondent aux préfixes dans le second transducteur sont inclues dans la compilation finale.&lt;br /&gt;
&lt;br /&gt;
== Voir aussi==&lt;br /&gt;
&lt;br /&gt;
* [[Test de vocabulaire]]&lt;br /&gt;
* [[Pourquoi nous tronquons]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Quality control]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Documentation en français]]&lt;/div&gt;</summary>
		<author><name>Bech</name></author>
		
	</entry>
</feed>