dakrone / clojure-opennlp

Natural Language Processing in Clojure (opennlp)
Eclipse Public License 1.0
752 stars 81 forks source link

CompilerException clojure.lang.ArityException #40

Closed mukeshtiwari closed 7 years ago

mukeshtiwari commented 8 years ago

I am trying to use the library but getting error. I am working on OS X Yosemite version 10.10.1 and installed opennlp using brew install apache-opennlp.

(defproject firstattempt "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.7.0"]
                 [clojure-opennlp "0.3.3"]])

user=> (use 'clojure.pprint)
nil
user=> (use 'opennlp.nlp)
nil
user=> (use 'opennlp.treebank)

CompilerException clojure.lang.ArityException: Wrong number of args (2) passed to: StringReader, compiling:(abnf.clj:189:28) 
rrrnld commented 8 years ago

I am having the same problem with a slightly different setup. I have no openlp installed via brew, I think all the dependencies are bundled, aren't they?

An excerpt from my project.clj:

 :dependencies [[org.clojure/clojure "1.7.0"]
                           ;; ...
                           [clojure-opennlp "0.3.3"]] }

The code:

(ns myproject.nlp
  (:require [opennlp.nlp :as onlp]))

(def get-sentences (onlp/make-sentence-detector "resources/models/en-sent.bin"))
(def pos-tag (onlp/make-pos-tagger "resources/models/en-pos-maxent.bin"))

When running from within LightTable 0.8.1 via Cmd + Shift + Enter, this is the complete stack trace that is shown:

#error {
 :cause Wrong number of args (2) passed to: StringReader
 :via
 [{:type clojure.lang.Compiler$CompilerException
   :message clojure.lang.ArityException: Wrong number of args (2) passed to: StringReader, compiling:(abnf.clj:189:28)
   :at [clojure.lang.Compiler$InvokeExpr eval Compiler.java 3628]}
  {:type clojure.lang.ArityException
   :message Wrong number of args (2) passed to: StringReader
   :at [clojure.lang.AFn throwArity AFn.java 429]}]
 :trace
 [[clojure.lang.AFn throwArity AFn.java 429]
  [clojure.lang.AFn invoke AFn.java 36]
  [instaparse.cfg$eval8379$safe_read_string__8380 invoke cfg.clj 163]
  [instaparse.cfg$process_string invoke cfg.clj 180]
  [instaparse.cfg$build_rule invoke cfg.clj 217]
  [clojure.core$map$fn__4553 invoke core.clj 2622]
  [clojure.lang.LazySeq sval LazySeq.java 40]
  [clojure.lang.LazySeq seq LazySeq.java 49]
  [clojure.lang.RT seq RT.java 507]
  [clojure.core$seq__4128 invoke core.clj 137]
  [clojure.core$apply invoke core.clj 630]
  [instaparse.cfg$build_rule invoke cfg.clj 215]
  [clojure.core$map$fn__4553 invoke core.clj 2622]
  [clojure.lang.LazySeq sval LazySeq.java 40]
  [clojure.lang.LazySeq seq LazySeq.java 49]
  [clojure.lang.RT seq RT.java 507]
  [clojure.core$seq__4128 invoke core.clj 137]
  [clojure.core$apply invoke core.clj 630]
  [instaparse.cfg$build_rule invoke cfg.clj 211]
  [instaparse.cfg$build_rule invoke cfg.clj 214]
  [clojure.core$map$fn__4553 invoke core.clj 2622]
  [clojure.lang.LazySeq sval LazySeq.java 40]
  [clojure.lang.LazySeq seq LazySeq.java 49]
  [clojure.lang.RT seq RT.java 507]
  [clojure.core$seq__4128 invoke core.clj 137]
  [clojure.core$apply invoke core.clj 630]
  [instaparse.cfg$build_rule invoke cfg.clj 215]
  [clojure.core$map$fn__4553 invoke core.clj 2622]
  [clojure.lang.LazySeq sval LazySeq.java 40]
  [clojure.lang.LazySeq seq LazySeq.java 49]
  [clojure.lang.RT seq RT.java 507]
  [clojure.core$seq__4128 invoke core.clj 137]
  [clojure.core$apply invoke core.clj 630]
  [instaparse.cfg$build_rule invoke cfg.clj 211]
  [instaparse.cfg$build_rule invoke cfg.clj 207]
  [clojure.core$map$fn__4553 invoke core.clj 2622]
  [clojure.lang.LazySeq sval LazySeq.java 40]
  [clojure.lang.LazySeq seq LazySeq.java 49]
  [clojure.lang.RT seq RT.java 507]
  [clojure.core$seq__4128 invoke core.clj 137]
  [clojure.core.protocols$seq_reduce invoke protocols.clj 30]
  [clojure.core.protocols$fn__6506 invoke protocols.clj 101]
  [clojure.core.protocols$fn__6452$G__6447__6465 invoke protocols.clj 13]
  [clojure.core$reduce invoke core.clj 6519]
  [clojure.core$into invoke core.clj 6600]
  [instaparse.cfg$ebnf invoke cfg.clj 277]
  [clojure.lang.AFn applyToHelper AFn.java 154]
  [clojure.lang.AFn applyTo AFn.java 144]
  [clojure.lang.Compiler$InvokeExpr eval Compiler.java 3623]
  [clojure.lang.Compiler$InvokeExpr eval Compiler.java 3622]
  [clojure.lang.Compiler$DefExpr eval Compiler.java 439]
  [clojure.lang.Compiler eval Compiler.java 6787]
  [clojure.lang.Compiler load Compiler.java 7227]
  [clojure.lang.RT loadResourceScript RT.java 371]
  [clojure.lang.RT loadResourceScript RT.java 362]
  [clojure.lang.RT load RT.java 446]
  [clojure.lang.RT load RT.java 412]
  [clojure.core$load$fn__5448 invoke core.clj 5866]
  [clojure.core$load doInvoke core.clj 5865]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [clojure.core$load_one invoke core.clj 5671]
  [clojure.core$load_lib$fn__5397 invoke core.clj 5711]
  [clojure.core$load_lib doInvoke core.clj 5710]
  [clojure.lang.RestFn applyTo RestFn.java 142]
  [clojure.core$apply invoke core.clj 632]
  [clojure.core$load_libs doInvoke core.clj 5749]
  [clojure.lang.RestFn applyTo RestFn.java 137]
  [clojure.core$apply invoke core.clj 632]
  [clojure.core$require doInvoke core.clj 5832]
  [clojure.lang.RestFn invoke RestFn.java 805]
  [instaparse.core$eval7658$loading__5340__auto____7659 invoke core.clj 1]
  [instaparse.core$eval7658 invoke core.clj 1]
  [clojure.lang.Compiler eval Compiler.java 6782]
  [clojure.lang.Compiler eval Compiler.java 6771]
  [clojure.lang.Compiler load Compiler.java 7227]
  [clojure.lang.RT loadResourceScript RT.java 371]
  [clojure.lang.RT loadResourceScript RT.java 362]
  [clojure.lang.RT load RT.java 446]
  [clojure.lang.RT load RT.java 412]
  [clojure.core$load$fn__5448 invoke core.clj 5866]
  [clojure.core$load doInvoke core.clj 5865]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [clojure.core$load_one invoke core.clj 5671]
  [clojure.core$load_lib$fn__5397 invoke core.clj 5711]
  [clojure.core$load_lib doInvoke core.clj 5710]
  [clojure.lang.RestFn applyTo RestFn.java 142]
  [clojure.core$apply invoke core.clj 632]
  [clojure.core$load_libs doInvoke core.clj 5749]
  [clojure.lang.RestFn applyTo RestFn.java 137]
  [clojure.core$apply invoke core.clj 632]
  [clojure.core$require doInvoke core.clj 5832]
  [clojure.lang.RestFn invoke RestFn.java 436]
  [clout.core$eval7652$loading__5340__auto____7653 invoke core.clj 1]
  [clout.core$eval7652 invoke core.clj 1]
  [clojure.lang.Compiler eval Compiler.java 6782]
  [clojure.lang.Compiler eval Compiler.java 6771]
  [clojure.lang.Compiler load Compiler.java 7227]
  [clojure.lang.RT loadResourceScript RT.java 371]
  [clojure.lang.RT loadResourceScript RT.java 362]
  [clojure.lang.RT load RT.java 446]
  [clojure.lang.RT load RT.java 412]
  [clojure.core$load$fn__5448 invoke core.clj 5866]
  [clojure.core$load doInvoke core.clj 5865]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [clojure.core$load_one invoke core.clj 5671]
  [clojure.core$load_lib$fn__5397 invoke core.clj 5711]
  [clojure.core$load_lib doInvoke core.clj 5710]
  [clojure.lang.RestFn applyTo RestFn.java 142]
  [clojure.core$apply invoke core.clj 632]
  [clojure.core$load_libs doInvoke core.clj 5749]
  [clojure.lang.RestFn applyTo RestFn.java 137]
  [clojure.core$apply invoke core.clj 632]
  [clojure.core$require doInvoke core.clj 5832]
  [clojure.lang.RestFn invoke RestFn.java 482]
  [compojure.core$eval7336$loading__5340__auto____7337 invoke core.clj 1]
  [compojure.core$eval7336 invoke core.clj 1]
  [clojure.lang.Compiler eval Compiler.java 6782]
  [clojure.lang.Compiler eval Compiler.java 6771]
  [clojure.lang.Compiler load Compiler.java 7227]
  [clojure.lang.RT loadResourceScript RT.java 371]
  [clojure.lang.RT loadResourceScript RT.java 362]
  [clojure.lang.RT load RT.java 446]
  [clojure.lang.RT load RT.java 412]
  [clojure.core$load$fn__5448 invoke core.clj 5866]
  [clojure.core$load doInvoke core.clj 5865]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [clojure.core$load_one invoke core.clj 5671]
  [clojure.core$load_lib$fn__5397 invoke core.clj 5711]
  [clojure.core$load_lib doInvoke core.clj 5710]
  [clojure.lang.RestFn applyTo RestFn.java 142]
  [clojure.core$apply invoke core.clj 632]
  [clojure.core$load_libs doInvoke core.clj 5749]
  [clojure.lang.RestFn applyTo RestFn.java 137]
  [clojure.core$apply invoke core.clj 632]
  [clojure.core$require doInvoke core.clj 5832]
  [clojure.lang.RestFn invoke RestFn.java 551]
  [myproject.core$eval24$loading__5340__auto____25 invoke core.clj 1]
  [myproject.core$eval24 invoke core.clj 1]
  [clojure.lang.Compiler eval Compiler.java 6782]
  [clojure.lang.Compiler eval Compiler.java 6771]
  [clojure.lang.Compiler load Compiler.java 7227]
  [clojure.lang.RT loadResourceScript RT.java 371]
  [clojure.lang.RT loadResourceScript RT.java 362]
  [clojure.lang.RT load RT.java 446]
  [clojure.lang.RT load RT.java 412]
  [clojure.core$load$fn__5448 invoke core.clj 5866]
  [clojure.core$load doInvoke core.clj 5865]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [clojure.core$load_one invoke core.clj 5671]
  [clojure.core$load_lib$fn__5397 invoke core.clj 5711]
  [clojure.core$load_lib doInvoke core.clj 5710]
  [clojure.lang.RestFn applyTo RestFn.java 142]
  [clojure.core$apply invoke core.clj 632]
  [clojure.core$load_libs doInvoke core.clj 5749]
  [clojure.lang.RestFn applyTo RestFn.java 137]
  [clojure.core$apply invoke core.clj 632]
  [clojure.core$require doInvoke core.clj 5832]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [user$eval15 invoke form-init3759579341673744969.clj 1]
  [clojure.lang.Compiler eval Compiler.java 6782]
  [clojure.lang.Compiler eval Compiler.java 6771]
  [clojure.lang.Compiler eval Compiler.java 6771]
  [clojure.lang.Compiler load Compiler.java 7227]
  [clojure.lang.Compiler loadFile Compiler.java 7165]
  [clojure.main$load_script invoke main.clj 275]
  [clojure.main$init_opt invoke main.clj 280]
  [clojure.main$initialize invoke main.clj 308]
  [clojure.main$null_opt invoke main.clj 343]
  [clojure.main$main doInvoke main.clj 421]
  [clojure.lang.RestFn invoke RestFn.java 421]
  [clojure.lang.Var invoke Var.java 383]
  [clojure.lang.AFn applyToHelper AFn.java 156]
  [clojure.lang.Var applyTo Var.java 700]
  [clojure.main main main.java 37]]}
Exception in thread "main" java.lang.Exception: namespace 'instaparse.abnf' not found, compiling:(instaparse/core.clj:1:1)
    at clojure.core$throw_if.doInvoke(core.clj:5630)
    at clojure.lang.RestFn.invoke(RestFn.java:442)
    at clojure.core$load_lib.doInvoke(core.clj:5716)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invoke(core.clj:632)
    at clojure.core$load_libs.doInvoke(core.clj:5749)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:632)
    at clojure.core$require.doInvoke(core.clj:5832)
    at clojure.lang.RestFn.invoke(RestFn.java:805)
    at instaparse.core$eval15943$loading__5340__auto____15944.invoke(core.clj:1)
    at instaparse.core$eval15943.invoke(core.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:6782)
    at clojure.lang.Compiler.eval(Compiler.java:6771)
    at clojure.lang.Compiler.load(Compiler.java:7227)
    at clojure.lang.RT.loadResourceScript(RT.java:371)
    at clojure.lang.RT.loadResourceScript(RT.java:362)
    at clojure.lang.RT.load(RT.java:446)
    at clojure.lang.RT.load(RT.java:412)
    at clojure.core$load$fn__5448.invoke(core.clj:5866)
    at clojure.core$load.doInvoke(core.clj:5865)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invoke(core.clj:5671)
    at clojure.core$load_lib$fn__5397.invoke(core.clj:5711)
    at clojure.core$load_lib.doInvoke(core.clj:5710)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invoke(core.clj:632)
    at clojure.core$load_libs.doInvoke(core.clj:5749)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:632)
    at clojure.core$require.doInvoke(core.clj:5832)
    at clojure.lang.RestFn.invoke(RestFn.java:457)
    at glow.parse$eval15691$loading__5340__auto____15692.invoke(parse.clj:1)
    at glow.parse$eval15691.invoke(parse.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:6782)
    at clojure.lang.Compiler.eval(Compiler.java:6771)
    at clojure.lang.Compiler.load(Compiler.java:7227)
    at clojure.lang.RT.loadResourceScript(RT.java:371)
    at clojure.lang.RT.loadResourceScript(RT.java:362)
    at clojure.lang.RT.load(RT.java:446)
    at clojure.lang.RT.load(RT.java:412)
    at clojure.core$load$fn__5448.invoke(core.clj:5866)
    at clojure.core$load.doInvoke(core.clj:5865)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invoke(core.clj:5671)
    at clojure.core$load_lib$fn__5397.invoke(core.clj:5711)
    at clojure.core$load_lib.doInvoke(core.clj:5710)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invoke(core.clj:632)
    at clojure.core$load_libs.doInvoke(core.clj:5749)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:632)
    at clojure.core$require.doInvoke(core.clj:5832)
    at clojure.lang.RestFn.invoke(RestFn.java:457)
    at glow.core$eval15664$loading__5340__auto____15665.invoke(core.clj:1)
    at glow.core$eval15664.invoke(core.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:6782)
    at clojure.lang.Compiler.eval(Compiler.java:6771)
    at clojure.lang.Compiler.load(Compiler.java:7227)
    at clojure.lang.RT.loadResourceScript(RT.java:371)
    at clojure.lang.RT.loadResourceScript(RT.java:362)
    at clojure.lang.RT.load(RT.java:446)
    at clojure.lang.RT.load(RT.java:412)
    at clojure.core$load$fn__5448.invoke(core.clj:5866)
    at clojure.core$load.doInvoke(core.clj:5865)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invoke(core.clj:5671)
    at clojure.core$load_lib$fn__5397.invoke(core.clj:5711)
    at clojure.core$load_lib.doInvoke(core.clj:5710)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invoke(core.clj:632)
    at clojure.core$load_libs.doInvoke(core.clj:5749)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:632)
    at clojure.core$require.doInvoke(core.clj:5832)
    at clojure.lang.RestFn.invoke(RestFn.java:512)
    at ultra.repl$eval15658$loading__5340__auto____15659.invoke(repl.clj:1)
    at ultra.repl$eval15658.invoke(repl.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:6782)
    at clojure.lang.Compiler.eval(Compiler.java:6771)
    at clojure.lang.Compiler.load(Compiler.java:7227)
    at clojure.lang.RT.loadResourceScript(RT.java:371)
    at clojure.lang.RT.loadResourceScript(RT.java:362)
    at clojure.lang.RT.load(RT.java:446)
    at clojure.lang.RT.load(RT.java:412)
    at clojure.core$load$fn__5448.invoke(core.clj:5866)
    at clojure.core$load.doInvoke(core.clj:5865)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invoke(core.clj:5671)
    at clojure.core$load_lib$fn__5397.invoke(core.clj:5711)
    at clojure.core$load_lib.doInvoke(core.clj:5710)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invoke(core.clj:632)
    at clojure.core$load_libs.doInvoke(core.clj:5749)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:632)
    at clojure.core$require.doInvoke(core.clj:5832)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at ultra.hardcore$configure_repl_BANG_.invoke(hardcore.clj:31)
    at clojure.lang.Var.invoke(Var.java:394)
    at clojure.lang.AFn.applyToHelper(AFn.java:165)
    at clojure.lang.Var.applyTo(Var.java:700)
    at clojure.lang.Compiler.macroexpand1(Compiler.java:6631)
    at clojure.lang.Compiler.macroexpand(Compiler.java:6692)
    at clojure.lang.Compiler.eval(Compiler.java:6766)
    at clojure.lang.Compiler.eval(Compiler.java:6745)
    at clojure.core$eval.invoke(core.clj:3081)
    at ultra.hardcore$run_configuration.invoke(hardcore.clj:63)
    at ultra.hardcore$configure_BANG_.invoke(hardcore.clj:76)
    at myproject.core$eval15652.invoke(form-init3759579341673744969.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:6782)
    at clojure.lang.Compiler.eval(Compiler.java:6772)
    at clojure.lang.Compiler.eval(Compiler.java:6772)
    at clojure.lang.Compiler.eval(Compiler.java:6771)
    at clojure.lang.Compiler.eval(Compiler.java:6771)
    at clojure.lang.Compiler.eval(Compiler.java:6772)
    at clojure.lang.Compiler.eval(Compiler.java:6771)
    at clojure.lang.Compiler.load(Compiler.java:7227)
    at clojure.lang.Compiler.loadFile(Compiler.java:7165)
    at clojure.main$load_script.invoke(main.clj:275)
    at clojure.main$init_opt.invoke(main.clj:280)
    at clojure.main$initialize.invoke(main.clj:308)
    at clojure.main$null_opt.invoke(main.clj:343)
    at clojure.main$main.doInvoke(main.clj:421)
    at clojure.lang.RestFn.invoke(RestFn.java:421)
    at clojure.lang.Var.invoke(Var.java:383)
    at clojure.lang.AFn.applyToHelper(AFn.java:156)
    at clojure.lang.Var.applyTo(Var.java:700)
    at clojure.main.main(main.java:37)
