如何从合同中提取“买方”和“卖方”

时间:2017-05-19 02:20:51

标签: nlp

我正在学习自然语言处理,我想知道是否有人可以指出我正确的方向。 说我有一堆合同,他们有类似的东西:

Joe's Farm, hereafter known as the seller, 
and Bob's supermarket, hereafter known as the buyer, blah blah..

我希望能够在这句话中确定哪一方是买方和卖方。根据我的阅读,理论上应该可以:

1. Give the AI a lot of sample sentences and tell it "this is the buyer/seller".
2. After training, it should be able to analyze a new sentence.

我尝试了一些实体提取(将句子标记化并识别党名),但我不知道如何告诉它“这个派对是买方”。 一个解决方法是识别句子的片段并搜索其中是否包含“买家”一词......这在大多数情况下可能有效,但我想尝试以“AI”方式执行此操作。

有人能指出我研究的正确方向吗?

2 个答案:

答案 0 :(得分:1)

对我来说看起来像coreference resolution问题。

Example

Stanford CoreNLP可能是一个很好的起点。它带有确定性,统计学和神经系统,以及预先训练的模型。

答案 1 :(得分:1)

如何解决这个问题将取决于几个因素,最重要的是:

  • 所有合约都具有相同的格式吗?
  • 在您的示例中指定卖家买家后,他们的真实姓名是否会再次出现在文字中?或者简称为卖家买家

考虑到这一点,让我们假设合同有各种格式,卖方和买方的正确/真实姓名在合同引言的某个地方只出现一次。第二个假设简化了问题(在现实世界的合同中更可能出现这种情况)。

我会分三步解决问题:

  1. 教授程序如何识别合同的引入(即合同中所说的谁是谁;有点像你的例句。)
  2. 将介绍分为两部分:定义卖方的部分/句子以及定义买方的部分/句子。
  3. 最后,查看卖家部分,找出卖家是谁,买家部分,找出买家是谁。
  4. 要解决第一步,需要一个小的训练数据集。如果不可用,您可以手动识别多个合同的介绍并将其用作培训数据集。从这里开始,朴素贝叶斯可能是识别合同的一部分是否是介绍的最简单方法(您可以将合同随机分成多个块)。朴素贝叶斯只依赖于令牌的频率(不是排序)。您可以阅读更多here

    要解决第二步,我几乎会重复第一步所做的事情:使用数据集将介绍部分“归类”为卖家部分买方部分。但是,这一步可能需要比第一步更准确。所以,我建议做一个 n-gram语言模型。这看起来是令牌的频率,也是排序和继承的频率。您可以阅读更多here。对于n-gram,你需要介于两者之间:不要太短(1克=朴素贝叶斯)而不是太长(> 6克)以避免卖家之间的重叠买方句子。

    对于第3步和最后一步,我想不出一种直截了当的方式,但我会首先删除停用词(即频繁的英语单词)。然后,我会尝试在目标字词(买方卖方)附近找到难得的字词。由于我们假设真实姓名只在合同中出现一次,这可能是一个帮助您识别它们的规则。

    根据训练数据集的大小/可用性,您可以尝试许多其他事情,但这应该可以帮助您。