right, finally the moment of truth! here is what I get using your loop:
Mention set:: [ this British industrial conglomerate ]
Mention set:: [ a director ]
Mention set:: [ Consolidated Gold Fields PLC ]
Mention set:: [ chairman :: former chairman ]
Mention set:: [ 55 years ]
Mention set:: [ Rudolph Agnew ]
Mention set:: [ Elsevier N . V . :: the Dutch publishing group ]
Mention set:: [ Mr . Vinken ]
Mention set:: [ a nonexecutive director Nov . 29 ]
Mention set:: [ the board ]
Mention set:: [ 61 years ]
Mention set:: [ Pierre Vinken ]
As you can see I am missing these 2 which do seem correct (in your output):
Mention set:: [ Pierre Vinken :: Mr. Vinken ]
Mention set:: [ a nonexecutive director :: chairman :: former
chairman :: a director ]
Jimps: I can confirm that the NEs can be retrieved correctly from the parse-tree just like yours...
On 06/03/13 12:19, Jim - FooBar(); wrote:
ok found your code and it answers all my questions!....I'll do the same now and see what happens... :)Jim On 06/03/13 12:01, Jim - FooBar(); wrote:I'm sorry I forgot another thing...how do you ask for the NEs from the Mention sets? I can only ask for the NEs from the Parse object...Jim On 06/03/13 11:58, Jim - FooBar(); wrote:Hi there,I apologise for the late reply but I've been a bit ill the past few days...So I've got some good news and some bad news...let me explain:here are my parses for each sentence (notice how they are identical to yours -> GOOD news!):-------------------------------------(TOP (S (NP (person (NP (NNP Pierre) (NNP Vinken)) (, ,)) (ADJP (NP (CD 61) (NNS years)) (JJ old))) (, ,) (VP (MD will) (VP (VB join) (NP (DT the) (NN board)) (PP (IN as) (NP (DT a) (JJ nonexecutive) (NN director) (NNP Nov) (NNP .) (CD 29))))) (. .)))(TOP (S (NP (NNP Mr) (. .) (NNP Vinken)) (VP (VBZ is) (NP (NP (NN chairman)) (PP (IN of) (NP (NP (NNP Elsevier) (NNP N) (NNP .) (NNP V) (NNP .)) (, ,) (NP (DT the) (JJ Dutch) (NN publishing) (NN group)))))) (. .)))(TOP (NP (person (NP (NNP Rudolph) (NNP Agnew)) (, ,)) (UCP (ADJP (NP (CD 55) (NNS years)) (JJ old)) (CC and) (S (NP (NP (JJ former) (NN chairman)) (PP (IN of) (NP (NNP Consolidated) (NNP Gold) (NNP Fields) (NNP PLC)))) (, ,) (VP (VBD was) (VP (VBN named) (S (NP (NP (DT a) (NN director)) (PP (IN of) (NP (DT this) (JJ British) (JJ industrial) (NN conglomerate))))))))) (. .)))--------------------------------Doing this right is more than half the story for the coref-linker...Now, though there is a slight problem. What exactly is a Mention set in your output? How come you're not getting an array of DiscourseEntities back? In addition, are you filtering the resulting array for entities with size more than 1?I have to say, your output does seem correct from a coreference resolution perspective...the problem is I can't understand why we're getting different results...If you could explain what is a MentionSet that would be great...thanks again, Jim On 04/03/13 05:29, Ant B wrote:Hi Jim,No problem - a good excuse to tidy the code. I added a few println() calls to display input text, sentence parse objects, coreference mention sets and named entities in those sets. Note that I only added "person" NERs to the sentence parse.<start of code output> Input sentences::Pierre Vinken, 61 years old, will join the board as a nonexecutive director Nov. 29. Mr. Vinken is chairman of Elsevier N.V., the Dutch publishing group. Rudolph Agnew, 55 years old and former chairman of Consolidated Gold Fields PLC, was named a director of this British industrial conglomerate.Sentence#1 parse after POS & NER tag:(TOP (S (NP (person (NP (NNP Pierre) (NNP Vinken))(, ,)) (ADJP (NP (CD 61) (NNS years)) (JJ old)))(, ,) (VP (MD will) (VP (VB join) (NP (DT the) (NN board)) (PP (IN as) (NP (NP (DT a) (JJ nonexecutive) (NN director)) (NP (NNP Nov.) (CD 29))))))(. .)))Sentence#2 parse after POS & NER tag:(TOP (S (NP (NNP Mr.) (NNP Vinken)) (VP (VBZ is) (NP (NP (NN chairman)) (PP (IN of) (NP (NP (NNP Elsevier) (NNP N.V.))(, ,) (NP (DT the) (JJ Dutch) (NN publishing) (NN group))))))(. .)))Sentence#3 parse after POS & NER tag:(TOP (NP (person (NP (NNP Rudolph) (NNP Agnew))(, ,)) (UCP (ADJP (NP (CD 55) (NNS years)) (JJ old)) (CC and) (S (NP (NP (JJ former) (NN chairman)) (PP (IN of) (NP (NNP Consolidated) (NNP Gold) (NNP Fields) (NNP PLC))))(, ,) (VP (VBD was) (VP (VBN named) (S (NP (NP (DT a) (NN director)) (PP (IN of) (NP (DT this) (JJ British) (JJ industrial) (NN conglomerate)))))))))(. .)))Now displaying all discourse entities:: Mention set:: [ this British industrial conglomerate ]Mention set:: [ a nonexecutive director :: chairman :: former chairman :: a director ]Mention set:: [ Consolidated Gold Fields PLC ] Mention set:: [ 55 years ] Mention set:: [ Rudolph Agnew ] Mention set:: [ Elsevier N.V. :: the Dutch publishing group ] Mention set:: [ Pierre Vinken :: Mr. Vinken ] Mention set:: [ Nov. 29 ] Mention set:: [ the board ] Mention set:: [ 61 years ] Now printing out the named entities from mention sets:: [Rudolph Agnew ] [Pierre Vinken ] <end of code output>I do not know for certain that my code is correct, so thanks for the chance to compare data. I think this matches up with your results.Let me know if you want to hack around any further - I'd really like a correct, reviewed & validated coreference example. I'm sure others would benefit from such an example too.AntOn Mar 3, 2013, at 12:37 PM, Jim - FooBar(); <[email protected]> wrote:do you still happen to have that project locally in your hard drive? is there any chance you could run this and post the results? Alternatively, I'd have to clone the repo and give it a spin...I imagine it would be a lot easier for you as you are the author...let me know if you can't do that...I noticed in your code that you already use the sentence i am interested in which is good.... :)Jim On 03/03/13 03:29, [email protected] wrote:Hey guys,You may have already seen this, but I posted a really simple "getting started" Eclipse project on my GitHub profile for the coreference API:https://github.com/amb-enthusiast/CoreferenceTestIt is similar to what you have already explored, but may provide some validation.I recently experimented using NER results from Stanford CoreNLP in sentence parse objects. In cases where better named entity info is added to the sentence parse, coref performance improves.Hope this helps in some way. Ant ----- Reply message ----- From: "Jim - FooBar();" <[email protected]> To: <[email protected]> Subject: coref results seem weird Date: Sat, Mar 2, 2013 9:10 amsee this old message by Jorn... check the next message message in thethread as well. at some point he posts detailed code...it might beeasier to put together a dummy project in order to use the API which ismore flexible... Jimhttp://mail-archives.apache.org/mod_mbox/opennlp-users/201112.mbox/%[email protected]%3EOn 02/03/13 16:05, James Kosin wrote:I'm trying to use the CLI. I have other code in another project that loads the dictionary properly using the property file to specify theinformation. Coreference does it differently... On 3/2/2013 6:32 AM, Jim - FooBar(); wrote:I should be able to help you...are you going through the cli or the API? I bet there is something wrong with the Wordnet directory you'repassing...I had similar issues...If you're using the API let me know and I'll send you a code snippetthat may help... Jim On 02/03/13 05:17, James Kosin wrote:Jim, I can't seem to get past the NULL pointer exceptions when Coreferencer is trying to load the dictionaries. So, this will be much later now. I'm going to sleep and play tooth fairy. James On 3/1/2013 8:18 AM, Jim - FooBar(); wrote:Like you, I'm using the latest WOrdnet and JWNL (1.4 RC_3 is on maven you don't need to build it from source)....Now that you've set up your end could you please perform a run on the standard example sentence? In addition could you try to add thenamed-entities to the parse-tree? If yes, please post your results here for comparison with mine? thanks a lot, Jim On 01/03/13 02:21, James Kosin wrote:Hi Jim,What version of the JWNL and WordNet dictionaries are you using?I never got much more than researching what it is used for, and its importance to handling the task. I've just updated my end for the 3.1 WordNet dictionaries. But, I'm also using 1.4_rc3 from sources to build JWNL. The extJWNL seems to be more apt to handling more types of dictionaries(supporting UTF-8 and others), and actually creating and modifying them as well; which isn't needed when we are really only wantingread usage. James On 2/28/2013 4:49 AM, Jim foo.bar wrote:Hi James, thanks for your reply and your comments but that is not quite what I asked...I've looked at all the web resources related tothe opennlp coref component, otherwise I would never have gottenit to work!My problem is about the results it brings back, in particular I'dlike to compare my produced discourse entities with someone else's on the same piece of text. Since I'm working on alanguage other than Java, that would confirm that my code is at least correct. On a secondary note, I'd like to see how to insertthe named-entities into the parse tree before deploying the TrreBankLinker. I followed the instructions posted my Jornsometime last year but I 'm not sure how the output should looklike .That is why I posted what I'm getting...Can you see any 'person' named-entities in my DicourseEntities?More importantly, if you run the coref component on the standard example sentence (Pierre Vinken, ...) what do you get? Could youpost the exact output? Whoever psoted this:http://blog.dpdearing.com/2012/11/making-coreference-resolution-with-opennlp-1-5-0-your-bitch/ did not try to insert any NEs into the parse tree. In addition, his output is slightly different than mine...I don't know if thatis because of a newer version of JWNL.jar that I'm using or something else... Jim On 28/02/13 02:51, James Kosin wrote:Jim, Here is a place to start, with maybe some more examples:http://stackoverflow.com/questions/8629737/coreference-resolution-using-opennlpJames On 2/27/2013 1:26 PM, Jim - FooBar(); wrote:Hmmm.... interesting! When I run it on these 2 simple sentences:/"Mary likes pizza but she also likes kebabs. Knowing her, I'dgive it 2 weeks before she turns massive!"/ I get perfect results! #<DiscourseEntity [ Mary, she, her, she ]> this demonstrates 3 things: - my understanding of coref is indeed correct- the coref component can link entities from separate sentences- possibly that my code is fine any thoughts? Jim On 27/02/13 18:14, Jim - FooBar(); wrote:Hi all,I finally managed to get coref working (phew!-my god that was tricky) but I'm slightly confused with the results so I'd like to see if anyone else has tried that out...Using the standardparagraph used in the other examples: /"Pierre Vinken, 61 years old, will join the board as a nonexecutive director Nov. 29. Mr. Vinken is chairman ofElsevier N.V., the Dutch publishing group. Rudolph Agnew, 55 years old and former chairman of Consolidated Gold Fields PLC, was named a director of this British industrial conglomerate."/deploying the coref component gives me the following:I must note that I'm trying to pass the named entities as well(person). I've confirmed that the spans are correctlyidentitified (3 spans for this particular example) and addedto the parse tree via /opennlp.tools.parser.Parse.addNames//("person", span, parse.getTagNodes());/[#<DiscourseEntity [ this British industrial conglomerate ]>,#<DiscourseEntity [ a director of this British industrial conglomerate ]>, #<DiscourseEntity [ Consolidated Gold Fields PLC ]>,#<DiscourseEntity [ chairman of Elsevier N . V . , the Dutch publishing group, former chairman of Consolidated Gold FieldsPLC ]>, #<DiscourseEntity [ 55 years ]>,#<DiscourseEntity [ Rudolph Agnew , 55 years old and formerchairman of Consolidated Gold Fields PLC , was named a director of this British industrial conglomerate . ]>,#<DiscourseEntity [ Elsevier N . V . , the Dutch publishinggroup, the Dutch publishing group ]>, #<DiscourseEntity [ Mr . Vinken ]>, #<DiscourseEntity [ a nonexecutive director Nov . 29 ]>, #<DiscourseEntity [ the board ]>, #<DiscourseEntity [ 61 years ]>, #<DiscourseEntity [ Pierre Vinken , 61 years old ]> ] *filtering for more than 1 mentions (per Jorn's suggestion) gives back:*[#<DiscourseEntity [ chairman of Elsevier N . V . , the Dutch publishing group, former chairman of Consolidated Gold FieldsPLC ]>#<DiscourseEntity [ Elsevier N . V . , the Dutch publishinggroup, the Dutch publishing group ]> ] Assuming that this is what it's supposed to output, can someone explain this? First of all where are the named-entities? Secondly, out of the 2 filteredDiscourseEntities, both seem plain wrong! Moreover, where is#<DiscourseEntity [Rudolph Agnew, //former chairman of Consolidated Gold Fields PLC/,/ the Dutch publishing group, director of this British industrial conglomerate ]> ??? Either I'm not understanding coreference, or I've coded thething wrong or the models is not very good! Which one is it? Has anyone else attempted this? Can we compare results on thisparticular sentence? thanks in advance :) Jim ps: my code is in Clojure but it is based on a code snippetprovided by Jorn to someone on the mailing list last year . Ican easily provide it but I don't think it will be of much help...
