我正在将合同公告解析为列以捕获公司,奖励金额,授予项目的描述等。A raw example can be found here.
我使用正则表达式编写了一个脚本来执行此操作,但随着时间的推移,我不得不考虑regexp方法作为长期解决方案的条件。我一直在读NLTK,似乎有两种方法可以使用NLTK来解决我的问题:
在我手动标记公告之前,我想衡量一下
答案 0 :(得分:1)
尝试使用POS标签获取公司名称和项目描述将是一件令人头疼的事。绝对是NER路线。
Spacy有一个默认的英语NER模型,可以识别组织;它可能会或可能不会对你有用,但它值得一试。
您期望什么样的输出"项目的描述被授予"?通常NER会找到几个令牌长的项目,但我可以想象一个描述是几个句子。
对于标记,请注意您不必使用文本文件。 Brat是一个用于直观标记文本的开源工具。
你需要多少个例子取决于你的输入,但想到大约一百个作为绝对最小值并从那里积累起来。
希望有所帮助!
关于项目描述,感谢你的例子我现在有了更好的主意。看起来,赠款第一句中的语言在引入项目描述方面非常规律:XYZ Corp has been awarded $XXX for [description here]
。
我从未见过像这样的任意短语使用的典型NER方法。如果您已经有标签,那么尝试和了解预测的方式并没有什么害处,但如果您遇到问题,还有另一种方法。
鉴于语言的规律性,解析器可能在此处有效。您可以在线试用Stanford Parser here。使用它的输出("解析树"),你可以取出动词为" award"的VP,然后在IN为&#的地方拔出PP 34;对于",这应该是你正在寻找的。 (大写字母为Penn Treebank Tags; VP表示"动词短语",PP表示"介词短语",IN表示"介词。)