Кто-нибудь работает с HFST? (Хельсинкская технология конечных состояний)

в последнее время я пытаюсь настроить преобразователь конечного состояния с HFST для Python. То, что я хочу, чтобы преобразователь делал это очень просто. Если первым символом слова является 'o', вывод будет «Положительным», а если в том же слове есть символы, следующие за ним, я просто выводлю пустые символы для каждого символа, используя регулярное выражение. Но я не принимаю только «о».

      e.g. "oa" = "positive" , empty
     "aa" = 0
     "o"  = 0

То, что я получил так далеко от руководств по hfst, следующее:

      t = hfst.HfstBasicTransducer()
t.add_state(1)
t.add_state(2)
tr = hfst.HfstBasicTransition(1,"o","positive",0.0)
tr2 = hfst.regex("?:0")
t.add_transition(0,1,tr)
t.add_transition(1,2, tr2)

Может ли кто-нибудь помочь мне или привести другие примеры. Я был бы очень признателен.

1 ответ

Недостающий шаг в том, что lookup() будет возвращать только те пути, которые заканчиваются конечным состоянием, которое вы можете указать с помощью transducer.set_final_weight(state, weight).

      >>> import hfst
>>> t = hfst.HfstBasicTransducer()
>>> t.add_state(1)
1
>>> tr = hfst.HfstBasicTransition(1,'o', 'positive',0.0)
>>> t.add_transition(0,tr)
>>> t.set_final_weight(1,0.0)
>>> t.lookup('o')
{'o': [('positive', 0.0)]}
Другие вопросы по тегам