我想根据PDF文档的结构进行聚类,而不仅仅是文本内容。
仅使用文本的方法的主要问题是,它会丢失文档是否具有PDF表单结构的信息,或者它只是一个普通文档,还是包含图片?
对于我们进一步的处理,这些信息是最重要的。我的主要目标是能够根据文档的主要结构对其进行分类,而不仅仅是文本内容。
要分类的文档存储在SQL数据库中,格式为byte[] (varbinary),所以我的想法是使用这些原始数据进行分类,而无需先进行文本转换。
因为当我查看这些数据的十六进制输出时,我可以看到重复的结构,这些结构似乎与我想分离的不同文档类别相似。你可以在我的附件截图中看到一些相似的字节模式作为第一印象。
所以我的想法是训练一个K-Means模型,例如使用十六进制输出字符串。下一步我会尝试用肘部法找到最佳的聚类数量,应该在350到500之间。
PDF数据的大小在20 kByte到5 MB之间,大多数在150 kBytes左右。为了训练模型,我有超过30,000份文档。
当我研究这个问题时,结果很少。我只找到了这篇文章,这让我对解决我的任务的最佳方法感到不确定。https://www.ibm.com/support/pages/clustering-binary-data-k-means-should-be-avoided
我的问题是:
- K-Means是最适合我的目标的算法吗?
- 你会推荐哪种方法?
- 如何规范化或转换数据以获得最佳结果?
回答:
正如评论中的Ian所说,使用原始数据似乎是个坏主意。
经过进一步的研究,我找到了最好的解决方案,即首先读取PDF文件的结构,例如使用这样的方法:
https://github.com/Uzi-Granot/PdfFileAnaylyzer
我用这些信息规范化并聚类了数据,取得了不错的结果。