机器学习 - 从文档中提取信息

Azi*_*ari 6 nlp machine-learning tensorflow

我正在尝试训练一些神经网络(使用tensorflow)以便能够从发票中提取语义信息.经过一长串的阅读,我想出了这个:

  • 使用word2vec生成单词嵌入(更多内容在下面的语料库中).
  • 将输出馈送word2vec到CNN,因为靠近的矢量具有相似的语义含义.

所以我上面描述的非常高级的方法对我来说似乎很好.如果出现任何问题,我很乐意纠正它.

我有几个问题:

  1. 语料库选择.是否足以使用维基百科的通用语料库?或者我应该使用专门的语料库来发票?如果是后者,我该如何生成这个语料库?我确实有一个可以使用的大发票数据集.
  2. 信息提取.让我们说上述所有工作都很好,我能够从新的看不见的发票中理解语义信息.如何提取某些信息?例如,假设我们引入了一个新发票order number: 12345,假设order number被理解为发票号(或者位于相同附近的任何向量order number),我该如何提取价值12345?我正在研究的一个领域是SyntaxNet,它可以在这里提供帮助.

任何帮助/见解表示赞赏.

跟进@ wasi-ahmad的问题:我试图理解发票的语义信息的原因是最终能够从中提取价值.因此,例如,如果我向神经网络提供看不见的发票,它会找到发票的编号(无论其标签是什么)并提取其值.

Was*_*mad 4

  1. 如果您有大量发票数据集,最好使用它。数据集对词嵌入的构建有一些明显的影响。要构建语料库,您可以删除常见的停用词(例如 a、the 等),然后使用每个单词的 tf-idf 权重来表示文档,然后再将它们输入到 askip-gramCBOW模型。您还可以用作one-hot encodingtf-idf 权重的替代品。您还可以考虑简单的语言模型(使用二元组或三元组),因为您有一个非常具体的领域需要处理。这将使您的模型更加简单!

  2. 你的第二个问题我不清楚!通常数值会被某些标签替换,例如NUM在信息提取任务的预处理步骤中。然而,SyntaxNet实际上是用于依存分析。既然您的最终目标是从发票中提取语义,为什么需要语法信息?它会帮助你完成这项任务吗?如果您有一个大型数据集,您可以为特定目标域生成字典。但这取决于您将如何使用您在帖子中未提及的提取的语义信息!

这是我个人的观点(不是为了批评你),在任何地方使用词嵌入或基于神经网络的模型是不可行的。基于词嵌入或神经网络的方法提供了良好的性能,但计算复杂度很高。因此,如果您可以使用简单而高效的模型来满足您的目的,为什么您会更喜欢复杂且计算成本高昂的模型呢?您必须对您选择的模型有很好的推理。仅仅因为某个模型流行并且被广泛使用就使用该模型并不是一个明智的决定。