LR-POR/PorGram

implement a lexicon manager

Opened this issue · 3 comments

@arademaker , para evitar o tipo de problema descrito em #59, sugiro implementar uma classe Lexicon em Python que armazene todo o léxico da PorGram numa estrutura de dicionário e permita também atualizar o léxico:

>>> mylexicon = Lexicon('*.tdl') 
>>> mylexicon.get('convencer')
[convencer_1 , convencer_2]
>>> convencer_1.type
'a-que-ditrans-second-arg-control-verb-lex' 
>>> convencer_2.type
'a-inf-ditrans-second-arg-control-verb-lex' 
>>> Lexicon.update('convencer','some-other-type')
>>> mylexicon.get("convencer")
[convencer_1 , convencer_2,convencer_3]
>>> convencer_3.type
'some-other-type'
>>> Lexicon.print('new-entries.tdl')
New entries saved to file: new-entries.tdl

O construtor da classe Lexicon poderia admitir também uma lista de arquivos em TDL ou um arquivo de script de carregamento do LKB em LISP, onde se listam os arquivos do léxico.
Essa classe seria útil para criar novas entradas a partir dos dados do Bosque, utilizando a biblioteca Valence. Um desafio é como lidar com os dados criados por meio do questionário. Por exemplo, verbos criados por essa via com uma única variante não possuem o sufixo _1. O interessante seria uma função que editasse o arquivo choices, inserindo esse índice.

Relevante também para #19.

A ideia de um gerenciador de entradas lexicais já foi proposta. Existe https://github.com/delph-in/docs/wiki/LexDbInitialize e podemos obter mais informações de como usar.

Também gostaria de sugerir começarmos a investir em uma biblioteca integrada em haskell e não em manter dos códigos em haskell e Python.