栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么从WEB-INF文件夹内部无法加载POSModel文件?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么从WEB-INF文件夹内部无法加载POSModel文件?

假设您使用的是OpenNLP 1.5.3,则应该使用另一种加载资源文件的方式,该方式不通过URI转换使用“硬”路径引用。

给定一个环境,其中

WEB-INF
目录中
resources
存在另一个包含您的OpenNLP模型文件的目录,您的代码片段应编写如下:

String taggerModelPath = "/WEB-INF/resources/en-pos-maxent.bin";String chunkerModelPath= "/WEB-INF/resources/en-chunker.bin";POSModel model = new POSModelLoader().load(servletContext.getResourceAsStream(taggerModelPath));

有关ServletContext#getResourceAsStream的信息,请参见Javadoc;

重要提示

可悲的是,您的代码还有其他问题。OpenNLP类

POSModelLoader
仅供 内部
使用,请参阅POSModelLoader的官方Javadoc :

为命令行工具加载POS Tagger模型。

注意: 请勿使用此类,仅供内部使用!

因此,

POSModel
在Web上下文中加载a应该做的不同:通过该类的可用构造函数之一。您可以这样重新编写上面的代码片段:

try {    InputStream in = servletContext.getResourceAsStream(taggerModelPath);    POSModel posModel;    if(in != null) {        posModel = new POSModel(in);        // from here, <posModel> is initialized and you can start playing with it...        // ...    }    else {        // resource file not found - whatever you want to do in this case    }}catch (IOException | InvalidFormatException ex) {    // proper exception handling here... cause: getResourcesAsStream or OpenNLP...}

这样,您就符合OpenNLP API的要求,同时可以进行适当的异常处理。而且,如果模型文件的资源路径引用仍然不清楚,您现在可以使用调试器。

希望能帮助到你。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/401192.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号