public void autoArgument(ParseTreeDrawable parseTree, Frameset frameset) { NodeDrawableCollector nodeDrawableCollector = new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsTransferable(secondLanguage)); List <ParseNodeDrawable> leafList = nodeDrawableCollector.Collect(); foreach (var parseNode in leafList) { if (parseNode.GetLayerData(ViewLayerType.PROPBANK) == null) { foreach (ArgumentType argumentType in Enum.GetValues(typeof(ArgumentType))) { if (frameset.ContainsArgument(argumentType) && AutoDetectArgument(parseNode, argumentType)) { parseNode.GetLayerInfo().SetLayerData(ViewLayerType.PROPBANK, ArgumentTypeStatic.GetPropbankType(argumentType)); } } if (Word.IsPunctuation(parseNode.GetLayerData(secondLanguage))) { parseNode.GetLayerInfo().SetLayerData(ViewLayerType.PROPBANK, "NONE"); } } } parseTree.Save(); }
protected override bool AutoLabelSingleSemantics(ParseTreeDrawable parseTree) { var modified = false; var nodeDrawableCollector = new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsTurkishLeafNode()); var leafList = nodeDrawableCollector.Collect(); foreach (var parseNode in leafList) { var info = parseNode.GetLayerInfo(); if (info.GetLayerData(ViewLayerType.INFLECTIONAL_GROUP) != null) { var meanings = new List <SynSet> [info.GetNumberOfWords()]; for (var i = 0; i < info.GetNumberOfWords(); i++) { meanings[i] = _turkishWordNet.ConstructSynSets( info.GetMorphologicalParseAt(i).GetWord().GetName(), info.GetMorphologicalParseAt(i), info.GetMetamorphicParseAt(i), _fsm); } switch (info.GetNumberOfWords()) { case 1: if (meanings[0].Count == 1) { modified = true; parseNode.GetLayerInfo().SetLayerData(ViewLayerType.SEMANTICS, meanings[0][0].GetId()); } break; case 2: if (meanings[0].Count == 1 && meanings[1].Count == 1) { modified = true; parseNode.GetLayerInfo().SetLayerData(ViewLayerType.SEMANTICS, meanings[0][0].GetId() + "$" + meanings[1][0].GetId()); } break; case 3: if (meanings[0].Count == 1 && meanings[1].Count == 1 && meanings[2].Count == 1) { modified = true; parseNode.GetLayerInfo().SetLayerData(ViewLayerType.SEMANTICS, meanings[0][0].GetId() + "$" + meanings[1][0].GetId() + "$" + meanings[2][0].GetId()); } break; } } } return(modified); }
protected override bool AutoLabelSingleSemantics(ParseTreeDrawable parseTree) { var random = new Random(1); var nodeDrawableCollector = new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsTurkishLeafNode()); var leafList = nodeDrawableCollector.Collect(); for (var i = 0; i < leafList.Count; i++) { var synSets = GetCandidateSynSets(_turkishWordNet, _fsm, leafList, i); if (synSets.Count > 0) { leafList[i].GetLayerInfo().SetLayerData(ViewLayerType.SEMANTICS, synSets[random.Next(synSets.Count)].GetId()); } } return(true); }
public void AutoNer(ParseTreeDrawable parseTree) { AutoDetectPerson(parseTree); AutoDetectLocation(parseTree); AutoDetectOrganization(parseTree); AutoDetectMoney(parseTree); AutoDetectTime(parseTree); var nodeDrawableCollector = new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsTransferable(secondLanguage)); var leafList = nodeDrawableCollector.Collect(); foreach (var parseNode in leafList) { if (!parseNode.LayerExists(ViewLayerType.NER)) { parseNode.GetLayerInfo().SetLayerData(ViewLayerType.NER, "NONE"); } } parseTree.Save(); }
protected override bool AutoLabelSingleSemantics(ParseTreeDrawable parseTree) { var nodeDrawableCollector = new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsTurkishLeafNode()); var leafList = nodeDrawableCollector.Collect(); for (int i = 0; i < leafList.Count; i++) { var synSets = GetCandidateSynSets(_turkishWordNet, _fsm, leafList, i); if (synSets.Count > 0) { var best = MostFrequent(synSets, leafList[i].GetLayerInfo().GetMorphologicalParseAt(0).GetWord().GetName()); if (best != null) { leafList[i].GetLayerInfo().SetLayerData(ViewLayerType.SEMANTICS, best.GetId()); } } } return(true); }
protected override bool AutoLabelSingleSemantics(ParseTreeDrawable parseTree) { var random = new Random(1); var nodeDrawableCollector = new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsTurkishLeafNode()); var leafList = nodeDrawableCollector.Collect(); var done = false; for (var i = 0; i < leafList.Count; i++) { var synSets = GetCandidateSynSets(_turkishWordNet, _fsm, leafList, i); var maxIntersection = -1; for (var j = 0; j < synSets.Count; j++) { var synSet = synSets[j]; var intersectionCount = Intersection(synSet, leafList); if (intersectionCount > maxIntersection) { maxIntersection = intersectionCount; } } var maxSynSets = new List <SynSet>(); for (var j = 0; j < synSets.Count; j++) { var synSet = synSets[j]; if (Intersection(synSet, leafList) == maxIntersection) { maxSynSets.Add(synSet); } } if (maxSynSets.Count > 0) { leafList[i].GetLayerInfo().SetLayerData(ViewLayerType.SEMANTICS, maxSynSets[random.Next(maxSynSets.Count)].GetId()); done = true; } } return(done); }
public AnnotatedSentence.AnnotatedSentence Convert(ParseTreeDrawable parseTree, List <TreeEnsembleModel> models) { if (parseTree != null) { var annotatedSentence = new AnnotatedSentence.AnnotatedSentence(); var nodeDrawableCollector = new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsLeafNode()); var leafList = nodeDrawableCollector.Collect(); var wordNodePairList = new List <WordNodePair>(); for (var i = 0; i < leafList.Count; i++) { var parseNode = leafList[i]; var wordNodePair = new WordNodePair(parseNode, i + 1); wordNodePair.UpdateNode(); if (wordNodePair.GetNode().GetParent() != null && wordNodePair.GetNode().GetParent().NumberOfChildren() == 1) { wordNodePair.UpdateNode(); Console.WriteLine("check this"); return(null); } annotatedSentence.AddWord(wordNodePair.GetWord()); wordNodePairList.Add(wordNodePair); } ConstructDependenciesFromTree(wordNodePairList, models); return(annotatedSentence); } return(null); }
public void Modify() { NodeModify((ParseNodeDrawable)_parseTree.GetRoot()); }
protected override void AutoDetectMoney(ParseTreeDrawable parseTree) { NodeDrawableCollector nodeDrawableCollector = new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsTurkishLeafNode()); List <ParseNodeDrawable> leafList = nodeDrawableCollector.Collect(); for (int i = 0; i < leafList.Count; i++) { ParseNodeDrawable parseNode = leafList[i]; if (!parseNode.LayerExists(ViewLayerType.NER)) { String word = parseNode.GetLayerData(ViewLayerType.TURKISH_WORD).ToLower(new CultureInfo("tr")); if (Word.IsMoney(word)) { parseNode.GetLayerInfo().SetLayerData(ViewLayerType.NER, "MONEY"); int j = i - 1; while (j >= 0) { ParseNodeDrawable previous = leafList[j]; if (previous.GetParent().GetData().GetName().Equals("CD")) { previous.GetLayerInfo().SetLayerData(ViewLayerType.NER, "MONEY"); } else { break; } j--; } } } } }
protected override void AutoDetectOrganization(ParseTreeDrawable parseTree) { NodeDrawableCollector nodeDrawableCollector = new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsTurkishLeafNode()); List <ParseNodeDrawable> leafList = nodeDrawableCollector.Collect(); foreach (var parseNode in leafList) { if (!parseNode.LayerExists(ViewLayerType.NER)) { String word = parseNode.GetLayerData(ViewLayerType.TURKISH_WORD).ToLower(new CultureInfo("tr")); if (Word.IsOrganization(word)) { parseNode.GetLayerInfo().SetLayerData(ViewLayerType.NER, "ORGANIZATION"); } parseNode.CheckGazetteer(organizationGazetteer, word); } } }
protected override void AutoDetectPerson(ParseTreeDrawable parseTree) { NodeDrawableCollector nodeDrawableCollector = new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsTurkishLeafNode()); List <ParseNodeDrawable> leafList = nodeDrawableCollector.Collect(); foreach (var parseNode in leafList) { if (!parseNode.LayerExists(ViewLayerType.NER)) { String word = parseNode.GetLayerData(ViewLayerType.TURKISH_WORD).ToLower(new CultureInfo("tr")); if (Word.IsHonorific(word) && parseNode.GetParent().GetData().GetName().Equals("NNP")) { parseNode.GetLayerInfo().SetLayerData(ViewLayerType.NER, "PERSON"); } parseNode.CheckGazetteer(personGazetteer, word); } } }
public string Convert() { return(ConvertToString((ParseNodeDrawable)_parseTree.GetRoot())); }