我有一个句子列表,我想分析每个句子并确定该句子中的语义角色.我怎么做?
我在NLTK模块中遇到了PropBankCorpusReader,它将语义标签信息添加到Penn Treebank.此外,我对互联网的研究表明,该模块用于执行语义角色标记.
然而,我无法找到一个小HOWTO来帮助我理解我们如何利用PropBankCorpusReader在仲裁文本上执行SRL.
因此有人可以指出PropbankCorpusReader
在仲裁句子上使用SRL的例子吗?
SRL根本不是一个微不足道的问题,并不是真正可以开箱即用的东西nltk
.
您可以将SRL的任务分解为3个单独的步骤:
识别谓词.
对谓词执行单词意义消歧,以确定它接受哪些语义参数.
识别句子中的语义参数.
目前针对该问题的大多数方法都使用有监督的机器学习,其中分类器将训练Propbank或FrameNet语句的子集,然后测试剩余的子集以测量其准确性.研究人员倾向于专注于调整功能和算法,以及修改上述步骤是按顺序还是同时完成,以及按什么顺序进行.
您可能想要查看的一些文件是:
Simmons(1973) - 经典的SRL纸.
Gildea和Jurafsky(2002) - 提供了一组用于分类的简单特征.
薛和帕尔默(2004) - 更深入地研究有用的功能
Meza-Ruiz和Riedel(2009) - 一种使用Markov Logic的有趣方法.
Markov Logic方法很有前景,但根据我自己的经验,它会遇到严重的可扩展性问题(我只使用Alchemy,尽管Alchemy Lite看起来很有趣).使用nltk Propbank数据实现某种分类器并不是一项繁重的工作,并且Python中已经存在一些现成的分类器.
编辑: 这个来自爱丁堡大学的作业提供了一些如何解析Propbank数据的例子,以及我所做的学校项目的一部分实现了一个完整的Propbank特征解析器,尽管这些特征专门用于Markov Logic Networks的风格. Meza-Ruiz和Riedel(2009年).
看看这个新鲜的新python库(取决于NLTK)https://pypi.python.org/pypi/nlpnet/ ...它可以进行POS和SRL。
我建议PractNLPTools有很多不错的工具,包括语义角色标签。
我现在正在为一个工作项目审问它,看来它将完成工作。
PractnlpTools:https ://pypi.python.org/pypi/practnlptools/1.0
GitHub支持站点:https : //github.com/biplab-iitb/practNLPTools