运行 Stanford.NLP.CoreNLP 示例时出现 TypeInitializationException

Posted

技术标签:

【中文标题】运行 Stanford.NLP.CoreNLP 示例时出现 TypeInitializationException【英文标题】:TypeInitializationException when running Stanford.NLP.CoreNLP example 【发布时间】:2015-08-23 05:13:38 【问题描述】:

我正在尝试从 http://sergey-tihon.github.io/Stanford.NLP.NET/StanfordCoreNLP.html 运行 F# 示例。

该项目是 Java 斯坦福 NLP 库的 .NET 移植,所以我想知道这是否可能是 IKVM 问题。

我在 NET 4.5F# Core 3.1F# 控制台应用程序中运行示例代码。我还从正确的 jar 中下载了 models 并更改了代码中的路径。

这是引发的异常:

System.TypeInitializationException 未处理 消息:StanfordNLPNETFs.exe 中出现“System.TypeInitializationException”类型的未处理异常 附加信息:'.$Program' 的类型初始化程序引发了异常。

在我在GitHub上报告的问题的第二个帖子中,还有一个截图:https://cloud.githubusercontent.com/assets/1194228/9424606/4aef5e0e-48f2-11e5-9690-c2668303d225.png。

提前致谢。

【问题讨论】:

【参考方案1】:

您很可能遇到了随 nuget 版本/java 发行版一起提供和使用的 Stanford-NLP 发行版的 known issue。

无论如何,将以下属性设置添加到注释管道配置应该允许给定的示例代码以最新的Stanford.NLP.CoreNLP ver 3.5.2 nuget 成功运行:

props.setProperty("ner.useSUTime", "false") |> ignore

【讨论】:

现在我可以准确地输出样本了。 +1,这回答了我的问题!现在我将尝试探索这个库,它提供了对 Stanford-NLP 库的更多 F# 惯用访问。【参考方案2】:

将 .NET 中的文化更改为“美国”。

CultureInfo ci = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;

tagger = new MaxentTagger(modelsDirectory + @"\french.tagger");

我遇到了同样的问题。在 2 台计算机上它工作正常,而在其他 2 台计算机上则不能。所以我认为这是与时间有关的环境,所以我改变了文化。我正在使用法语文本的 POS 标记器。

【讨论】:

以上是关于运行 Stanford.NLP.CoreNLP 示例时出现 TypeInitializationException的主要内容,如果未能解决你的问题,请参考以下文章

如何避免在后台运行时启动应用程序时显示启动画面?

如何在运行时显示/隐藏列?

在后台运行时显示弹出窗口的权限

运行 nodemon server.js 时显示错误

为啥运行“git branch -r”时显示“origin/HEAD”?

在运行时显示 loadlib