internal override bool IsOracle(Configuration c, string t, DependencyTree dTree) { if (!CanApply(c, t)) { return(false); } if (t.StartsWith("L") && !dTree.GetLabel(c.GetStack(1)).Equals(Sharpen.Runtime.Substring(t, 2, t.Length - 1))) { return(false); } if (t.StartsWith("R") && !dTree.GetLabel(c.GetStack(0)).Equals(Sharpen.Runtime.Substring(t, 2, t.Length - 1))) { return(false); } Configuration ct = new Configuration(c); Apply(ct, t); return(CanReach(ct, dTree)); }
// O(n) implementation public override string GetOracle(Configuration c, DependencyTree dTree) { int w1 = c.GetStack(1); int w2 = c.GetStack(0); if (w1 > 0 && dTree.GetHead(w1) == w2) { return("L(" + dTree.GetLabel(w1) + ')'); } else { if (w1 >= 0 && dTree.GetHead(w2) == w1 && !c.HasOtherChild(w2, dTree)) { return("R(" + dTree.GetLabel(w2) + ')'); } else { return("S"); } } }
/// <param name="k"> /// Word index (zero = root node; actual word indexing /// begins at 1) /// </param> public virtual string GetLabel(int k) { return(tree.GetLabel(k)); }
public static void WriteConllFile(string outFile, IList <ICoreMap> sentences, IList <DependencyTree> trees) { try { PrintWriter output = IOUtils.GetPrintWriter(outFile); for (int i = 0; i < sentences.Count; i++) { ICoreMap sentence = sentences[i]; DependencyTree tree = trees[i]; IList <CoreLabel> tokens = sentence.Get(typeof(CoreAnnotations.TokensAnnotation)); for (int j = 1; j <= size; ++j) { CoreLabel token = tokens[j - 1]; output.Printf("%d\t%s\t_\t%s\t%s\t_\t%d\t%s\t_\t_%n", j, token.Word(), token.Tag(), token.Tag(), tree.GetHead(j), tree.GetLabel(j)); } output.Println(); } output.Close(); } catch (Exception e) { throw new RuntimeIOException(e); } }