J'essaye de construire un analyseur sémantique en utilisant la bibliothèque NLTK de python et en suivant la représentation de l'événement néo-Davidsonien. J'ai construit ma grammaire pour inclure des caractéristiques sémantiques qui analysent correctement mais je suis aux prises avec des constituants coordonnés. Par exemple, ma grammaire a:nltk analyse sémantique avec coordination
PropN[SEM=<\P.P(Mary)>] -> 'Mary'
PropN[SEM=<\P.P(John)>] -> 'John'
IV[SEM=<\x.exists e.(drinks(e) & drinker(e, x))>] -> 'drinks'
NP[SEM=?np] -> PropN[SEM=?np]
VP[SEM=?v] -> IV[SEM=?v]
S[SEM=<?subj(?vp)>] -> NP[SEM=?subj] VP[SEM=?vp]
Donc, si les phrases est "boissons John" le résultat est:
exists e.(drinks(e) & drinker(e,John)).
Mais si j'ajoute une règle telle que:
NP[SEM=<?p | ?q>] -> PropN[SEM=?p] CONJ PropN[SEM=?q]
comme dans "John ou Mary", je finis par obtenir ceci:
(\P.P(John) | \P.P(Mary))(\x.exists e.(drinks(e) & drinker(e,x)))
Comme dans, les lambda NP ne sont pas passés dans l'argument pour le verbe. J'ai essayé de regarder autour mais il y a très peu d'informations sur la coordination dans l'analyse sémantique nltk, et encore moins sur l'utilisation de lambdas. Je sais que c'est possible, parce qu'un camarade de classe a apparemment eu le sien pour travailler mais je ne suis pas sûr de ce qu'est le truc.
Merci! C'était super utile pour moi. – erip