Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MWE list (num) #118

Closed
fcbr opened this issue Dec 12, 2016 · 4 comments
Closed

MWE list (num) #118

fcbr opened this issue Dec 12, 2016 · 4 comments
Assignees

Comments

@fcbr
Copy link
Contributor

fcbr commented Dec 12, 2016

continuation of #110

POSMWE=NUM
deprel: flat
Composição interna: NUM CONJ NUM

cento_e_quatro
cinquenta_e_três
Setenta_e_cinco
Trinta_e_sete

POSMWE=NUM
deprel: flat
Composição interna: NUM NUM

meia_dúzia

@fcbr fcbr self-assigned this Dec 13, 2016
@fcbr fcbr closed this as completed in 2ca5b2e Dec 26, 2016
@arademaker
Copy link
Collaborator

arademaker commented Dec 26, 2016

Neste caso, parece que o código de @fcbr não verifica a relação prévia entre os tokens das MWEs, bastando, para aplicar a transformação, que os tokens da MWE estejam em sequência.

?a:[form= "cento"] . ?b:[form="e"] . ?c:[form = "quatro"] =>
?a:[pos=NUM, misc + "MWEPOS=NUM"] ?b:[pos=CCONJ] ?c:[pos=NUM]
+flat(?b,?a) +flat(?c,?a)

Neste caso, introduzi o operador . para diferenciar a simples justaposição de padrões no lado esquerdo da regra. A idéia é que P . Q faz match quando o padrão P ocorre seguido do padrão Q. Enquanto a notação com espaço P Q não impõe qualquer ordem relativa do P e Q, os espaços entre padrões formam uma "sopa" de padrões que devem ser satisfeitos para aplicação da regra. Em outras palavras, o espaço é associativo e comutativo, mas o ponto é apenas associativo.

Também não estou preocupado em remover nenhuma relação prévia entre os tokens envolvidos, dado que a inclusão das relações flat irá, de qualquer forma, sobreescrever os valores de deprel e head dos tokens ?b e ?c.

Do comentário inicial do issue, entendi que a composição interna não é critério de match mas desejável output, é isso?

Correto @fcbr ?

@fcbr
Copy link
Contributor Author

fcbr commented Dec 26, 2016

@arademaker sim, eu verifico a composicao interna da MWE para me certificar que ha' apenas um ponto de "saida": https://github.com/own-pt/bosque-UD/blob/master/scripts/fix-issue-118.lisp#L24-L34

@fcbr
Copy link
Contributor Author

fcbr commented Dec 26, 2016

@arademaker o codigo busca pela MWE no campo MISC. Entao acho que a regra apropriada seria algo como:

?a:[form= "cento", misc = "MWE=cento_e_quatro"] . ?b:[form="e"] . ?c:[form = "quatro"] =>
?a:[pos=NUM, misc + "MWEPOS=NUM"] ?b:[pos=CCONJ] ?c:[pos=NUM]
+flat(?b,?a) +flat(?c,?a)

Mas, tambem relacionado com o meu comentario acima, em geral um problema com as regras acima e' que qualquer um dos tokens da MWE pode ser a "saida" (ie., qual o head e qual o deprel). Temos que obter este valor para que a raiz da MWE aponte para o mesmo lugar, com a mesma deprel.

@arademaker
Copy link
Collaborator

arademaker commented Dec 27, 2016

Nas regras, como em geral é feito em sistema de reescrita, as variáveis do lado esquerdo são implicitamente quantificadas universalmente (forall). Isto quer dizer que quando escrevemos:

?a:[...] ?b:[...] => ...

Queremos todos os bindings possíveis para as variáveis ?a e ?b que satisfazem o padrão à esquerda da query. Na verificação destacada pelo @fcbr em https://github.com/own-pt/bosque-UD/blob/master/scripts/fix-issue-118.lisp#L24-L34 parece que precisamos de quantificações explicitas para dizer algo como: "não existe mais de um token conectado a algum dos tokens mencionados no padrão".

Um verificação seria como abaixo, mas ainda não estou satisfeito não, talvez alguns operadores de SPARQL possam dar alguma idéia.

?a:[form= "cento", misc = "MWE=cento_e_quatro"] . ?b:[form="e"] . ?c:[form = "quatro"] 
?r1(?z,?x) ?r2(?z,?y) in(?z, (?a ?b ?c))
 =>
ERROR

Em tempo, temos que pensar com um pouco mais de cuidado sobre esta semâtica de quantificação implicita. Acho que nas verificações, intuitivamente usamos a interpretação de quantificação existencial e não universal.

Vamos precisar de expressividade equivalente para testar propriedades globais das sentenças como "toda sentença deve ter um root e apenas um".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants