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); }
private int CompareTo(WordNodePair first, WordNodePair second) { var firstUniversalDependency = first.GetUniversalDependency(); var secondUniversalDependency = second.GetUniversalDependency(); if (_specialsMap.ContainsKey(firstUniversalDependency) && _specialsMap.ContainsKey(secondUniversalDependency)) { return(_specialsMap[firstUniversalDependency].CompareTo(_specialsMap[secondUniversalDependency])); } else if (_specialsMap.ContainsKey(firstUniversalDependency)) { return(1); } else if (_specialsMap.ContainsKey(secondUniversalDependency)) { return(-1); } return(0); }
private int UpdateUnionCandidateLists(List <WordNodePair> list, WordNodePair wordNodePair) { if (list.Count < 2) { if (list.Count == 1 && list[0].GetNo() > wordNodePair.GetNo()) { list.Insert(0, wordNodePair); return(0); } else { list.Add(wordNodePair); return(list.Count - 1); } } else { if (list[0].GetNo() > wordNodePair.GetNo()) { list.Insert(0, wordNodePair); return(0); } else if (list[list.Count - 1].GetNo() < wordNodePair.GetNo()) { list.Add(wordNodePair); return(list.Count - 1); } else { for (var i = 0; i < list.Count - 1; i++) { if (wordNodePair.GetNo() > list[i].GetNo() && wordNodePair.GetNo() < list[i + 1].GetNo()) { list.Insert(i + 1, wordNodePair); return(i + 1); } } } } return(-1); }
private List <WordNodePair> SetOfNodesToBeMergedOntoNode(List <WordNodePair> wordNodePairs, WordNodePair headWord) { var list = new List <WordNodePair>(); for (var i = 0; i < wordNodePairs.Count; i++) { var wordNodePair = wordNodePairs[i]; var toWordIndex = wordNodePair.GetTo() - 1; if (!wordNodePair.IsDoneForConnect()) { if (NoIncomingNodes(wordNodePairs, i) && toWordIndex == headWord.GetNo()) { UpdateUnionCandidateLists(list, wordNodePair); } } } return(list); }