gri*_*ill 9 python named-entity-recognition chunking nltk
我试图弄清楚如何按照NLTK书的第7章使用NLTK的级联组块.不幸的是,我在执行非平凡的分块测量时遇到了一些问题.
让我们从这句话开始:
"adventure movies between 2000 and 2015 featuring performances by daniel craig"
当我使用以下语法时,我能够找到所有相关的NP:
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
"""
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我想做类似以下的事情:
grammar = r"""
MEDIA: {<DT>?<JJ>*<NN.*>+}
RELATION: {<V.*>}{<DT>?<JJ>*<NN.*>+}
ENTITY: {<NN.*>}
"""
Run Code Online (Sandbox Code Playgroud)
假设我想为我的任务使用级联的chunker,我需要使用什么语法?另外,在使用chunker时,我是否可以指定特定的单词(例如"定向"或"行动")?
我无法对关系提取部分发表评论,尤其是因为您没有提供有关您想要做什么以及您拥有什么类型的数据的任何详细信息。所以这是一个相当片面的答案。
a.) NLTK 中级联分块如何工作 b.) 是否可以将分块器视为上下文无关语法,如果可以,如何处理?
据我了解 NLTK 书中的“使用级联分块器构建嵌套结构”部分,您可以将其与上下文无关语法一起使用,但必须重复应用它才能获得递归结构。块是扁平的,但您可以在块上添加块。
c.) 如何使用分块来执行关系提取?
我真的无法谈论这一点,无论如何,正如我所说,你没有提供任何细节;但如果你处理的是真实的文本,我的理解是,除非你有一个大的团队和大量的时间,否则任何任务的手写规则集都是无用的。研究 NLTK 附带的概率工具。如果你有一个带注释的训练语料库,那就容易多了。
不管怎样,还有一些关于 RegexpParser 的评论。
您可以在http://www.nltk.org/howto/chunk.html上找到更多使用示例。(不幸的是,这不是真正的操作方法,而是测试套件。)
据此,您可以像这样指定多个扩展规则:
patterns = """NP: {<DT|PP\$>?<JJ>*<NN>}
{<NNP>+}
{<NN>+}
"""
Run Code Online (Sandbox Code Playgroud)
我应该补充一点,语法可以有多个具有相同左侧的规则。这应该会增加一些与相关规则分组等方面的灵活性。
| 归档时间: |
|
| 查看次数: |
1946 次 |
| 最近记录: |