From: <ji...@us...> - 2011-06-03 17:02:48
|
Revision: 2849 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2849&view=rev Author: jialva Date: 2011-06-03 17:02:41 +0000 (Fri, 03 Jun 2011) Log Message: ----------- New update of fuzzyDL-Learner Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/learningproblems/fuzzydll/FuzzyPosNegLPStandard.java trunk/components-core/src/main/java/org/dllearner/reasoning/fuzzydll/FuzzyDLReasonerManager.java trunk/components-core/src/main/java/org/dllearner/reasoning/fuzzydll/FuzzyOWLAPIReasoner.java Added Paths: ----------- trunk/components-core/log/ Modified: trunk/components-core/src/main/java/org/dllearner/learningproblems/fuzzydll/FuzzyPosNegLPStandard.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/learningproblems/fuzzydll/FuzzyPosNegLPStandard.java 2011-06-03 14:57:18 UTC (rev 2848) +++ trunk/components-core/src/main/java/org/dllearner/learningproblems/fuzzydll/FuzzyPosNegLPStandard.java 2011-06-03 17:02:41 UTC (rev 2849) @@ -513,10 +513,11 @@ double crispAccuracy = crispAccuracy(description, noise); // if I erase next line, fuzzy reasoning fails - if (crispAccuracy == -1) { -// System.out.println("crisp return -1"); - // return -1; - } +// if (crispAccuracy == -1) { +// System.out.print(description); +// System.out.println(); +// // return -1; +// } // BEGIN // added by Josue @@ -524,6 +525,10 @@ // double posMembership = 0; // double negMembership = 0; double descriptionMembership = 0; + double singleMembership = 0; + // double accumulatedSingleMembership = 0; + double nonAccumulativeDescriptionMembership = 0; + double accumulativeDescriptionMembership = 0; // System.out.println("noise = " + noise); @@ -531,15 +536,15 @@ // int individualCounter = fuzzyExamples.size(); double individualCounter = totalTruth; for (FuzzyIndividual fuzzyExample : fuzzyExamples) { - descriptionMembership += reasoner.hasTypeFuzzyMembership(description, fuzzyExample); - // individualCounter--; - if (individualCounter >= 1) individualCounter -= fuzzyExample.getTruthDegree(); // before it was individual--; - // before -// if ((descriptionMembership + individualCounter) / fuzzyExamples.size() < noise) -// return -1; - // after (to match the noise management of the crisp part) - if ((descriptionMembership + individualCounter) < ((1 - noise) * totalTruth)) + singleMembership = reasoner.hasTypeFuzzyMembership(description, fuzzyExample); + // accumulatedSingleMembership += singleMembership; + nonAccumulativeDescriptionMembership = 1 - Math.abs(fuzzyExample.getTruthDegree() - singleMembership); + descriptionMembership += nonAccumulativeDescriptionMembership; + individualCounter -= fuzzyExample.getTruthDegree(); + if ((accumulativeDescriptionMembership + (nonAccumulativeDescriptionMembership * fuzzyExample.getTruthDegree()) + individualCounter) < ((1 - noise) * totalTruth)) return -1; + accumulativeDescriptionMembership += nonAccumulativeDescriptionMembership * fuzzyExample.getTruthDegree(); + } double fuzzyAccuracy = descriptionMembership / (double)fuzzyExamples.size(); @@ -590,12 +595,14 @@ double coveredMembershipDegree = 0; double totalMembershipDegree = 0; double invertedCoveredMembershipDegree = 0; + double lastMembershipDegree = 0; // TODO to optimize for (FuzzyIndividual ind: fuzzyExamples) { - coveredMembershipDegree += reasoner.hasTypeFuzzyMembership(description, ind) * ind.getTruthDegree(); + lastMembershipDegree = (1 - Math.abs(ind.getTruthDegree() - reasoner.hasTypeFuzzyMembership(description, ind))); + coveredMembershipDegree += lastMembershipDegree * ind.getTruthDegree(); totalMembershipDegree += ind.getTruthDegree(); - invertedCoveredMembershipDegree += (1 - ind.getTruthDegree()) * (1 - reasoner.hasTypeFuzzyMembership(description, ind)); + invertedCoveredMembershipDegree += (1 - ind.getTruthDegree()) * (1 - lastMembershipDegree); } double fuzzyRecall = totalMembershipDegree == 0 ? 0 :coveredMembershipDegree/totalMembershipDegree; // TODO this is like this??? not sure Modified: trunk/components-core/src/main/java/org/dllearner/reasoning/fuzzydll/FuzzyDLReasonerManager.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/reasoning/fuzzydll/FuzzyDLReasonerManager.java 2011-06-03 14:57:18 UTC (rev 2848) +++ trunk/components-core/src/main/java/org/dllearner/reasoning/fuzzydll/FuzzyDLReasonerManager.java 2011-06-03 17:02:41 UTC (rev 2849) @@ -143,7 +143,7 @@ } // added by Josue - public double getFuzzyMembership(OWLClassExpression oce, OWLIndividual i, double truthDegree) { + public double getFuzzyMembership(OWLClassExpression oce, OWLIndividual i) { Individual fIndividual = fuzzyKB.getIndividual(shortFormParser.getShortForm((OWLEntity) i)); Concept fConcept = OWLAPI_fuzzyDLObjectParser.getFuzzyDLExpresion(oce); @@ -177,7 +177,8 @@ // sc.nextLine(); } - return (1 - Math.abs(truthDegree - queryResult.getSolution())); + // return (1 - Math.abs(truthDegree - queryResult.getSolution())); + return queryResult.getSolution(); } public KnowledgeBase getFuzzyKB() { Modified: trunk/components-core/src/main/java/org/dllearner/reasoning/fuzzydll/FuzzyOWLAPIReasoner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/reasoning/fuzzydll/FuzzyOWLAPIReasoner.java 2011-06-03 14:57:18 UTC (rev 2848) +++ trunk/components-core/src/main/java/org/dllearner/reasoning/fuzzydll/FuzzyOWLAPIReasoner.java 2011-06-03 17:02:41 UTC (rev 2849) @@ -624,7 +624,7 @@ // return crispReasonerOutput; // added by Josue to make be fuzzyDL and not Pellet to answer this method - double fuzzyReasonerOutput = ((FuzzyDLReasonerManager) reasoner).getFuzzyMembership(d, i, 1); + double fuzzyReasonerOutput = ((FuzzyDLReasonerManager) reasoner).getFuzzyMembership(d, i); return fuzzyReasonerOutput == 0 ? false : true; } @@ -1138,7 +1138,7 @@ OWLClassExpression desc = OWLAPIDescriptionConvertVisitor.getOWLClassExpression(description); OWLIndividual ind = factory.getOWLNamedIndividual(IRI.create(individual.getName())); - double fuzzyReasonerOutput = ((FuzzyDLReasonerManager) reasoner).getFuzzyMembership(desc, ind, individual.getTruthDegree()); + double fuzzyReasonerOutput = ((FuzzyDLReasonerManager) reasoner).getFuzzyMembership(desc, ind); // System.out.println("- d: " + d); // System.out.println("- i: " + i); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |