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");
                }
            }
        }
Esempio n. 3
0
 /// <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));
 }
Esempio n. 4
0
 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);
     }
 }