| 57 | |
| 58 | |
| 59 | def get_constraint_decoder(tokenizer, type_schema, decoding_schema, source_prefix=None): |
| 60 | |
| 61 | decoding_format_dict = { |
| 62 | 'role': RoleConstraintDecoder, |
| 63 | 'et': ETConstraintDecoder, |
| 64 | 'tri': TriConstraintDecoder, |
| 65 | } |
| 66 | |
| 67 | if decoding_schema in decoding_format_dict: |
| 68 | return decoding_format_dict[decoding_schema](tokenizer=tokenizer, type_schema=type_schema, source_prefix=source_prefix) |
| 69 | else: |
| 70 | raise NotImplementedError( |
| 71 | 'Type Schema %s, Decoding Schema %s do not map to constraint decoder.' % ( |
| 72 | decoding_schema, decoding_schema) |
| 73 | ) |
| 74 | |
| 75 | |
| 76 | class ConstraintDecoder: |