Кто-нибудь работает с 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)]}