From: <lor...@us...> - 2013-09-05 10:17:37
|
Revision: 4090 http://sourceforge.net/p/dl-learner/code/4090 Author: lorenz_b Date: 2013-09-05 10:17:34 +0000 (Thu, 05 Sep 2013) Log Message: ----------- Bugfixes. Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/isle/NLPHeuristic.java trunk/components-core/src/main/java/org/dllearner/algorithms/isle/SimpleWordSenseDisambiguation.java trunk/components-core/src/main/java/org/dllearner/algorithms/isle/index/semantic/SemanticIndex.java trunk/components-core/src/main/java/org/dllearner/algorithms/isle/index/semantic/simple/SimpleSemanticIndex.java trunk/components-core/src/main/java/org/dllearner/algorithms/isle/metrics/PMIRelevanceMetric.java trunk/components-core/src/main/java/org/dllearner/algorithms/isle/metrics/RelevanceUtils.java trunk/test/isle/swore/corpus/customer_requirement.txt Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/isle/NLPHeuristic.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/isle/NLPHeuristic.java 2013-09-05 09:26:44 UTC (rev 4089) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/isle/NLPHeuristic.java 2013-09-05 10:17:34 UTC (rev 4090) @@ -108,13 +108,13 @@ // the NLP based scoring - Description expression = node.getExpression();System.out.println(expression); + Description expression = node.getExpression();//System.out.println(expression); // OWLClassExpression owlapiDescription = OWLAPIConverter.getOWLAPIDescription(expression); // Set<Entity> entities = OWLAPIConverter.getEntities(owlapiDescription.getSignature()); Set<Entity> entities = expression.getSignature(); double sum = 0; for (Entity entity : entities) { - double relevance = entityRelevance.containsKey(entity) ? entityRelevance.get(entity) : 0;System.out.println(entity + ":" + relevance); + double relevance = entityRelevance.containsKey(entity) ? entityRelevance.get(entity) : 0;//System.out.println(entity + ":" + relevance); if(!Double.isInfinite(relevance)){ sum += relevance; } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/isle/SimpleWordSenseDisambiguation.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/isle/SimpleWordSenseDisambiguation.java 2013-09-05 09:26:44 UTC (rev 4089) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/isle/SimpleWordSenseDisambiguation.java 2013-09-05 10:17:34 UTC (rev 4090) @@ -6,6 +6,7 @@ import java.util.HashSet; import java.util.Set; +import org.apache.log4j.Logger; import org.dllearner.algorithms.isle.index.Annotation; import org.dllearner.algorithms.isle.index.SemanticAnnotation; import org.dllearner.core.owl.Entity; @@ -28,6 +29,9 @@ */ public class SimpleWordSenseDisambiguation extends WordSenseDisambiguation{ + + private static final Logger logger = Logger.getLogger(SimpleWordSenseDisambiguation.class.getName()); + private IRIShortFormProvider sfp = new SimpleIRIShortFormProvider(); private OWLDataFactory df = new OWLDataFactoryImpl(); private OWLAnnotationProperty annotationProperty = df.getRDFSLabel(); @@ -44,17 +48,21 @@ */ @Override public SemanticAnnotation disambiguate(Annotation annotation, Set<Entity> candidateEntities) { - String token = annotation.getToken(); + logger.debug("Linguistic annotations:\n" + annotation); + logger.debug("Candidate entities:" + candidateEntities); + String token = annotation.getToken().trim(); //check if annotation token matches label of entity or the part behind #(resp. /) for (Entity entity : candidateEntities) { Set<String> labels = getLabels(entity); for (String label : labels) { if(label.equals(token)){ + logger.debug("Disambiguated entity: " + entity); return new SemanticAnnotation(annotation, entity); } } String shortForm = sfp.getShortForm(IRI.create(entity.getURI())); if(annotation.equals(shortForm)){ + logger.debug("Disambiguated entity: " + entity); return new SemanticAnnotation(annotation, entity); } } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/isle/index/semantic/SemanticIndex.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/isle/index/semantic/SemanticIndex.java 2013-09-05 09:26:44 UTC (rev 4089) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/isle/index/semantic/SemanticIndex.java 2013-09-05 10:17:34 UTC (rev 4090) @@ -36,6 +36,8 @@ private SyntacticIndex syntacticIndex; private Map<Entity, Set<AnnotatedDocument>> index; private OWLOntology ontology; + + private int size = 0; public SemanticIndex(OWLOntology ontology, SyntacticIndex syntacticIndex, WordSenseDisambiguation wordSenseDisambiguation, EntityCandidateGenerator entityCandidateGenerator, LinguisticAnnotator linguisticAnnotator) { @@ -77,6 +79,7 @@ } logger.info("Annotated document:" + annotatedDocument); } + size = documents.size(); logger.info("...done."); } @@ -145,6 +148,6 @@ * @return the total number of documents contained in the index */ public int getSize() { - return index.size(); + return size; } } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/isle/index/semantic/simple/SimpleSemanticIndex.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/isle/index/semantic/simple/SimpleSemanticIndex.java 2013-09-05 09:26:44 UTC (rev 4089) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/isle/index/semantic/simple/SimpleSemanticIndex.java 2013-09-05 10:17:34 UTC (rev 4090) @@ -31,7 +31,7 @@ public SimpleSemanticIndex(OWLOntology ontology, SyntacticIndex syntacticIndex) { super(ontology); SimpleEntityCandidatesTrie trie = new SimpleEntityCandidatesTrie(new RDFSLabelEntityTextRetriever(ontology), ontology); - trie.printTrie(); +// trie.printTrie(); setSemanticAnnotator(new SemanticAnnotator( new SimpleWordSenseDisambiguation(ontology), new TrieEntityCandidateGenerator(ontology, trie), Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/isle/metrics/PMIRelevanceMetric.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/isle/metrics/PMIRelevanceMetric.java 2013-09-05 09:26:44 UTC (rev 4089) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/isle/metrics/PMIRelevanceMetric.java 2013-09-05 10:17:34 UTC (rev 4090) @@ -43,18 +43,27 @@ Set<AnnotatedDocument> documentsB = index.getDocuments(entityB); Set<AnnotatedDocument> documentsAB = Sets.intersection(documentsA, documentsB); int nrOfDocuments = index.getSize(); +// System.out.println("A:" + documentsA.size()); +// System.out.println("B:" + documentsB.size()); +// System.out.println("AB:" + documentsAB.size()); +// System.out.println(nrOfDocuments); double pA = nrOfDocuments == 0 ? 0 : ((double) documentsA.size() / (double) nrOfDocuments); double pB = nrOfDocuments == 0 ? 0 : ((double) documentsB.size() / (double) nrOfDocuments); double pAB = nrOfDocuments == 0 ? 0 : ((double) documentsAB.size() / (double) nrOfDocuments); - if(pA * pB == 0){ + if(pAB == 0 || pA * pB == 0){ return 0; } - double pmi = Math.log(pAB / pA * pB); + double pmi = Math.log(pAB / (pA * pB)); - double normalizedPMI = (pmi/-Math.log(pAB) + 1)/2; + double denominator = -Math.log(pAB); + if(denominator == 0){ + return 0; + } + double normalizedPMI = (pmi/denominator + 1)/2; + return normalizedPMI; } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/isle/metrics/RelevanceUtils.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/isle/metrics/RelevanceUtils.java 2013-09-05 09:26:44 UTC (rev 4089) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/isle/metrics/RelevanceUtils.java 2013-09-05 10:17:34 UTC (rev 4090) @@ -31,6 +31,7 @@ } public static Map<Entity, Double> getRelevantEntities(Entity entity, OWLOntology ontology, RelevanceMetric metric){ + System.out.println(entity); Map<Entity, Double> relevantEntities = new HashMap<Entity, Double>(); Set<OWLEntity> owlEntities = new HashSet<OWLEntity>(); @@ -39,8 +40,10 @@ owlEntities.addAll(ontology.getObjectPropertiesInSignature()); Set<Entity> otherEntities = OWLAPIConverter.getEntities(owlEntities); + otherEntities.remove(entity); for (Entity otherEntity : otherEntities) { double relevance = metric.getNormalizedRelevance(entity, otherEntity); + System.out.println(otherEntity + ":" + relevance); relevantEntities.put(otherEntity, relevance); } Modified: trunk/test/isle/swore/corpus/customer_requirement.txt =================================================================== --- trunk/test/isle/swore/corpus/customer_requirement.txt 2013-09-05 09:26:44 UTC (rev 4089) +++ trunk/test/isle/swore/corpus/customer_requirement.txt 2013-09-05 10:17:34 UTC (rev 4090) @@ -1 +1 @@ -A customer requirement is usually desired by at least one customer and usually specificed or captured via requirements engineering systems for later inspection by software developers and maintainers. The goal of involving customer in the requirements elicitation process is to improve the quality of the software (see also: requirements elicitation, open source software, E-Government). +A customer requirement is usually desired by at least one customer and usually specified or captured via requirements engineering systems for later inspection by software developers and maintainers. The goal of involving customer in the requirements elicitation process is to improve the quality of the software (see also: requirements elicitation, open source software, E-Government). This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |