gpt4 book ai didi

c# - 在c#中运行Stanford.NLP.CoreNLP 3.8示例时出现TypeInitializationException

转载 作者:行者123 更新时间:2023-12-03 09:04:22 26 4
gpt4 key购买 nike

我意识到这个问题已被观察到并通过包含props.setProperty("ner.useSUTime", "0");但是,错误仍然存​​在。我通过 nuget 添加了 corenlp 3.8,我在 NetStandard2.0 配置中使用 c# Visual Studio 2017。

我的代码: `

public Dictionary<int, List<Word>> GetPOSFromStandforNLP(string sent)
{
var pos = new Dictionary<int, List<Word>>();
var jarRoot = @"../vendor/stanford-corenlp-3.8.0-models";

// Annotation pipeline configuration
var props = new Properties();
// Annotation pipeline configuration
var props = new Properties();
props.setProperty("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref");
props.setProperty("ner.useSUTime", "0");

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

var curDir = Environment.CurrentDirectory;
Directory.SetCurrentDirectory(jarRoot);
var pipeline = new StanfordCoreNLP(props);
Directory.SetCurrentDirectory(curDir);
// Annotation
var annotation = new Annotation(text);
pipeline.annotate(annotation);
// Result - Pretty Print
using (var stream = new ByteArrayOutputStream())
{
pipeline.prettyPrint(annotation, new PrintWriter(stream));
Console.WriteLine(stream.toString());
stream.close();
}


错误:

System.TypeInitializationException: The type initializer for 'edu.stanford.nlp.pipeline.AnnotationPipeline' threw an exception. ---> System.TypeInitializationException: The type initializer for 'edu.stanford.nlp.util.logging.Redwood' threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly 'System.Configuration.ConfigurationManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.     at IKVM.Internal.AssemblyClassLoader.LoadCustomClassLoaderRedirects()    at IKVM.Internal.AssemblyClassLoader.GetCustomClassLoaderType()    at IKVM.Internal.AssemblyClassLoader.GetJavaClassLoader()    at java.lang.Class.getClassLoader(CallerID )    at java.lang.Class.desiredAssertionStatus()    at edu.stanford.nlp.util.logging.Redwood..cctor(

最佳答案

Stanford.NLP.NETIKVM项目。 IKVM 是 now defunkt .NET 中的 Java 虚拟机实现。它不支持.NET Standard 2.0,仅支持.NET Framework 和 Mono。

所以你的选择是:

  1. 目标 .NET Framework 或 Mono。
  2. 移植 Stanford.NLP.CoreNLP Java project .NET 标准。
  3. 将 IKVM.NET 项目移植到 .NET Standard(最好将其开源,以便其他需要快速路径在 .NET Standard 中运行 Java 代码的人可以这样做)。请注意,目前正在进行一项名为 ikvm-revived 的工作。 .
  4. 使用 Pinvoke 调用 Java,并使用普通 C 包装器作为中间人,使用 JNI 加载 JVM 并公开使用 JNI 调用 Java 的函数,如 described here .
  5. 使用 Java 或 another language that Stanford.NLP.CoreNLP supports 实现您的应用程序.

关于c# - 在c#中运行Stanford.NLP.CoreNLP 3.8示例时出现TypeInitializationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48254427/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com