尝试从URL读取标记文件时,Stanford POS标记错误

时间:2014-05-10 01:37:16

标签: c# java filenotfoundexception stanford-nlp pos-tagger

我正在为项目使用POS标记器,当它从我的计算机(项目文件夹)中读取标记文件时,它可以成功运行。 但我需要先上传tagger文件,然后从URL中读取tagger文件。 为此,我上传了POS标记文件,我试图通过将URL提供给MaxentTagger方法的构造函数来读取标记文件:(我的代码在C#中,我已经覆盖了MaxentTagger类,所以它的构造函数看起来像这样:

  
    

public Tagger()     {

         

java.io.ByteArrayInputStream inputStream = new java.io.ByteArrayInputStream(System.IO.File.ReadAllBytes(@“C:\ models \ english-left3words-distsim.tagger”));

         

base.readModelAndInit(null,new java.io.DataInputStream(inputStream),false);     }

  

但是,当我运行代码时出现此错误:

“stanford-postagger.dll中发生了'java.lang.RuntimeException'类型的未处理异常

其他信息:java.io.FileNotFoundException:找不到路径'C:\ u \ nlp \ data \ pos_tags_are_useless \ egw4-reut.512.clusters'的一部分。“

有人知道为什么会这样,以及我如何解决这个问题?我非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

此错误来自尝试加载文件的程序,该文件提供从单词到群集的分布相似性映射。它试图从训练属性文件中指定的位置获取它(当然,您在该位置没有文件)。发生这种情况是因为在调用readModelAndInit()时没有正确初始化的TaggerConfig对象。它被初始化的方式是不直观的(很糟糕的架构),但你只是遇到这个,因为你试图使用非公共API。

为什么不能像以下一样使用公共API?

MaxentTagger base = new MaxentTagger("http://my.url.com/models/english-left3words-distsim.tagger");