5

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)

これで私を助けてください。

4

1 に答える 1

3

POSTaggerME でも同じ問題が発生しましたが、その原因はほぼ確実に、スレッド間で NameFinderME インスタンスを共有しているためです。

opennlp のドキュメントによると、公開されているライブラリ クラスのほとんどはスレッドセーフではありません: http://incubator.apache.org/opennlp/documentation/manual/opennlp.html#tools.namefind.recognition.api

于 2011-07-30T16:56:18.777 に答える