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

From LING073
Jump to: navigation, search
(Created page with "`lexd` is a bit slow to compile dictionaries that make heavy use of filters. To speed this up, you can enable compiling to flag diacritics. == Implementing the change == Fir...")
 
(→‎Implementing the change)
Line 39: Line 39:
 
+      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>
 +
 +
== Additional steps ==
 +
=== Updating modes.xml ===
 +
You'll want to change all the instances of <code>lt-proc</code> and <code>auto*.bin</code> in your <code>modes.xml</code> file to <code>hfst-proc</code> and <code>auto*.hfst</code>, respectively.
 +
 +
=== Running hfst-expand and hfst-lookup ===
 +
You'll also need to add <code>-X obey-flags</code> to <code>hfst-expand</code> or <code>hfst-lookup</code>.
 +
 +
=== Running tests ===

Revision as of 03:09, 22 March 2023

`lexd` is a bit slow to compile dictionaries that make heavy use of filters.

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

This will all 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.

Running hfst-expand and hfst-lookup

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

Running tests