【问题标题】:NLTK extracting terms of chunker parse treeNLTK 提取词块分析树的术语
【发布时间】:2012-09-06 07:45:05
【问题描述】:

约翰·爱德华·格雷开始跑步,因为他知道自己肥胖

正在那个糟糕的歌手

打那个

我想从一个句子中提取有趣的术语。我目前使用 POS 标记来识别每个实体的语法类型。然后我将每个标记更新为一个计数器(名词、动词和形容词的权重不同)。

我现在希望为此使用分块器。我认为解析树的叶节点包含所有有趣的单词和短语。如何从分块器输出中提取术语?

【问题讨论】:

  • 分块不产生解析树。如果“chunker”是指“parser”,那么叶节点通常只包含单词,而不是多单词短语。
  • 我选择了错误的术语。但后来我看到 “块结构是包含标记和块的树” 以及表示它的“浅树结构”的东西。提取短语实体的组件的正确名称是什么?
  • 这是一个大块头。它产生了一个非常简单的两层结构,令牌和块;称树在数学上是正确的,但没有实际价值。如果你把它当成一棵树,那么叶子就不是有趣的元素,而是更高层次的元素。
  • 你想要动词“running”,而不是“listening”?
  • 对您而言,是什么让一个词“有趣”?

标签: python nlp nltk


【解决方案1】:

在语言学中,“有趣的词”称为open class words。 而且您所指的任务并不是真正的分块/解析任务。您正在寻找某种标记器/注释器/标注器来标记每个单词以查看它是否“有趣”。

序列标签

如果您将任务作为序列标记任务来处理,那么句子 John Edward Grey started running now that he knows he is fat 将被标记为:

[('John','B'),('Edward','I'),('Grey','I'),('started','O'),('running','B'),
('now','O'),('that','O'),('he','O'),('knows','O'),('he','O'),
('is','O'),('fat','B')]
  • 所以任何标记为B 的东西都意味着你的“有趣”块的开始,并且

  • 带有O 标记的后续单词将是“有趣”块的结尾或

  • 它还可以以后续的B 结尾,以标记前一个“有趣”块的结尾和新“有趣”块的开始。

什么有趣或不有趣?

实际上什么有趣或不有趣取决于你的任务最终目标是什么,对我来说,我会说started running 是一个“有趣”的块,因为它开始修改不定式含义或running 给它是begin action 模式。

封闭类与开放类单词

如果您知道什么是不感兴趣的单词,那么我建议您构建一个字典,然后运行序列标记脚本来检测那些不在密切类单词字典中的单词。

机器学习方法

另一种方法是执行机器学习分类任务,在该任务中,您已经预先注释了样本数据中哪些是有趣的,哪些是不感兴趣的。然后识别一些分类特征并运行分类以自动使用B,I,O标签标记数据。

【讨论】:

    猜你喜欢
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 2013-01-20
    相关资源
    最近更新 更多