-
-
Notifications
You must be signed in to change notification settings - Fork 123
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How do I get constituents from a tree annotation? #97
Comments
most probably you cannot use public static java.lang.Class GetAnnotationClass<T>()
=> ikvm.@internal.ClassLiteral<T>.Value; // or = new T().getClass()
var sentences = annotation.get(GetAnnotationClass<CoreAnnotations.SentencesAnnotation>());
foreach(CoreMap sentence in sentences as ArrayList){
var tree = sentence.get(GetAnnotationClass<TreeCoreAnnotations.TreeAnnotation>()) as Tree;
tree.constituents(); // most likely Tree is edu.stanford.nlp.trees.Tree
} |
Thank you for the quick response! |
I get the error " cannot convert from 'method group' to 'Class' " on these two lines: GetAnnotationClass<CoreAnnotations.SentencesAnnotation>
GetAnnotationClass<TreeCoreAnnotations.TreeAnnotation> |
Sorry, I forgot brackets,
|
Thank you so much it worked! I am just still new with C# so I don't understand why I'm getting "Object reference not set to an instance of an object." when using "java.util.ArrayList": var sentences = annotation.get(GetAnnotationClass<CoreAnnotations.SentencesAnnotation>());
foreach (CoreMap sentence in sentences as java.util.ArrayList)
{
Tree tree = sentence.get(GetAnnotationClass<TreeCoreAnnotations.TreeAnnotation>()) as Tree;
var treeConstituents = tree.constituents(new LabeledScoredConstituentFactory());
foreach (Constituent constituent in treeConstituents as java.util.ArrayList) // I get the error here
{
if (constituent.label().toString().Equals("NP"))
{
Console.WriteLine(constituent.toString());
Console.WriteLine(tree.getLeaves().subList(constituent.start(), constituent.end() + 1));
}
}
} As compared with the example I showed previously by the CoreNLP website, I cannot use "Set<Constituent>" so I used "var" instead but still get the error. |
Nevermind! I think I might have solved it by using "java.util.AbstractSet" instead of "java.util.ArrayList". Thanks again! |
interior with Java/IKVM types is not very intuitive. |
Oh I see now, thank you. Excuse me for bothering, and perhaps this is out of your area of expertise but, I have been using CoreNLP within Unity and since adding the lines: public static java.lang.Class GetAnnotationClass<T>()
=> ikvm.@internal.ClassLiteral<T>.Value; I have been getting an error about not being able to load the file "IKVM.OpenJDK.Core, Version 8.1". I was wondering if you could think of any DLL that I could be missing which could add the "GetAnnotationClass()" functionality within Unity? The full error within the console is this:
I greatly appreciate any feedback. |
|
new T().getClass() worked perfectly. Thanks again. |
In this example it shows the ability to extract constituents from a tree annotation:
I took the above code from the
Stanford CoreNLP Website
(https://stanfordnlp.github.io/CoreNLP/parse.html#examples).
I attempted to do this but
the constituents() method does not exist:
The text was updated successfully, but these errors were encountered: