【发布时间】:2012-11-03 18:34:02
【问题描述】:
我尝试在普通 Java 应用程序上使用 openNLP POS Models 进行 POS 标记。现在我想在Android平台上实现它。我不确定 Android 的要求或限制是什么,因为我无法读取模型(二进制文件)并正确执行 POS 标记。
我尝试从外部存储中获取 .bin 文件并将其放入外部库中,但仍然无法正常工作。这些是我的代码:
InputStream modelIn = null;
POSModel model = null;
String path = Environment.getExternalStorageDirectory().getPath() + "/TextSumIt/en-pos-maxent.bin";
modelIn = new BufferedInputStream( new FileInputStream(path));
model = new POSModel(modelIn);
我得到的错误:
11-15 06:39:35.072: W/System.err(565): opennlp.tools.util.InvalidFormatException: The profile data stream has an invalid format!
11-15 06:39:35.177: W/System.err(565): at opennlp.tools.dictionary.serializer.DictionarySerializer.create(DictionarySerializer.java:224)
11-15 06:39:35.177: W/System.err(565): at opennlp.tools.postag.POSDictionary.create(POSDictionary.java:282)
11-15 06:39:35.182: W/System.err(565): at opennlp.tools.postag.POSModel$POSDictionarySerializer.create(POSModel.java:48)
11-15 06:39:35.182: W/System.err(565): at opennlp.tools.postag.POSModel$POSDictionarySerializer.create(POSModel.java:44)
11-15 06:39:35.182: W/System.err(565): at opennlp.tools.util.model.BaseModel.<init>(BaseModel.java:135)
11-15 06:39:35.197: W/System.err(565): at opennlp.tools.postag.POSModel.<init>(POSModel.java:93)
11-15 06:39:35.197: W/System.err(565): at com.main.textsumit.SummarizationActivity.postagWords(SummarizationActivity.java:676)
11-15 06:39:35.205: W/System.err(565): at com.main.textsumit.SummarizationActivity.generateSummary(SummarizationActivity.java:252)
11-15 06:39:35.205: W/System.err(565): at com.main.textsumit.SummarizationActivity.onCreate(SummarizationActivity.java:127)
是什么导致它无法正确读取模型?我应该如何解决这个问题?请帮忙。
谢谢。
【问题讨论】:
-
使用 AssetManager 可能会有帮助吗?尝试将文件移动到项目的资产文件夹中。然后尝试以下操作: AssetManager am = getAssets(); InputStream is = am.open("en-pos-maxent.bin");
-
我也尝试过使用 AssetManager.. 它也没有读取模型。还有什么办法吗?我可以放入外部库并从中调用吗?有可能吗?
标签: android machine-learning nlp opennlp