MorphAnnotator.addLemma создает исключение NullPointerException для определенного текстового потока
(def ^:private props
(doto (java.util.Properties.)
(.put "annotators" "tokenize, ssplit, pos, lemma, parse")
(.put "parse.maxlen" (str (-> config :nlp :max-sentence-length)))
(.put "pos.maxlen" (str (-> config :nlp :max-sentence-length)))))
(def ^:private pipeline (StanfordCoreNLP. props))
(defn- annotated-doc [s]
(.process pipeline s))
(def input-text (slurp "/home/you/some.txt"))
(annotated-doc input-text)
Который затем производит либо должным образом аннотированный результат, как и ожидалось, или это исключение:
java.lang.NullPointerException: ноль MorphaAnnotator.java:68 pipe.AnnotationPipeline.annotate StanfordCoreNLP.java:881 edu.stanford.nlp.pipeline.StanfordCoreNLP.annotate StanfordCoreNLP.java:910 edu.stanford.nlp.pipeline. Java:43 sun.reflect.DelegatingMethodAccessorImpl.invoke Method.java:606 java.lang.reflect.Method.invoke Reflector.java:93 clojure.lang.Reflector.invokeMatchingMethod Reflector.java:28
Текстовый файл очень ванильный. Я сократил свой список аннотаторов до того, что вызывает проблему. У меня настроено 6 ГБ памяти. Текстовый файл имеет длину 3886 символов, форматированный файл UTF-8 BOM. Он работает с частичным текстом из этого файла просто отлично. Это даже работает, если я беру весь файл как в (взять 3886 input-text). Так что я в тупике. Не уверен, что с этим делать. Какие-либо предложения?
Вот ссылка на текстовый файл, который я использовал: http://nectarineimp.com/spooky-action.txt
Из моего файла project.clj:
:dependencies [[org.clojure/clojure "1.6.0"]
[edu.stanford.nlp/stanford-corenlp "3.3.1"]
[edu.stanford.nlp/stanford-corenlp "3.3.1" :classifier "models"]]
1 ответ
Я согласен, что это ошибка в Annotator. Я не уверен, для чего нужны ваши настройки:
(def ^:private props
(doto (java.util.Properties.)
(.put "annotators" "tokenize, ssplit, pos, lemma, parse")
(.put "parse.maxlen" (str (-> config :nlp :max-sentence-length)))
(.put "pos.maxlen" (str (-> config :nlp :max-sentence-length)))))
Но они не имели отношения к воспроизведению проблемы. Я недавно обновил проект до версии 3.5.2
и ваш блок кода работал без проблем ( CoreNLP Version History).
Работает в 3.1.1
дает ваши результаты точно. Похоже на версию 3.5.0
требуется Java 1.8 JVM.
Эта ошибка, кажется, исправлена в версии 3.4
CoreNLP, который не требует обновлений JVM.
Ваш вопрос был опубликован некоторое время назад, поэтому я почти уверен, что вы уже все поняли, но ради Google я оставил эти комментарии.