Difference between revisions of "Using flag diacritics for faster compilation"

From LING073
Jump to: navigation, search
(→‎Implementing the change)
(→‎Implementing the change)
Line 9: Line 9:
 
* add <code>-F</code> as a switch to the <code>hfst-compose</code> command in the the <code>automorf.hfst</code> line
 
* add <code>-F</code> as a switch to the <code>hfst-compose</code> command in the the <code>automorf.hfst</code> line
  
−
This will all look something like this:
+
Be sure to rerun <code>./autogen.sh</code> when you're done.
 +
 
 +
Also make sure to do all of this the same way in your multilingual pair.
 +
 
 +
The changes will look something like this:
 
<pre>
 
<pre>
 
  TARGETS_COMMON =                      \
 
  TARGETS_COMMON =                      \
Line 39: Line 43:
 
+      hfst-compose -F -1 $< -2 .deps/$(LANG1).spellrelax.hfst | hfst-invert | hfst-fst2fst -O -o $@
 
+      hfst-compose -F -1 $< -2 .deps/$(LANG1).spellrelax.hfst | hfst-invert | hfst-fst2fst -O -o $@
 
</pre>
 
</pre>
−
 
−
Be sure to rerun <code>./autogen.sh</code> when you're done.
 
−
 
−
Also make sure to do all of this the same way in your multilingual pair.
 
  
 
== Additional steps ==
 
== Additional steps ==

Revision as of 03:21, 22 March 2023

lexd is a bit slow to compile dictionaries that make use of prefixes with large lexicons (or similar).

To speed this up, you can enable compiling to flag diacritics.

Implementing the change

First thing you want to do is edit your Makefile.am:

  • remove autogen.bin and automorf.bin lines from the TARGETS_COMMON list at the top
  • add -f as a switch to the lexd commmands
  • add -F as a switch to the hfst-compose command in the the automorf.hfst line

Be sure to rerun ./autogen.sh when you're done.

Also make sure to do all of this the same way in your multilingual pair.

The changes will look something like this:

 TARGETS_COMMON =                       \
        $(LANG1).automorf.hfst          \
-       $(LANG1).automorf.bin           \
        $(LANG1).automorf.att.gz        \
        $(LANG1).autogen.hfst           \
-       $(LANG1).autogen.bin            \
        $(LANG1).autogen.att.gz         \
        $(LANG1).autopgen.bin           \
        $(LANG1).rlx.bin            \
        $(LANG1).zhfst

 .deps/$(LANG1).RL.lexd.hfst: .deps/$(LANG1).RL.lexd
-       lexd $< .deps/$(LANG1).RL.lexd.att
+       lexd -f $< .deps/$(LANG1).RL.lexd.att
        hfst-txt2fst .deps/$(LANG1).RL.lexd.att -o $@
 
 .deps/$(LANG1).LR.lexd.hfst: .deps/$(LANG1).LR.lexd
-       lexd $< .deps/$(LANG1).LR.lexd.att
+       lexd -f $< .deps/$(LANG1).LR.lexd.att
        hfst-txt2fst .deps/$(LANG1).LR.lexd.att -o $@
 $(LANG1).automorf.hfst: .deps/$(LANG1).LR.hfst .deps/$(LANG1).spellrelax.hfst
-       hfst-compose -1 $< -2 .deps/$(LANG1).spellrelax.hfst | hfst-invert | hfst-fst2fst -O -o $@
+       hfst-compose -F -1 $< -2 .deps/$(LANG1).spellrelax.hfst | hfst-invert | hfst-fst2fst -O -o $@

Additional steps

Updating modes.xml

You'll want to change all the instances of lt-proc and auto*.bin in your modes.xml file to hfst-proc and auto*.hfst, respectively.

Make sure to do the same in your multilingual pair.

Running hfst-expand and hfst-lookup

You'll also need to add -X obey-flags to hfst-expand or hfst-lookup.

Running tests

In theory you shouldn't have to do anything extra?