Caused by: java.lang.Exception: namespace 'instaparse.abnf' not found
    ... 127 more
clojure.lang.ExceptionInfo: Subprocess failed {:exit-code 1}
    at clojure.core$ex_info.invoke(core.clj:4593)
    at leiningen.core.eval$fn__2428.invoke(eval.clj:236)
    at clojure.lang.MultiFn.invoke(MultiFn.java:233)
    at leiningen.core.eval$eval_in_project.invoke(eval.clj:337)
    at clojure.lang.AFn.applyToHelper(AFn.java:160)
    at clojure.lang.AFn.applyTo(AFn.java:144)
    at clojure.core$apply.invoke(core.clj:632)
    at leiningen.repl$repl.doInvoke(repl.clj:322)
    at clojure.lang.RestFn.invoke(RestFn.java:425)
    at leiningen.light_nrepl$light.invoke(light_nrepl.clj:77)
    at leiningen.light_nrepl$_main.doInvoke(light_nrepl.clj:85)
    at clojure.lang.RestFn.invoke(RestFn.java:397)
    at clojure.lang.AFn.applyToHelper(AFn.java:152)
    at clojure.lang.RestFn.applyTo(RestFn.java:132)
    at leiningen.light_nrepl.main(Unknown Source)
crbowman commented 8 years ago

Hey @heyarne, I had the same issue as you and have found that is is cause by an outdated version of instaparse that is being used by clojure-opennlp. Try adding the latest version of instaparse to your dependencies.

:dependencies [[org.clojure/clojure "1.7.0"]
               ;; ...
               [instaparse "1.4.1"]
               [clojure-opennlp "0.3.3"]]}
imarios commented 8 years ago

Thank you @crbowman! Worked for me.

vsmart commented 7 years ago

Hi @dakrone, I see the core issue is fixed since instaparse is updated to 1.4.1. However I still have to use the wrong-around since the update isn't released yet. Could you push the latest version of clojure-opennlp to Clojars?

dakrone commented 7 years ago

@vsmart thanks for the reminder, I've released 0.4.0 to Clojars!