最近,我正在尝试用Python的HFST设置一个有限状态转换器。我想让换能器做的很简单。如果单词的第一个字符是'o‘,则输出为“正”,如果同一个单词后面有字符,我将使用regex为每个字符输出empty。但我不会只接受"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)有没有人能帮帮我或者给我举一些其他的例子。我会非常感激的。
发布于 2021-10-13 23:11:26
缺少的一步是,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)]}https://stackoverflow.com/questions/68362408
复制相似问题