2016-11-22 34 views
3

我想培养几个神经网络(使用tensorflow)信息提取,以便能够从发票中提取语义信息。经过一长串的阅读后,我想出了这个:机器学习 - 从一个文档

  • 使用word2vec生成字嵌入(更多的语料在下面)。
  • 订阅,因为这是紧靠在一起共享相似的语义矢量word2vec输出到一个CNN。

所以我上面描述的非常高层次的方法似乎对我来说很好。如果出现任何错误,我很乐意为您解决问题。

一对夫妇的,我有疑虑:

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

任何帮助/洞察力表示赞赏。

跟进到@瓦希·艾哈迈德的问题: 我试图理解语义信息有关的发票是最终能够提取值超出它的原因。所以,举例来说,如果我提出一个看不见的发票到我的神经网络中它会找到发票的号码(无论其标签被称为),并提取其价值。

+0

投票关闭这个问题,因为它太宽泛是没有意义的。我的问题的主题是特定的:从作为发票的文档中提取信息。我提出了我的想法,我需要验证和/或不同的角度,因此我的职位在这里。 – abstractpaper

+0

你可以检查以下讨论:http://stackoverflow.com/questions/40752242/machine-learning-information-extraction-from-a-document希望这会有所帮助.. – sansingh

+0

@sansingh这是我的问题链接 – abstractpaper

回答

3
  1. 如果你有发票的大数据集,它的更好,你使用它。数据集对词嵌入结构有一定的影响。为了构建语料库,可以去掉公共停止词(如,在等),然后使用每个字的TF-IDF重量他们供给到skip-gramCBOW或模型之前表示一个文件。您也可以使用one-hot encoding作为tf-idf权重的替代选项。你也可以考虑简单的语言模型(使用bigram或trigram),因为你有一个非常特定的领域可以使用。这会让你的模型更简单!

  2. 你的第二个问题是,我不清楚!通常的数值是由一些标签更换,过程中信息提取任务预处理步骤说NUM。但是,SyntaxNet实际上是用于依赖关系解析。既然您的最终目标是从发票中提取语义,为什么您需要语法信息?它会帮助你完成这项任务吗?如果您有大型数据集,则可以为特定目标域生成字典。但是,这取决于你将如何使用您没有在您的文章提到所提取的语义信息!

这是我个人的意见(目标不是批评你)的在使用字嵌入或基于神经网络模型的到处是不可行的。基于字嵌入或基于神经网络的方法在繁重的计算复杂性的回报中提供良好的性能。因此,如果您可以通过一个简单高效的模型来实现您的目标,那么为什么您更喜欢复杂且计算成本高昂的模型?你必须对你选择的模型有很好的推理。仅仅使用模型并不是一个明智的决定,因为这个模型很受欢迎并被广泛使用。

+0

感谢您的回答'wasi',非常有帮助。关于第二点,所以我所解释的所有内容都旨在从不可见的发票(或可能更改)中提取信息。因此,如果我的NN了解“发票号码”的外观,我们向其提供一个新的看不见的发票,它会检测到“发票号”部分及其值,这是我试图理解语义的原因的发票。 – abstractpaper

2

我假设这是发票的直接提取问题。你提出了一种比可能需要的更复杂的解决方案 - 我真的不知道它是如何工作的,但我什么都不知道。让我们退后一步,并开始简单:

1)至少有一个您希望处理的每种发票类型的例子,并用xml标签来标记,这些标签反映了目标提取过程,例如, “订单号:12445”。如果需要或后期处理,XML或其他解析器可以稍后获取评估步骤。

2)想想最简单的方式来提取信息 - 我建议你从正则表达式匹配开始。

3)如果正则表达式匹配不足,那么您可能需要一些有监督的机器学习。这将能够获得更多不同的短语,并且可以以非常高的精度执行并且为正确的短语回忆。请参阅http://alias-i.com/lingpipe/demos/tutorial/ne/read-me.html了解一些方法。

4)如果您需要的不仅仅是词组匹配 - 例如,部件号和部件数量,那么您可能需要使用分类器来判断并发是否合法。

希望有所帮助。

布雷克