基于NLTK的分块关系抽取

2024-06-16 16:45:59 发布

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

我试图弄清楚如何使用NLTK的级联chunker,如Chapter 7 of the NLTK book。不幸的是,在执行非琐碎的分块度量时,我遇到了一些问题。在

让我们从这个短语开始:

"adventure movies between 2000 and 2015 featuring performances by daniel craig"

当我使用以下语法时,我能够找到所有相关的NPs:

grammar = "NP: {<DT>?<JJ>*<NN.*>+}"

但是,我不知道如何用NLTK构建嵌套结构。这本书给出了以下格式,但显然有几点遗漏(例如,一个人实际上如何指定多个规则?)公司名称:

grammar = r"""
  NP: {<DT|JJ|NN.*>+}          # Chunk sequences of DT, JJ, NN
  PP: {<IN><NP>}               # Chunk prepositions followed by NP
  VP: {<VB.*><NP|PP|CLAUSE>+$} # Chunk verbs and their arguments
  CLAUSE: {<NP><VP>}           # Chunk NP, VP
  """

就我而言,我想做如下几点:

^{pr2}$

假设我想为我的任务使用级联分块器,我需要使用什么语法?另外,在使用chunker时,我是否可以指定特定的词(例如“directed”或“acted”)?在


Tags: andofbynpdt语法nn分块
1条回答
网友
1楼 · 发布于 2024-06-16 16:45:59

我不能对关系提取部分发表评论,尤其是因为你没有详细说明你想做什么以及你拥有什么样的数据。所以这是一个相当片面的答案。在

a.) How does cascading chunking work in NLTK b.) Is it possible to treat the chunker like a context-free grammar, and if so, how?

正如我在NLTK书中对"Building nested structure with cascaded chunkers"部分的理解,您可以将其与上下文无关的语法一起使用,但是您必须反复应用它来获得递归结构。chunker是平坦的,但是可以在chunks上添加chunk。在

c.) How can I use chunking to perform relation extraction?

我真的说不出来,不管怎样,正如我说的,你没有给出任何细节;但是如果你在处理真实的文本,我的理解是,手工编写的规则集对于任何任何任务都是无用的,除非你有一个庞大的团队和大量的时间。看看NLTK附带的概率工具。如果你有一个带注释的训练语料库,这会容易得多。在

不管怎样,还有几条关于RegexpParser的注释。在

  1. 您将在http://www.nltk.org/howto/chunk.html上找到更多的使用示例。(不幸的是,这不是一个真正的操作指南,而是一个测试套件。)

  2. 根据this,可以指定多个展开规则,如下所示:

    patterns = """NP: {<DT|PP\$>?<JJ>*<NN>}
        {<NNP>+}
        {<NN>+}
    """
    

    我应该补充一点,语法可以有多个规则,并且具有相同的左侧。这样可以增加分组相关规则等的灵活性。

相关问题 更多 >