opener-project / coreference

Coreference component providing a daemon, webservice, etc.
Other
0 stars 6 forks source link

a team of gnome gardeners have been sent ... #1

Open jclarte opened 6 years ago

jclarte commented 6 years ago

Trying to test the coreference feature, i got some errors. With the web service, with a small test of sentences sent through the whole pipeline, the coreference service doesn't seems to work, neither in english nor in french. Input kat :

<?xml version="1.0" encoding="UTF-8"?>
<KAF xml:lang="en" version="v1.opener">
  <kafHeader>
    <fileDesc />
    <linguisticProcessors layer="text">
      <lp name="opener-sentence-splitter-en" timestamp="2017-10-25T10:46:00Z" version="0.0.1" />
      <lp name="opener-tokenizer-en" timestamp="2017-10-25T10:46:00Z" version="1.0.1" />
    </linguisticProcessors>
    <linguisticProcessors layer="terms">
      <lp name="ehu-pos-en" timestamp="2017-10-25T10:46:19+0000" version="1.0" />
    </linguisticProcessors>
    <linguisticProcessors layer="entities">
      <lp name="ixa-pipe-nerc-en-default" timestamp="2017-10-25T10:46:35+0000" version="1.5.2" />
    </linguisticProcessors>
    <linguisticProcessors layer="constituents">
      <lp name="ehu-parse-en" timestamp="now" version="1.0" />
    </linguisticProcessors>
  </kafHeader>
  <text>
    <wf wid="w1" sent="1" para="1" offset="0" length="4">This</wf>
    <wf wid="w2" sent="1" para="1" offset="5" length="2">is</wf>
    <wf wid="w3" sent="1" para="1" offset="8" length="1">a</wf>
    <wf wid="w4" sent="1" para="1" offset="10" length="6">sample</wf>
    <wf wid="w5" sent="1" para="1" offset="17" length="4">file</wf>
    <wf wid="w6" sent="1" para="1" offset="22" length="2">to</wf>
    <wf wid="w7" sent="1" para="1" offset="25" length="4">test</wf>
    <wf wid="w8" sent="1" para="1" offset="30" length="3">the</wf>
    <wf wid="w9" sent="1" para="1" offset="34" length="8">features</wf>
    <wf wid="w10" sent="1" para="1" offset="42" length="1">.</wf>
    <wf wid="w11" sent="2" para="1" offset="44" length="2">It</wf>
    <wf wid="w12" sent="2" para="1" offset="47" length="3">has</wf>
    <wf wid="w13" sent="2" para="1" offset="51" length="4">some</wf>
    <wf wid="w14" sent="2" para="1" offset="56" length="12">coreferences</wf>
    <wf wid="w15" sent="2" para="1" offset="69" length="2">in</wf>
    <wf wid="w16" sent="2" para="1" offset="72" length="2">it</wf>
    <wf wid="w17" sent="2" para="1" offset="74" length="1">.</wf>
    <wf wid="w18" sent="3" para="1" offset="75" length="3">Let</wf>
    <wf wid="w19" sent="3" para="1" offset="78" length="2">'s</wf>
    <wf wid="w20" sent="3" para="1" offset="81" length="3">see</wf>
    <wf wid="w21" sent="3" para="1" offset="85" length="3">how</wf>
    <wf wid="w22" sent="3" para="1" offset="89" length="2">it</wf>
    <wf wid="w23" sent="3" para="1" offset="92" length="6">handle</wf>
    <wf wid="w24" sent="3" para="1" offset="99" length="4">them</wf>
    <wf wid="w25" sent="3" para="1" offset="103" length="1">.</wf>
  </text>
  <terms>
    <!--This-->
    <term tid="t1" type="close" lemma="this" pos="D" morphofeat="DT">
      <span>
        <target id="w1" />
      </span>
    </term>
    <!--is-->
    <term tid="t2" type="open" lemma="be" pos="V" morphofeat="VBZ">
      <span>
        <target id="w2" />
      </span>
    </term>
    <!--a-->
    <term tid="t3" type="close" lemma="a" pos="D" morphofeat="DT">
      <span>
        <target id="w3" />
      </span>
    </term>
    <!--sample-->
    <term tid="t4" type="open" lemma="sample" pos="N" morphofeat="NN">
      <span>
        <target id="w4" />
      </span>
    </term>
    <!--file-->
    <term tid="t5" type="open" lemma="file" pos="N" morphofeat="NN">
      <span>
        <target id="w5" />
      </span>
    </term>
    <!--to-->
    <term tid="t6" type="close" lemma="to" pos="P" morphofeat="TO">
      <span>
        <target id="w6" />
      </span>
    </term>
    <!--test-->
    <term tid="t7" type="open" lemma="test" pos="N" morphofeat="NN">
      <span>
        <target id="w7" />
      </span>
    </term>
    <!--the-->
    <term tid="t8" type="close" lemma="the" pos="D" morphofeat="DT">
      <span>
        <target id="w8" />
      </span>
    </term>
    <!--features-->
    <term tid="t9" type="open" lemma="feature" pos="N" morphofeat="NNS">
      <span>
        <target id="w9" />
      </span>
    </term>
    <!--.-->
    <term tid="t10" type="close" lemma="." pos="O" morphofeat=".">
      <span>
        <target id="w10" />
      </span>
    </term>
    <!--It-->
    <term tid="t11" type="close" lemma="it" pos="Q" morphofeat="PRP">
      <span>
        <target id="w11" />
      </span>
    </term>
    <!--has-->
    <term tid="t12" type="open" lemma="have" pos="V" morphofeat="VBZ">
      <span>
        <target id="w12" />
      </span>
    </term>
    <!--some-->
    <term tid="t13" type="close" lemma="some" pos="D" morphofeat="DT">
      <span>
        <target id="w13" />
      </span>
    </term>
    <!--coreferences-->
    <term tid="t14" type="open" lemma="coreferences" pos="N" morphofeat="NNS">
      <span>
        <target id="w14" />
      </span>
    </term>
    <!--in-->
    <term tid="t15" type="close" lemma="in" pos="P" morphofeat="IN">
      <span>
        <target id="w15" />
      </span>
    </term>
    <!--it-->
    <term tid="t16" type="close" lemma="it" pos="Q" morphofeat="PRP">
      <span>
        <target id="w16" />
      </span>
    </term>
    <!--.-->
    <term tid="t17" type="close" lemma="." pos="O" morphofeat=".">
      <span>
        <target id="w17" />
      </span>
    </term>
    <!--Let-->
    <term tid="t18" type="open" lemma="let" pos="V" morphofeat="VB">
      <span>
        <target id="w18" />
      </span>
    </term>
    <!--'s-->
    <term tid="t19" type="close" lemma="'s" pos="O" morphofeat="POS">
      <span>
        <target id="w19" />
      </span>
    </term>
    <!--see-->
    <term tid="t20" type="open" lemma="see" pos="V" morphofeat="VB">
      <span>
        <target id="w20" />
      </span>
    </term>
    <!--how-->
    <term tid="t21" type="close" lemma="how" pos="O" morphofeat="WRB">
      <span>
        <target id="w21" />
      </span>
    </term>
    <!--it-->
    <term tid="t22" type="close" lemma="it" pos="Q" morphofeat="PRP">
      <span>
        <target id="w22" />
      </span>
    </term>
    <!--handle-->
    <term tid="t23" type="open" lemma="handle" pos="V" morphofeat="VB">
      <span>
        <target id="w23" />
      </span>
    </term>
    <!--them-->
    <term tid="t24" type="close" lemma="them" pos="Q" morphofeat="PRP">
      <span>
        <target id="w24" />
      </span>
    </term>
    <!--.-->
    <term tid="t25" type="close" lemma="." pos="O" morphofeat=".">
      <span>
        <target id="w25" />
      </span>
    </term>
  </terms>
  <constituency>
    <tree>
      <!--Non-terminals-->
      <nt id="nter1" label="TOP" />
      <nt id="nter2" label="S" />
      <nt id="nter3" label="NP" />
      <nt id="nter4" label="DT" />
      <nt id="nter5" label="VP" />
      <nt id="nter6" label="VBZ" />
      <nt id="nter7" label="NP" />
      <nt id="nter8" label="NP" />
      <nt id="nter9" label="DT" />
      <nt id="nter10" label="NN" />
      <nt id="nter11" label="NN" />
      <nt id="nter12" label="SBAR" />
      <nt id="nter13" label="S" />
      <nt id="nter14" label="VP" />
      <nt id="nter15" label="TO" />
      <nt id="nter16" label="VP" />
      <nt id="nter17" label="VB" />
      <nt id="nter18" label="NP" />
      <nt id="nter19" label="DT" />
      <nt id="nter20" label="NNS" />
      <nt id="nter21" label="." />
      <!--Terminals-->
      <!--This-->
      <t id="ter1">
        <span>
          <target id="t1" />
        </span>
      </t>
      <!--is-->
      <t id="ter2">
        <span>
          <target id="t2" />
        </span>
      </t>
      <!--a-->
      <t id="ter3">
        <span>
          <target id="t3" />
        </span>
      </t>
      <!--sample-->
      <t id="ter4">
        <span>
          <target id="t4" />
        </span>
      </t>
      <!--file-->
      <t id="ter5">
        <span>
          <target id="t5" />
        </span>
      </t>
      <!--to-->
      <t id="ter6">
        <span>
          <target id="t6" />
        </span>
      </t>
      <!--test-->
      <t id="ter7">
        <span>
          <target id="t7" />
        </span>
      </t>
      <!--the-->
      <t id="ter8">
        <span>
          <target id="t8" />
        </span>
      </t>
      <!--features-->
      <t id="ter9">
        <span>
          <target id="t9" />
        </span>
      </t>
      <!--.-->
      <t id="ter10">
        <span>
          <target id="t10" />
        </span>
      </t>
      <!--Tree edges-->
      <edge id="tre2" from="nter2" to="nter1" />
      <edge id="tre3" from="nter3" to="nter2" head="yes" />
      <edge id="tre4" from="nter4" to="nter3" head="yes" />
      <edge id="tre5" from="ter1" to="nter4" />
      <edge id="tre6" from="nter5" to="nter2" />
      <edge id="tre7" from="nter6" to="nter5" />
      <edge id="tre8" from="ter2" to="nter6" />
      <edge id="tre9" from="nter7" to="nter5" />
      <edge id="tre10" from="nter8" to="nter7" head="yes" />
      <edge id="tre11" from="nter9" to="nter8" />
      <edge id="tre12" from="ter3" to="nter9" />
      <edge id="tre13" from="nter10" to="nter8" />
      <edge id="tre14" from="ter4" to="nter10" />
      <edge id="tre15" from="nter11" to="nter8" head="yes" />
      <edge id="tre16" from="ter5" to="nter11" />
      <edge id="tre17" from="nter12" to="nter7" />
      <edge id="tre18" from="nter13" to="nter12" />
      <edge id="tre19" from="nter14" to="nter13" />
      <edge id="tre20" from="nter15" to="nter14" />
      <edge id="tre21" from="ter6" to="nter15" />
      <edge id="tre22" from="nter16" to="nter14" />
      <edge id="tre23" from="nter17" to="nter16" />
      <edge id="tre24" from="ter7" to="nter17" />
      <edge id="tre25" from="nter18" to="nter16" />
      <edge id="tre26" from="nter19" to="nter18" />
      <edge id="tre27" from="ter8" to="nter19" />
      <edge id="tre28" from="nter20" to="nter18" head="yes" />
      <edge id="tre29" from="ter9" to="nter20" />
      <edge id="tre30" from="nter21" to="nter2" />
      <edge id="tre31" from="ter10" to="nter21" />
    </tree>
    <tree>
      <!--Non-terminals-->
      <nt id="nter22" label="TOP" />
      <nt id="nter23" label="S" />
      <nt id="nter24" label="NP" />
      <nt id="nter25" label="PRP" />
      <nt id="nter26" label="VP" />
      <nt id="nter27" label="VBZ" />
      <nt id="nter28" label="NP" />
      <nt id="nter29" label="DT" />
      <nt id="nter30" label="NNS" />
      <nt id="nter31" label="PP" />
      <nt id="nter32" label="IN" />
      <nt id="nter33" label="NP" />
      <nt id="nter34" label="PRP" />
      <nt id="nter35" label="." />
      <!--Terminals-->
      <!--It-->
      <t id="ter11">
        <span>
          <target id="t11" />
        </span>
      </t>
      <!--has-->
      <t id="ter12">
        <span>
          <target id="t12" />
        </span>
      </t>
      <!--some-->
      <t id="ter13">
        <span>
          <target id="t13" />
        </span>
      </t>
      <!--coreferences-->
      <t id="ter14">
        <span>
          <target id="t14" />
        </span>
      </t>
      <!--in-->
      <t id="ter15">
        <span>
          <target id="t15" />
        </span>
      </t>
      <!--it-->
      <t id="ter16">
        <span>
          <target id="t16" />
        </span>
      </t>
      <!--.-->
      <t id="ter17">
        <span>
          <target id="t17" />
        </span>
      </t>
      <!--Tree edges-->
      <edge id="tre33" from="nter23" to="nter22" />
      <edge id="tre34" from="nter24" to="nter23" head="yes" />
      <edge id="tre35" from="nter25" to="nter24" head="yes" />
      <edge id="tre36" from="ter11" to="nter25" />
      <edge id="tre37" from="nter26" to="nter23" />
      <edge id="tre38" from="nter27" to="nter26" />
      <edge id="tre39" from="ter12" to="nter27" />
      <edge id="tre40" from="nter28" to="nter26" />
      <edge id="tre41" from="nter29" to="nter28" />
      <edge id="tre42" from="ter13" to="nter29" />
      <edge id="tre43" from="nter30" to="nter28" head="yes" />
      <edge id="tre44" from="ter14" to="nter30" />
      <edge id="tre45" from="nter31" to="nter26" />
      <edge id="tre46" from="nter32" to="nter31" />
      <edge id="tre47" from="ter15" to="nter32" />
      <edge id="tre48" from="nter33" to="nter31" />
      <edge id="tre49" from="nter34" to="nter33" head="yes" />
      <edge id="tre50" from="ter16" to="nter34" />
      <edge id="tre51" from="nter35" to="nter23" />
      <edge id="tre52" from="ter17" to="nter35" />
    </tree>
    <tree>
      <!--Non-terminals-->
      <nt id="nter36" label="TOP" />
      <nt id="nter37" label="VP" />
      <nt id="nter38" label="VB" />
      <nt id="nter39" label="S" />
      <nt id="nter40" label="NP" />
      <nt id="nter41" label="PRP" />
      <nt id="nter42" label="VP" />
      <nt id="nter43" label="VB" />
      <nt id="nter44" label="SBAR" />
      <nt id="nter45" label="WHADVP" />
      <nt id="nter46" label="WRB" />
      <nt id="nter47" label="S" />
      <nt id="nter48" label="NP" />
      <nt id="nter49" label="PRP" />
      <nt id="nter50" label="VP" />
      <nt id="nter51" label="VB" />
      <nt id="nter52" label="NP" />
      <nt id="nter53" label="PRP" />
      <nt id="nter54" label="." />
      <!--Terminals-->
      <!--Let-->
      <t id="ter18">
        <span>
          <target id="t18" />
        </span>
      </t>
      <!--'s-->
      <t id="ter19">
        <span>
          <target id="t19" />
        </span>
      </t>
      <!--see-->
      <t id="ter20">
        <span>
          <target id="t20" />
        </span>
      </t>
      <!--how-->
      <t id="ter21">
        <span>
          <target id="t21" />
        </span>
      </t>
      <!--it-->
      <t id="ter22">
        <span>
          <target id="t22" />
        </span>
      </t>
      <!--handle-->
      <t id="ter23">
        <span>
          <target id="t23" />
        </span>
      </t>
      <!--them-->
      <t id="ter24">
        <span>
          <target id="t24" />
        </span>
      </t>
      <!--.-->
      <t id="ter25">
        <span>
          <target id="t25" />
        </span>
      </t>
      <!--Tree edges-->
      <edge id="tre54" from="nter37" to="nter36" />
      <edge id="tre55" from="nter38" to="nter37" />
      <edge id="tre56" from="ter18" to="nter38" />
      <edge id="tre57" from="nter39" to="nter37" />
      <edge id="tre58" from="nter40" to="nter39" head="yes" />
      <edge id="tre59" from="nter41" to="nter40" head="yes" />
      <edge id="tre60" from="ter19" to="nter41" />
      <edge id="tre61" from="nter42" to="nter39" />
      <edge id="tre62" from="nter43" to="nter42" />
      <edge id="tre63" from="ter20" to="nter43" />
      <edge id="tre64" from="nter44" to="nter42" />
      <edge id="tre65" from="nter45" to="nter44" />
      <edge id="tre66" from="nter46" to="nter45" head="yes" />
      <edge id="tre67" from="ter21" to="nter46" />
      <edge id="tre68" from="nter47" to="nter44" />
      <edge id="tre69" from="nter48" to="nter47" head="yes" />
      <edge id="tre70" from="nter49" to="nter48" head="yes" />
      <edge id="tre71" from="ter22" to="nter49" />
      <edge id="tre72" from="nter50" to="nter47" />
      <edge id="tre73" from="nter51" to="nter50" />
      <edge id="tre74" from="ter23" to="nter51" />
      <edge id="tre75" from="nter52" to="nter50" />
      <edge id="tre76" from="nter53" to="nter52" head="yes" />
      <edge id="tre77" from="ter24" to="nter53" />
      <edge id="tre78" from="nter54" to="nter37" head="yes" />
      <edge id="tre79" from="ter25" to="nter54" />
    </tree>
  </constituency>
