public override void endElement(string name) { if (COREF_ELEMENT.Equals(name)) { CorefMention mention = mentionStack.Pop(); mention.span = new Span(mention.span.Start, text.Count); mentions.Add(mention); } if (MucElementNames.CONTENT_ELEMENTS.Contains(name)) { sample.Texts.Add(text.ToArray()); sample.Mentions.Add(mentions.ToArray()); mentions.Clear(); text.Clear(); isInsideContentElement = false; } if (MucElementNames.DOC_ELEMENT.Equals(name)) { // TODO fix array syntax /* * foreach (CorefMention mentions[] in sample.Mentions) * { * for (int i = 0; i < mentions.Length; i++) * { * mentions[i].id = resolveId(mentions[i].id); * } * } */ samples.Add(sample); } }
private static Span getMinSpan(Parse p, CorefMention mention) { string min = mention.min; if (min != null) { int startOffset = p.ToString().IndexOf(min, StringComparison.Ordinal); int endOffset = startOffset + min.Length; Parse[] tokens = p.TagNodes; int beginToken = -1; int endToken = -1; for (int i = 0; i < tokens.Length; i++) { if (tokens[i].Span.Start == startOffset) { beginToken = i; } if (tokens[i].Span.End == endOffset) { endToken = i + 1; break; } } if (beginToken != -1 && endToken != -1) { return(new Span(beginToken, endToken)); } } return(null); }