使用NLTK的语义角色标记

2024-05-16 23:03:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个句子列表,我想分析每一个句子,确定句子中的语义角色。我该怎么做?

我在NLTK模块中遇到了PropBankCorpusReader,它向Penn Treebank添加语义标记信息。此外,我在互联网上的研究表明,该模块用于执行语义角色标记。

然而,我无法找到一个小方法来帮助我理解如何利用PropBankCorpusReader对任意文本执行SRL。

因此,有人能指出使用PropbankCorpusReader对任意语句执行SRL的例子吗?


Tags: 模块方法标记信息角色利用列表语义
3条回答

我建议使用PractNLPTools,它有很多不错的工具,包括语义角色标记。

我正在询问它的一个工作项目,现在看来它会完成的工作。

实用工具: https://pypi.python.org/pypi/practnlptools/1.0

GitHub支持站点: https://github.com/biplab-iitb/practNLPTools

查看这个新的python库(取决于NLTK)https://pypi.python.org/pypi/nlpnet/。。。它做POS和SRL。

SRL根本不是一个小问题,也不是真正可以使用nltk开箱即用的东西。

您可以将SRL的任务分解为3个单独的步骤:

  1. 识别谓词。
  2. 对谓词执行词义消歧,以确定它接受哪些语义参数。
  3. 识别句子中的语义参数。

目前解决这一问题的大多数方法都使用有监督的机器学习,在这种学习中,分类器将对一个子集的Propbank或FrameNet语句进行训练,然后对剩余的子集进行测试,以测量其准确性。研究人员倾向于关注调整特性和算法,以及修改上述步骤是按顺序还是同时完成,以及按什么顺序完成。

您可能需要查看的文件有:

马尔可夫逻辑方法很有前途,但根据我自己的经验,它遇到了严重的可伸缩性问题(我只使用过Alchemy,尽管Alchemy Lite看起来很有趣)。使用nltk Propbank数据实现某种类型的分类器并不需要太多工作,而且Python中已经存在一些off the shelf classifiers

来自爱丁堡大学的编辑:This assignment给出了一些如何解析Propbank数据的例子,并且part of a school project我确实实现了一个完整的Propbank特性解析器,尽管这些特性是专门针对Meza Ruiz和Riedel(2009)风格的Markov逻辑网络使用的。

相关问题 更多 >