【开源】C#信息抽取系统【招募C#队友】

复赛马上就要开始了,招募C#队友。(有兴趣的私信我)
管理员请不要删除。内容会持续更新的。

最近在参加阿里巴巴的天池比赛:A股上市公司公告信息抽取
https://tianchi.aliyun.com/competition/introduction.htm?spm=5176.100066.0.0.4a7833af7P0pmx&raceId=231659

按照道理来说,这个比赛官方是推荐使用Python的。本人Python小白,而且考虑到需要做成泛用的抽取器,所以使用C#作为开发语言。
(其实现在NetCore的ML.net发布之后,NetCore做ML的项目也不是不可能了,
感觉微软有能力将C#和机器学习结合起来。同时TensorSharp的发布也预示着TensorFlow也开始向其他语言上发展了。当然希望微软不要脑残,给Python做嫁衣,继续坑C#的程序员)

先上初赛之后的代码:
https://github.com/magicdict/FDDC

对于信息抽取,其实大致两种做法,通过大量的业务规则建立模型,或者通过NLP的技术进行训练。
由于没有经过正规的NLP训练,所以,暂时以撸业务规则起步。

信息抽取,其实包含了从原文中抽取关键信息的候选值,然后,通过一套置信度系统,选择可信度最高的一个答案。
官方提供的赛题语料是PDF和HTML的,所以,需要做一些预处理。

这里使用的是Python的pdfminer作为PDF转TXT的工具。
以下是Win上bat文件生成用代码

var ContractPath_TEST = Program.DocBase + @"\FDDC_announcements_round1_test_b_20180708\重大合同";
        Logger.WriteLine("mkdir " + ContractPath_TEST + "\\txt");
        foreach (var filename in System.IO.Directory.GetFiles(ContractPath_TEST + @"\pdf\"))
        {
            Logger.WriteLine("pdf2txt.py " + filename + " >" + filename.Replace("pdf", "txt"));
        }

        Logger.Close();return;

当然TXT文件获得之后,就可以使用LTP工具,获得DP,NER,SRL文件了。这里使用的是哈工大的LTP工具。
(注:3.3.4在多个平台上SRL阶段无法运行,因为其使用了Dynet神经网络库,可能需要GPU驱动)
以下是MAC上sh文件生成用代码

        Logger.WriteLine("mkdir /Users/hu/Desktop/FDDCTraing/TrainingSrl");
        foreach (var filename in System.IO.Directory.GetFiles(ContractPath_TRAIN))
        {
            var srlPath = "/Users/hu/Desktop/FDDCTraing/TrainingSrl/";
            var fi = new FileInfo(filename);
            var xml = fi.Name.Replace("txt", "xml");
            if (!xml.Contains("xml")) xml += ".xml";
            Logger.WriteLine("./ltp_test --input " + filename + " > " + srlPath + xml);
        }

猜你喜欢

转载自www.cnblogs.com/TextEditor/p/9289325.html