Преобразователи Pushdown в пинини?
Меня интересует использование функциональности PDT в pynini, но я не могу найти по ней никакой хорошей документации. Я хотел бы сделать что-то вроде замены
.
с соответствующей закрывающей скобкой (так
({()..
станет
({()})
). Возможно ли что-то подобное?
Вот что у меня есть до сих пор:
import pynini
text = '({()..'
fst = pynini.closure(
pynini.cross('(', '(a') | pynini.cross(')', ')A') |
pynini.cross('{', '{b') | pynini.cross('}', '}B') |
pynini.cross('.', ')A') | pynini.cross('.', '}B'))
parens = pynini.PdtParentheses()
parens.add_pair(ord('a'), ord('A'))
parens.add_pair(ord('b'), ord('B'))
p = pynini.pdt_compose(text, fst, parens=parens, compose_filter='expand')