我收集了超过20,000份PDF格式的法律诉状。我是一名律师,但我也编写计算机程序来帮助我在MFC / VC ++中练习。我想学习使用神经网络(不幸的是我的数学技能仅限于大学代数)来对诉讼中提交的文件进行分类。
我的第一个目标是训练一个三层前馈神经网络,以识别文件是否是一个小型索赔文件(带有字母" SP"在案件编号中),或者是否是常规文件文件(字母" CC"案件编号)。每个律师都会提出“#34; Case:"或"案例号"或"案件编号"或者其中一种无限变化。所以我采用了前600个字符(所有律师都会将案例编号放在前600个字符中),并创建一个CSV数据库,每行为一个文档,600列包含前600个字符的ASCII码,第601个字符是" 1"对于常规案例,或者" 0"对于小额索赔。
然后我通过这里编码的神经网络程序运行它: https://takinginitiative.wordpress.com/2008/04/23/basic-neural-network-tutorial-c-implementation-and-source-code/ (当然我更新程序来处理600个神经元,只有一个输出),但是当我运行时,准确性是可怕的 - 类似于训练数据的2%,以及一般设置的0%。 1/8的文件适用于非小额索赔案件。
这是神经网络可以处理的问题吗?我做错了什么?
答案 0 :(得分:0)
所以我采取了前600个字符(所有律师都会将案例编号放在前600个字符中),并创建一个CSV数据库,每行为一个文档,600列包含ASCII代码前600个字符,第601个字符是" 1"对于常规案例,或者" 0"对于小额索赔。
独立查看文档开头的每个字符将非常不准确。不要单独考虑字符,而是首先将前600个字符标记为单词。使用这些词作为神经网络的输入,而不是单个字符。
请注意,一旦您对前600个字符进行了标记,您可能会找到一个明显有限的令牌列表,这些令牌代表"案例编号",无需神经网络。
Standford Natural Language Processor提供此功能。您可以找到与.NET兼容的实现available in NuGet。