From 9bd8588210b09b1b9c30d085300d32c6b0b91091 Mon Sep 17 00:00:00 2001 From: Bartlomiej Niton <bartek.niton@gmail.com> Date: Mon, 30 Jan 2017 16:46:48 +0100 Subject: [PATCH] AddMentionsByGroups comment update. --- src/main/java/pl/waw/ipipan/zil/core/md/detection/Detector.java | 214 +++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 file changed, 3 insertions(+), 211 deletions(-) diff --git a/src/main/java/pl/waw/ipipan/zil/core/md/detection/Detector.java b/src/main/java/pl/waw/ipipan/zil/core/md/detection/Detector.java index 6eb7989..17e9ef2 100644 --- a/src/main/java/pl/waw/ipipan/zil/core/md/detection/Detector.java +++ b/src/main/java/pl/waw/ipipan/zil/core/md/detection/Detector.java @@ -98,25 +98,15 @@ public class Detector { } /** - * Wyszukuję i oznaczam wszystkie NG* + * Wyszukuję i oznaczam wszystkie NG lub ciagi grup NG i PrepNG + * pasujace do schematow rzeczownikowych z Walentego * * @param sentence */ private static void addMentionsByGroups(Sentence sentence, Map<ValenceDicts,Map<String,ArrayList<String>>> valence) { - for (SyntacticGroup group : sentence.getGroups()) { - - /*SyntacticGroup nextGroup = group.getFollowingGroup(); - SyntacticGroup nextnextGroup = null; - SyntacticGroup nextnextnextGroup = null; - if (nextGroup != null) { - nextnextGroup = nextGroup.getFollowingGroup(); - if (nextnextGroup != null) { - nextnextnextGroup = nextnextGroup.getFollowingGroup(); - } - }*/ - + for (SyntacticGroup group : sentence.getGroups()) { if (group.getType().startsWith("NG")) { ArrayList<SyntacticGroup> nestedGroups = new ArrayList<SyntacticGroup>(); nestedGroups.add(group); @@ -130,194 +120,9 @@ public class Detector { Mention mention = createMention(nestedGroups, valence.get(ValenceDicts.NounsValence)); sentence.addMention(mention); } - - /*if (group.getType().startsWith("NG") && nextGroup != null && - nextnextGroup != null && nextnextnextGroup != null && - quatroCompatibility(group, nextGroup, nextnextGroup, - nextnextnextGroup, valence.get(ValenceDicts.NounsValence))) { - List<Token> heads = group.getSemanticHeadTokens(); - List<Token> segments = new ArrayList<Token>(); - segments.addAll(group.getTokens()); - segments.addAll(nextGroup.getTokens()); - segments.addAll(nextnextGroup.getTokens()); - segments.addAll(nextnextnextGroup.getTokens()); - - sentence.addMention(new Mention(segments, heads)); - } else if (group.getType().startsWith("NG") && nextGroup != null && - nextnextGroup != null && tripleCompatibility(group, nextGroup, nextnextGroup, valence.get(ValenceDicts.NounsValence))) { - List<Token> heads = group.getSemanticHeadTokens(); - List<Token> segments = new ArrayList<Token>(); - segments.addAll(group.getTokens()); - segments.addAll(nextGroup.getTokens()); - segments.addAll(nextnextGroup.getTokens()); - - sentence.addMention(new Mention(segments, heads)); - } else if (group.getType().startsWith("NG") && nextGroup != null && - groupsValenceCompatibility(group, nextGroup, sentence, valence.get(ValenceDicts.NounsValence)) - ) { - List<Token> heads = group.getSemanticHeadTokens(); - List<Token> segments = new ArrayList<Token>(); - segments.addAll(group.getTokens()); - segments.addAll(nextGroup.getTokens()); - - sentence.addMention(new Mention(segments, heads)); - } else if (group.getType().startsWith("NG")) { - List<Token> segments = group.getTokens(); - List<Token> heads = group.getSemanticHeadTokens(); - - sentence.addMention(new Mention(segments, heads)); - }*/ - } - } - - /*private static boolean isProperSchema(String schema, ArrayList<String> group1Types, - ArrayList<String> group2Types) { - for (String group1Type : group1Types) { - if (schemaContains(schema, group1Type)) { - for (String group2Type : group2Types) { - if (schemaContains(schema, group2Type)) { - return true; - } - } - } - } - return false; - }*/ - - /*private static boolean isProperSchema(String schema, ArrayList<String> group1Types, - ArrayList<String> group2Types) { - ArrayList<String> group1MPositions = getMatchingPositions(schema, group1Types); - ArrayList<String> group2MPositions = getMatchingPositions(schema, group2Types); - - ArrayList<ArrayList<String>> matchingPositions = new ArrayList<ArrayList<String>>(); - matchingPositions.add(group1MPositions); - matchingPositions.add(group2MPositions); - - if (matchingPositionsExists(matchingPositions)) { - ArrayList<ArrayList<String>> product = cartesianProduct(matchingPositions); - for (ArrayList<String> combination : product) { - Set<String> combinationSet = new HashSet<String>(combination); - if (combinationSet.size() == matchingPositions.size()) { - return true; - } - } } - return false; - }*/ - - /*private static boolean groupsValenceCompatibility(SyntacticGroup NG1, - SyntacticGroup NG2, Sentence sentence, - Map<String,ArrayList<String>> walentyMapping) { - Token NG1Head = NG1.getSemanticHeadTokens().get(0); - - String NGHeadBase = NG1Head.getBase(); - - if (!walentyMapping.containsKey(NGHeadBase)) { - return false; - } else { - ArrayList<String> NG2realizations = NG2.getWalentyRealizations(); - - ArrayList<String> schemata = walentyMapping.get(NGHeadBase); - for (String real : NG2realizations) { - for (String schema : schemata) { - if (schemaContains(schema, real)) { - return true; - } - } - } - } - return false; } - private static boolean tripleCompatibility(SyntacticGroup group1, - SyntacticGroup group2, SyntacticGroup group3, - Map<String,ArrayList<String>> walentyMapping) { - Token group1Head = group1.getSemanticHeadTokens().get(0); - - String group1HeadBase = group1Head.getBase(); - - if (!walentyMapping.containsKey(group1HeadBase)) { - return false; - } else { - ArrayList<String> group2realizations = group2.getWalentyRealizations(); - ArrayList<String> group3realizations = group3.getWalentyRealizations(); - - ArrayList<String> schemata = walentyMapping.get(group1HeadBase); - for (String schema : schemata) { - if (isProperSchema(schema, group2realizations, group3realizations)) { - return true; - } - } - } - return false; - } - - private static boolean quatroCompatibility(SyntacticGroup group1, - SyntacticGroup group2, SyntacticGroup group3, SyntacticGroup group4, - Map<String,ArrayList<String>> walentyMapping) { - Token group1Head = group1.getSemanticHeadTokens().get(0); - - String group1HeadBase = group1Head.getBase(); - - if (!walentyMapping.containsKey(group1HeadBase)) { - return false; - } else { - ArrayList<String> group2realizations = group2.getWalentyRealizations(); - ArrayList<String> group3realizations = group3.getWalentyRealizations(); - ArrayList<String> group4realizations = group4.getWalentyRealizations(); - - ArrayList<String> schemata = walentyMapping.get(group1HeadBase); - for (String schema : schemata) { - if (isTripleProperSchema(schema, group2realizations, group3realizations, - group4realizations)) { - return true; - } - } - } - return false; - } - - private static boolean isTripleProperSchema(String schema, ArrayList<String> group1Types, - ArrayList<String> group2Types, ArrayList<String> group3Types) { - for (String group1Type : group1Types) { - if (schemaContains(schema, group1Type)) { - for (String group2Type : group2Types) { - if (schemaContains(schema, group2Type)) { - for (String group3Type : group3Types) { - if (schemaContains(schema, group3Type)) { - return true; - } - } - } - } - } - } - return false; - } - - private static boolean isTripleProperSchema(String schema, ArrayList<String> group1Types, - ArrayList<String> group2Types, ArrayList<String> group3Types) { - - ArrayList<String> group1MPositions = getMatchingPositions(schema, group1Types); - ArrayList<String> group2MPositions = getMatchingPositions(schema, group2Types); - ArrayList<String> group3MPositions = getMatchingPositions(schema, group3Types); - - ArrayList<ArrayList<String>> matchingPositions = new ArrayList<ArrayList<String>>(); - matchingPositions.add(group1MPositions); - matchingPositions.add(group2MPositions); - matchingPositions.add(group3MPositions); - - if (matchingPositionsExists(matchingPositions)) { - ArrayList<ArrayList<String>> product = cartesianProduct(matchingPositions); - for (ArrayList<String> combination : product) { - Set<String> combinationSet = new HashSet<String>(combination); - if (combinationSet.size() == matchingPositions.size()) { - return true; - } - } - } - return false; - }*/ private static Mention createMention(ArrayList<SyntacticGroup> nestedGroups, Map<String,ArrayList<String>> walentyNouns) { @@ -430,19 +235,6 @@ public class Detector { } return positions; } - - private static boolean schemaContains(String schema, String phraseType) { - for (String position : schema.split("\\s\\+\\s")) { - position = position.trim(); - position = position.substring(1, position.length()-1); - for (String phrT : position.split(";")) { - if (phrT.equals(phraseType)) { - return true; - } - } - } - return false; - } /** * Wyszukuję i oznaczam wszystkie NER -- libgit2 0.22.2