我正在使用 OpenNLP 从给定文本中提取命名实体。 在大数据上运行代码时,它给了我以下错误。当我在小数据上运行它时,它工作得很好。
java.lang.NullPointerException
at opennlp.tools.util.Cache.put(Cache.java:134)
at opennlp.tools.util.featuregen.CachedFeatureGenerator.createFeatures(CachedFeatureGenerator.java:71)
at opennlp.tools.namefind.DefaultNameContextGenerator.getContext(DefaultNameContextGenerator.java:116)
at opennlp.tools.namefind.DefaultNameContextGenerator.getContext(DefaultNameContextGenerator.java:39)
at opennlp.tools.util.BeamSearch.bestSequences(BeamSearch.java:125)
at opennlp.tools.util.BeamSearch.bestSequence(BeamSearch.java:198)
at opennlp.tools.namefind.NameFinderME.find(NameFinderME.java:214)
at opennlp.tools.namefind.NameFinderME.find(NameFinderME.java:198)
请帮我解决这个问题。
最佳答案
我在使用 POSTaggerME 时遇到了同样的问题,几乎可以肯定原因是您在线程之间共享 NameFinderME 实例。
根据 opennlp 文档,大多数公开的库类都不是线程安全的: http://incubator.apache.org/opennlp/documentation/manual/opennlp.html#tools.namefind.recognition.api
关于nlp - NameFinderME 类中 OpenNLP 的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4989381/