Difference between revisions of "Aligning a corpus with fast align"

From Apertium
Jump to navigation Jump to search
Line 7: Line 7:
 
* Fast_align (get it [https://github.com/clab/fast_align here])
 
* Fast_align (get it [https://github.com/clab/fast_align here])
 
* Two apertium language packages
 
* Two apertium language packages
  +
* fast_align merge script (get it [https://svn.code.sf.net/p/apertium/svn/trunk/apertium-tools/ordlist-fra-fastalign.py here])
   
 
==Process==
 
==Process==
Line 20: Line 21:
   
 
<pre>
 
<pre>
cat /tmp/udhr.kaz.tagged | sed 's/\(<\(n\|adj\|adv\)>\)\(<[^>]\+>\)\+/\1/g' | sed 's/\(<v><tv>\|<v><iv>\)\(<[^>]\+>\)\+/\1/g' | apertium-pretransfer > /tmp/udhr.kaz.trimmed
+
cat /tmp/udhr.kaz.tagged | sed 's/\(<\(n\|adj\|adv\)>\)\(<[^>]\+>\)\+/\1/g' | sed 's/\(<v><tv>\|<v><iv>\)\(<[^>]\+>\)\+/\1/g' | sed 's/\$/$ /g' | sed 's/ */ /g' | apertium-pretransfer > /tmp/udhr.kaz.trimmed
cat /tmp/udhr.kir.tagged | sed 's/\(<\(n\|adj\|adv\)>\)\(<[^>]\+>\)\+/\1/g' | sed 's/\(<v><tv>\|<v><iv>\)\(<[^>]\+>\)\+/\1/g' | apertium-pretransfer > /tmp/udhr.kir.trimmed
+
cat /tmp/udhr.kir.tagged | sed 's/\(<\(n\|adj\|adv\)>\)\(<[^>]\+>\)\+/\1/g' | sed 's/\(<v><tv>\|<v><iv>\)\(<[^>]\+>\)\+/\1/g' | sed 's/\$/$ /g' | sed 's/ */ /g' | apertium-pretransfer > /tmp/udhr.kir.trimmed
   
 
</pre>
 
</pre>
Line 40: Line 41:
 
</pre>
 
</pre>
   
  +
<!--
 
Symmetrise the alignments:
 
Symmetrise the alignments:
   
Line 45: Line 47:
   
 
</pre>
 
</pre>
  +
-->
  +
  +
Create the wordlist:
  +
  +
<pre>
  +
  +
$ python3 ~/scripts/ordlist-fra-fastalign.py /tmp/udhr.kaz-kir.input /tmp/udhr.kaz-kir.align /tmp/udhr.kir-kaz.align
  +
</pre>
  +
   
 
[[Category:Documentation]]
 
[[Category:Documentation]]

Revision as of 10:08, 9 December 2015


What you need

  • A sentence-aligned parallel corpus
  • Fast_align (get it here)
  • Two apertium language packages
  • fast_align merge script (get it here)

Process

First analyse the corpus with the language packages.

$ cat /tmp/udhr.kaz | apertium-destxt | lt-proc -w ~/source/apertium/languages/apertium-kaz/kaz.automorf.bin | cg-proc -n -1 ~/source/apertium/languages/apertium-kaz/kaz.rlx.bin | apertium-retxt > /tmp/udhr.kaz.tagged
$ cat /tmp/udhr.kir | apertium-destxt | lt-proc -w ~/source/apertium/languages/apertium-kir/kir.automorf.bin | cg-proc -n -1 ~/source/apertium/languages/apertium-kir/kir.rlx.bin | apertium-retxt > /tmp/udhr.kir.tagged

Then remove superfluous tags (for example for lexical alignment, case is not really interesting).

cat /tmp/udhr.kaz.tagged | sed 's/\(<\(n\|adj\|adv\)>\)\(<[^>]\+>\)\+/\1/g' | sed 's/\(<v><tv>\|<v><iv>\)\(<[^>]\+>\)\+/\1/g' | sed 's/\$/$ /g' | sed 's/  */ /g' | apertium-pretransfer  > /tmp/udhr.kaz.trimmed
cat /tmp/udhr.kir.tagged | sed 's/\(<\(n\|adj\|adv\)>\)\(<[^>]\+>\)\+/\1/g' | sed 's/\(<v><tv>\|<v><iv>\)\(<[^>]\+>\)\+/\1/g' | sed 's/\$/$ /g' | sed 's/  */ /g' | apertium-pretransfer  > /tmp/udhr.kir.trimmed

Create the input file for fast_align:

$ paste /tmp/udhr.kaz.trimmed /tmp/udhr.kir.trimmed  | sed 's/ *\t */ ||| /g' > /tmp/udhr.kaz-kir.input

Run fast_align:


$ ./fast_align -d -v -o -i /tmp/udhr.kaz-kir.input > /tmp/udhr.kaz-kir.align

$ ./fast_align -d -v -o -r -i /tmp/udhr.kaz-kir.input > /tmp/udhr.kir-kaz.align


Create the wordlist:


$ python3 ~/scripts/ordlist-fra-fastalign.py /tmp/udhr.kaz-kir.input /tmp/udhr.kaz-kir.align /tmp/udhr.kir-kaz.align