Olá!
Alguém tem alguma idéia de algoritmo para realizar o seguinte problema.
Preciso gerar frases randômicas a partir de uma lista de regras de uma linguagem livre de contexto.
S -> NP VP
Ou seja, uma regra S vira uma regra NP e uma regra VP, porém estas regras possuem probabilidades, pois são construídas assim:
S -> NP VP 0.4
S -> PP VP 0.6
Ou seja a primeira regra S tem 40% de chance de acontecer e a segunda 60%, preciso de um algoritmo para escolher a melhor e continuar derivando as regras até chegarem no fim.
A gramática é a seguinte:
[ S ] > [ PES ] [ OBJ ] ;1
[ PES ] > [ SUJ ] [ VER ] ;0.3
[ PES ] > [ SUJ ] [ COMP ] ;0.4
[ PES ] > [ PES ] [ VER ] ;0.3
[ OBJ ] > [ PREP ] [ SUJ ] ;0.3
[ OBJ ] > [ NOM ] [ QUANT ] ;0.1
[ OBJ ] > [ PRON ] [ NOM ] ;0.1
[ OBJ ] > [ NOM ] [ ADV ] ;0.4
[ OBJ ] > [ PREP ] [ NOM ] ;0.1
[ LIG ] > [ VER ] [ ART ] ;1
[ NOM ] > [ ART ] [ NOM ] ;0.2
[ COMP ] > [ CON ] [ SUJ ] ;1
[ VER ] > [ NEG ] [ VER ] ;0.14
Só para exemplificar. As regras são vetores, [0] equivale ao primeiro valor, [1] e [2] ao segundo e terceiro respectivamente o [4] possui o valor da probabilidade.
Se alguém puder ajudar obrigado!
Se precisarem que eu esclareça mais, por favor.