-
Notifications
You must be signed in to change notification settings - Fork 19
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 "exploit max length" for Dangling Operator #43
Comments
Hi. I think the following logic may be related to "max length exploitation" for the Dangling Operator. I also feel that this may be a bug that incorrectly filters out candidate rules. The problem seems to occur only when mining constants, so it's hard to spot. The above code's idea seems to be that "the last atom added to a rule should not be generated by the dangling operator since the resulting rule will definitely be not-closed". Nonetheless, this ignores the possibility of applying the instantiation operator and make the rule closed. Indeed, the code above seems to contradict the check done by the dangling operator itself: |
0k, now I get it.
The highlighted afirmation is wrong. Instantiation operator has already been applied to the dangling's output and is at I will drop PR #44 since it has already incomporated this wrong understanding. Nonetheless, the modification to the dangling's
|
I think I've finally found the real culprit for the performance boost shown in #46. This is Note that if Therefore, my proposed fix to this issue is: the current PR #46 + fixing the code above. |
Hi Antonio, Thanks for this nice inquiry. I agree with your analysis and I vote for merging your PR into AMIE's main branch. I am waiting for @lajus approval. Best, |
Hi.
Maximum rule length is an interesting pruning technique introduced in AMIE+. In "Fast rule mining in ontological knowledge bases with AMIE+", we can read:
Summing up, we have that:
I guess that dangling operator can be safely modified to consider if there are more than one non-closed variable, just as the instantiation operator.
Indeed, the dangling operator will:
Therefore, it can close at most one variable. The newly added variable may be closed by instantiation operator, but the previously opened variables cannot.
Best,
Antonio.
The text was updated successfully, but these errors were encountered: