输出“文件——令牌entity"使用斯坦福NER

本文关键字:quot 斯坦福 NER 文件 令牌 entity 输出 | 更新日期: 2023-09-27 18:04:36

我想在c#中使用斯坦福NER读取文件夹中的所有文件,并以"文件令牌实体"格式将结果输出到一个文件中

我有:

namespace stanfordNER
{
    class Program
    {
        public static CRFClassifier Classifier = CRFClassifier.getClassifierNoExceptions(@"english.all.3class.distsim.crf.ser.gz");
        static void Main(string[] args)
        {
            Console.WriteLine("directory address?");
            string dir = Console.ReadLine();
            //Reads all files in directory
            string[] files = System.IO.Directory.GetFiles(dir);
            foreach (string f in files)
            {
                //Get the document name
                string docNo = Path.GetFileName(Path.GetFullPath(f).TrimEnd(Path.DirectorySeparatorChar));
                Console.WriteLine(docNo);
                string docText = System.IO.File.ReadAllText(f); 
                var classified = Classifier.classifyFile(f).toArray();
                //Error here when running
                //Should output the entities,**this part is the work of Stewart Whiting (STEWH)
                for (int i = 0; i < classified.Length; i++)
                {
                    Triple triple = (Triple)classified[i];
                    int second = Convert.ToInt32(triple.second().ToString());
                    int third = Convert.ToInt32(triple.third().ToString());
                    Console.WriteLine(docNo + ''t' + triple.first().ToString() + ''t' +                              docText.Substring(second, third - second));
                }
            }
        }
    }
}

我在"triple"处得到一个无效的强制转换异常错误。我不知道如何使用三重函数。

我想要的输出示例:

wiki-ms      ORGANIZATION    Microsoft Corporation
wiki-ms      LOCATION        Redmond
wiki-ms      LOCATION        Washington
wiki-ms      ORGANIZATION    Microsoft
wiki-ms      ORGANIZATION    Microsoft Office
wiki-ms      ORGANIZATION    Microsoft
wiki-ms      PERSON          Bill Gates
wiki-ms      PERSON          Paul Allen
wiki-ms      ORGANIZATION    Microsoft
wiki-ms      ORGANIZATION    Microsoft

提前感谢!我是一名制造工程师,所以我的编程知识很差。

如果你有一种方法来过滤重复和/或类似的实体,这将是一个额外的奖励!

感谢Stewart Whiting。他的网站

输出“文件——令牌entity"使用斯坦福NER

我明白了,只需要改变

var classified = Classifier.classifyFile(f).toArray();

var classified = Classifier.classifyToCharacterOffsets(docText).toArray();

谢谢。