2 回答
TA贡献1842条经验 获得超21个赞
如果getResourceAsStream
返回null
,则表示未找到该资源。
您应该检查null
并执行其他操作,例如抛出异常(IOException
或者FileNotFoundException
在本例中,因为声明IOException
允许子类throws
) - 您不应该让它传递null
给代码的其余部分。
NLPClassifier.class.getResourceAsStream("/home/int/src/main/resources/en-pos.txt")
不起作用,因为资源与 Java 包具有相同的结构,只不过点被替换为斜线。它不是文件系统中的路径。
将其更改为:(getResourceAsStream("/en-pos.txt")
因为您的文件位于包层次结构的根目录)
TA贡献1853条经验 获得超18个赞
我更改了我的代码,正如 Erwin Bolwidt 所说:
/** I commented this part
return NLPClassifier.class.getResourceAsStream("/home/interceptor/src/main/resources/en-pos.txt");
*/
/**
Add this location of my resoures:
/Project/src/main/resources
*/
return getClass().getClassLoader().getResourceAsStream("en-pos.txt");
之后,我发现 Apache OpenNLP: java.io.FileInputStream无法转换为 opennlp.tools.util.InputStreamFactory,有类似的问题,但使用其他方法。@schrieveslaach 说
您需要一个InputStreamFactory 实例来检索您的InputStream。此外,TokenNameFinderFactory 不能为 null!像这样posFactory - 不能为空!
/**
* Factory must not be a null. Add posModel.getFactory()
* model = POSTaggerME.train("en", sampleStream, TrainingParameters.defaultParams(), null);
*/
model = POSTaggerME.train("en", sampleStream, TrainingParameters.defaultParams(), posModel.getFactory());
仓库中项目的完整代码 https://github.com/AlexTitovWork/NLPclassifier
添加回答
举报