我正在学习自然语言处理,我想知道是否有人可以指出我正确的方向。 说我有一堆合同,他们有类似的东西:
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”方式执行此操作。
有人能指出我研究的正确方向吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
如何解决这个问题将取决于几个因素,最重要的是:
考虑到这一点,让我们假设合同有各种格式,卖方和买方的正确/真实姓名在合同引言的某个地方只出现一次。第二个假设简化了问题(在现实世界的合同中更可能出现这种情况)。
我会分三步解决问题:
要解决第一步,需要一个小的训练数据集。如果不可用,您可以手动识别多个合同的介绍并将其用作培训数据集。从这里开始,朴素贝叶斯可能是识别合同的一部分是否是介绍的最简单方法(您可以将合同随机分成多个块)。朴素贝叶斯只依赖于令牌的频率(不是排序)。您可以阅读更多here。
要解决第二步,我几乎会重复第一步所做的事情:使用数据集将介绍部分“归类”为卖家部分和买方部分。但是,这一步可能需要比第一步更准确。所以,我建议做一个 n-gram语言模型。这看起来是令牌的频率,也是排序和继承的频率。您可以阅读更多here。对于n-gram,你需要介于两者之间:不要太短(1克=朴素贝叶斯)而不是太长(> 6克)以避免卖家之间的重叠买方句子。
对于第3步和最后一步,我想不出一种直截了当的方式,但我会首先删除停用词(即频繁的英语单词)。然后,我会尝试在目标字词(买方和卖方)附近找到难得的字词。由于我们假设真实姓名只在合同中出现一次,这可能是一个帮助您识别它们的规则。
根据训练数据集的大小/可用性,您可以尝试许多其他事情,但这应该可以帮助您。