我有一个句子列表,我想分析每个句子并确定该句子中的语义角色。我该怎么做?
我遇到了NLTK模块中的PropBankCorpusReader,它将语义标签信息添加到Penn Treebank。此外,我对互联网的研究表明,该模块用于执行语义角色标记。
然而,我无法找到一个小HOWTO来帮助我理解我们如何利用PropBankCorpusReader在仲裁文本上执行SRL。
因此有人可以指出使用PropbankCorpusReader
在仲裁句子上执行SRL的例子吗?
答案 0 :(得分:11)
SRL根本不是一个微不足道的问题,并不是真正可以使用nltk
开箱即用的东西。
您可以将SRL的任务细分为3个单独的步骤:
此问题的大多数当前方法使用有监督的机器学习,其中分类器将训练Propbank或FrameNet语句的子集,然后测试剩余的子集以测量其准确性。研究人员倾向于专注于调整特征和算法,以及修改上述步骤是按顺序还是同时完成,以及按照什么顺序进行。
您可能想要查看的一些文件是:
马尔可夫逻辑方法很有前途,但根据我自己的经验,它会遇到严重的可扩展性问题(我只使用Alchemy,尽管Alchemy Lite看起来很有趣)。使用nltk Propbank数据实现某种分类器并不是一项繁重的工作,而且Python中已存在一些off the shelf classifiers。
来自爱丁堡大学的编辑 This assignment提供了一些如何解析Propbank数据的示例,part of a school project我确实实现了一个完整的Propbank功能解析器,尽管这些功能专门用于Markov Logic Networks的Meza-Ruiz和Riedel(2009)。
答案 1 :(得分:5)
查看这个全新的python库(取决于NLTK)https://pypi.python.org/pypi/nlpnet/ ...它确实是POS和SRL。
答案 2 :(得分:5)
我建议 PractNLPTools ,它有许多不错的工具,包括 语义角色标记 。
我正在为一个工作项目审问它,看起来它可以完成工作。
PractnlpTools: https://pypi.python.org/pypi/practnlptools/1.0
GitHub支持网站: https://github.com/biplab-iitb/practNLPTools
答案 3 :(得分:0)
到目前为止,最简单的选择可能是https://demo.allennlp.org/semantic-role-labeling。由于采用了底层的转换器架构,因此需要超过1 GB的内存。