复赛马上就要开始了, 招募 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);
- }
来源: https://www.cnblogs.com/TextEditor/p/9289325.html