-
Notifications
You must be signed in to change notification settings - Fork 1
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
Improve datamodel #48
Conversation
👍 |
+1 for misspelling fixes. After reflexion, I'm also ok for the change from forall to exists of predicate quantifier because it make sense, imho, to say that (A, B, C) is true if, and only if, forall a, c there is a relation between a and c in B. @s-i-newton Your opinion? |
it's not exactly what i mean:
i don't know what is the best |
If we consider that lists of predicates are only multiple attempts to nounify a verb, we should say that only one of them is supposed to be true for all triples: (A,B,C) true <=> ∃ b∈B, ∀ a∈A, ∀ c∈C, (a,b,c) true (ie: there exists a same link between all the elements of A and C). In the same way, we could change:
And:
|
@yhamoudi Your change will really increase the complexity of the semantic of triple with holes and I don't think it's a good idea: why should we prefer the predicate that gives the most of results against the others? Maybe an other predicate that gives less but more accurate results was the good one. So, this distinction is maybe not the right one. About the change of full triples, I liked the 3 "for all" because it shows that the three arguments (subject, predicate and object) where more or less "symmetric". But, as there is a real use case I'm ok to change its definition if we find an other one that has nice and easy to understand semantic. In fact I think all the debate is around the question "do we have nice and accurate predicates" (current assumption of the data model) or 'crappy words" (way you want to take because the nounification algorithms can't do better). It's a nearly fundamental change of mind. So, I think this pull request opens, in fact, a far bigger question that just changing the semantic of a node. @Ezibenroc |
It's relevant to have lists for subjects or objects. But is it natural/necessary to have a list for predicates (when predicates are not seen as "alternatives) ? If I want the birth date + the birth place of Obama, I split the questions in 2 parts (same problem than before, should we handle Predicates are (almost) the only part of the normal form where new words can appear (ie words that are not in the initial question). All the algorithms that produce normal forms from questions need more "freedom" on these kind of nodes because they have to guess what they should add. Other modules that output questions and want to have several predicates in a node just have to split the triple with ∪.
If "nice and accurate predicates" means to have exactly the right predicate, it seems very difficult (
I don't know if it's relevant or not to change also the way we consider triples with hole. But we must have the same policy concerning triples with and without holes. If we agree that predicates are lists of alternatives for full triples, then it must also apply for triples with hole (and eventually change the way we evaluate them, because at least one triple is supposed to exists for all the subjects) Another possibility is to allow only one predicate (per triple) into the datamodel and to introduce the notion of "alternatives predicates" only into the implementation. |
"Who is the president of France and the capital of China?": Yes we should definitively handle this kind of questions. And it's already done with the clean normal form "(France, president, ?) ∪ (China, capital, ?)". I don't see what is the link with the current problem. Ok. I buy your arguments for relaxing predicates and I'm ok to change the full triple specification. Now, two options:
I prefer option 2 because:
|
Related to ProjetPP/PPP-QuestionParsing-Grammatical#73. I don't think that representing this kind of questions with a list of predicates that are totally differents is a nice way to do. It was an argument to define lists of predicates as lists of alternatives. Concerning the way we define full triples, none of the 2 options totally convince me, so I agree to choose the 2nd one because it has the least impact. (the datamodel has been updated, those that don't agree must speak or it will be merged as it) |
There is an asymmetry between full triples and triples with holes that I find strange. |
+1 for the current version. I think we should wait an agreement from @s-i-newton and @progval before merge. |
@Ezibenroc It's not a new problem. We should maybe relax the definition of full triple with 3 exists in order to have a symmetry... But it's an other topic |
Alright. +1 for the merge. |
👍 |
It's consistant and... all is alright. |
Yeah! \o/ |
(la, lb, lc)
is true iff for alla
∈la
, there existsb
∈lb
such that for allc
∈lc
,(a, b, c)
is true. If we don't do this, we cannot use alternative words into triples (otherwise full triples will be almost always false...)