我被困在一个我认为不可能的工作项目中,我想知道是否有人可以证实我认为这是不可能的,或者至少给我新的选择。
我们正在为一个客户端做一个项目,该项目涉及从服务器大量下载文件(很容易使用ftp4j和文档名称列表),但现在我们需要对来自服务器的数据进行排序。客户正在合同中工作,并希望我们提取相关信息,例如:许可方,被许可方,产品,协议日期,终止日期,特许权使用费,限制。
由于文件完全不标准化,甚至可以做到吗?我可以想象加载文件并搜索它但我不知道如何从诸如许可方的段落和协议的限制中提取信息。这些不是哈希,而只是长期合同。即使我要搜索“许可方”,它也会多次出现在文档中。文档甚至不是一致的文件格式。有些是PDF,有些是文本,有些是html,我甚至看到过一些与pdf中的扫描图像一样糟糕。
我的老板一直在推动我参与这个项目,但我感觉好像没有选择。我主要做网络和移动,所以大数据真的不是我强大的领域。这听起来有可能在合理的时间内完成吗? (我们正在谈论至少1000份文件)。我一直在用Java工作。
答案 0 :(得分:2)
我会尽力为您提供一些信息,因为这不是我的专业领域。我会高度考虑编写一个标识您正在处理的文件类型的脚本,然后调用适当的解析方法来处理您要查找的内容。
由于你正在处理大数据,python可能非常有用。 Javascript将是我的下一个选择。
如果您的整体代码是用Java编写的,那么无论您选择哪一个,它都应该非常便携和灵活。使用正则表达式或特定的字符串搜索将是一种很好的方法来解决这个问题;
如果您只关注Licensor后跟一个名称,您可以识别该特定实例的格式,并使用您创建的正则表达式搜索类似的内容。这可以推断到其他搜索实例。
要从图片中获取文字,请尝试使用此页面上的API:
对于PDF中的文字:
https://www.idrsolutions.com/how-to-search-a-pdf-file-for-text/
此外,PDF只是文本,因此您应该能够使用正则表达式搜索它。这将是我的攻击方法,或者可能使用string.split()并创建一个可以追加的字符串缓冲区。
适用于HTML doc的文字:
这是一个很酷的HTML解析器库:http://jericho.htmlparser.net/docs/index.html
一种教授如何删除HTML标记并获得好处的资源:http://www.rgagnon.com/javadetails/java-0424.html
如果您还有其他需要,请与我联系。我会尽力找到它!
答案 1 :(得分:1)
Apache tika可以从几乎任何常用的文件格式中提取纯文本。
但是根据您描述的情况,您仍然需要像“自然语言识别”一样分析文本。那是一个领域;尽管已经取得了一些的进步(通过专门的研究团队,花了很多人年!);计算机仍然失败非常糟糕(甚至人类也会失败,有时候)。
根据您提到的文件数量(1000个),雇用临时工并让他们按人脑力量进行分类/标记。它会更便宜,你的错误分类会更少。
答案 2 :(得分:0)
您可以使用tika进行文本提取。如果存在固定模式,则可以使用regex或xpath查询提取信息。其他解决方案是使用Solr,如video所示。您不需要solr,但要观看视频以了解相关信息。