</KAF>

I tried it on local installation too, but a got a python error :

RuntimeError:      multisieve - WARNING - Lang code: fr
Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/jonathan/jruby-9.1.13.0/lib/ruby/gems/shared/gems/opener-coreference-base-2.1.1/core/corefgraph/process/file.py", line 133, in <module>
    main()
  File "/home/jonathan/jruby-9.1.13.0/lib/ruby/gems/shared/gems/opener-coreference-base-2.1.1/core/corefgraph/process/file.py", line 92, in main
    process(config=arguments, text=input_text, parse_tree=parse_tree, speakers_list=speakers_list, output=sys.stdout)
  File "/home/jonathan/jruby-9.1.13.0/lib/ruby/gems/shared/gems/opener-coreference-base-2.1.1/core/corefgraph/process/file.py", line 51, in process
    processor.process_text(document)
  File "corefgraph/text_processor.py", line 133, in process_text
    self.build_graph(document)
  File "corefgraph/text_processor.py", line 64, in build_graph
    graph=self.graph, sentence=sentence, sentence_namespace="text@{0}".format(index), root_index=index)
  File "corefgraph/graph/kafx.py", line 149, in process_sentence
    first_constituent = self.parse_syntax(sentence=sentence, syntactic_root=sentence_root_node)
  File "corefgraph/graph/kafx.py", line 572, in parse_syntax
    return self.parse_syntax_kaf(sentence=sentence, syntactic_root=syntactic_root)
  File "corefgraph/graph/kafx.py", line 492, in parse_syntax_kaf
    self.link_syntax_non_terminal(parent=target, child=source)
  File "corefgraph/graph/graph_builder.py", line 360, in link_syntax_non_terminal
    for word in self.get_words(child):
  File "corefgraph/graph/graph_builder.py", line 304, in get_words
    words = GraphWrapper.get_out_neighbours_by_relation_type(self.graph, element, relation_type=self.word_edge_type)
  File "corefgraph/graph/xutils.py", line 128, in get_out_neighbours_by_relation_type
    return [graph.node[target] for source, target, relation in graph.out_edges_iter(node["id"], keys=True)
AttributeError: 'MultiDiGraph' object has no attribute 'out_edges_iter'

                      run at /home/jonathan/jruby-9.1.13.0/lib/ruby/gems/shared/gems/opener-coreference-2.0.1/lib/opener/coreference.rb:50
  block in configure_slop at /home/jonathan/jruby-9.1.13.0/lib/ruby/gems/shared/gems/opener-coreference-2.0.1/lib/opener/coreference/cli.rb:53
                   parse! at /home/jonathan/jruby-9.1.13.0/lib/ruby/gems/shared/gems/slop-3.6.0/lib/slop.rb:260
                    parse at /home/jonathan/jruby-9.1.13.0/lib/ruby/gems/shared/gems/slop-3.6.0/lib/slop.rb:211
                      run at /home/jonathan/jruby-9.1.13.0/lib/ruby/gems/shared/gems/opener-coreference-2.0.1/lib/opener/coreference/cli.rb:20
                   <main> at /home/jonathan/jruby-9.1.13.0/lib/ruby/gems/shared/gems/opener-coreference-2.0.1/bin/coreference:7
                     load at org/jruby/RubyKernel.java:973
                   <main> at /home/jonathan/jruby-9.1.13.0/bin/coreference:23
gattilorenz commented 6 years ago

I have the same problem when running the local pipeline: echo "We really enjoyed the delicious food" | language-identifier | tokenizer | pos-tagger | constituent-parser | ner | coreference

The pipeline works fine until NER (output attached) ner-out.txt

ghost commented 6 years ago

Same here, I have the same problem, even if there are detected named entities in the output KAF of the NER module. Coreference however doesn't work. Could someone say something to this issue?

ragerri commented 5 years ago

Hello,

It seems that the Ruby modules are not maintained anymore. If you would like to use the NLP technology included in the Ruby modules you could take a look at

http://ixa2.si.ehu.es/ixa-pipes/

HTH,

R

On Mon, Aug 6, 2018 at 5:11 PM zolikacsepel notifications@github.com wrote:

Same here, I have the same problem, even if there are detected named entities in the output KAF of the NER module. Coreference however doesn't work. Could someone say something to this issue?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/opener-project/coreference/issues/1#issuecomment-410742382, or mute the thread https://github.com/notifications/unsubscribe-auth/AAZl_wqyBewwn9YxcAoBTtjKI-8D7_z9ks5uOFy0gaJpZM4QF7Yz .

dippedrusk commented 5 years ago

The error is caused due to breaking changes in later versions of the networkx library.

You are probably on version 2.0 or greater (I think I was on 2.2) and running this command solved the issue for me. Coreference now works like a dream!

pip install "networkx==1.0"