当前位置: 首页 > 面试题库 >

NLTK中没有pos_tag的ne_chunk

龚招
2023-03-14
问题内容

我正在尝试在nltk中使用ne_chunk和pos_tag对句子进行分块。

from nltk import tag
from nltk.tag import pos_tag
from nltk.tree import Tree
from nltk.chunk import ne_chunk

sentence = "Michael and John is reading a booklet in a library of Jakarta"
tagged_sent = pos_tag(sentence.split())

print_chunk = [chunk for chunk in ne_chunk(tagged_sent) if isinstance(chunk, Tree)]

print print_chunk

结果如下:

[Tree('GPE', [('Michael', 'NNP')]), Tree('PERSON', [('John', 'NNP')]), Tree('GPE', [('Jakarta', 'NNP')])]

我的问题是,是否可以不包括pos_tag(如上面的NNP)而仅包括Tree’GPE’,’PERSON’?“ GPE”是什么意思?

提前致谢


问题答案:

命名的实体分块器将为您提供包含分块和标签的树。您不能更改它,但是可以取出标签。从您的开始tagged_sent

chunks = nltk.ne_chunk(tagged_sent)
simple = []
for elt in chunks:
    if isinstance(elt, Tree):
        simple.append(Tree(elt.label(), [ word for word, tag in elt ]))
    else:
        simple.append( elt[0] )

如果只需要块,则忽略else:上面的子句。您可以修改代码以任意方式包装大块。我使用nltkTree将更改保持在最低限度。请注意,某些块包含多个单词(尝试在示例中添加“
New York”),因此,块的内容必须是列表,而不是单个元素。

PS。“
GPE”代表“地缘政治实体”(显然是一个大块的错误)。您可以在此处找到nltk书中的“常用标签”列表。



 类似资料:
  • 问题内容: 有这个: 并运行: 我得到: 这是不正确的。句子中的标签应为: 通过他们的在线工具测试得出相同的结果。,并且应该是形容词而不是名词。 问题答案: 简而言之 : NLTK并不完美。实际上,没有任何模型是完美的。 注意: 从NLTK版本3.1开始,默认功能不再是旧的MaxEnt English pickle。 现在它是 感知恶搞 从@ Honnibal的实现 ,见 还是更好,但并不完美:

  • 问题内容: 我需要在大型数据集上运行nltk.pos_tag,并且需要使其输出像斯坦福标记器提供的那样。 例如,在运行以下代码时,我有: 输出为:[[‘We’,’PRP’),(’are’,’VBP’),(’going’,’VBG’),(’out.Just’,’IN’),(’you ‘,’PRP’),(’and’,’CC’),(’me’,’PRP’),(’。’,’。’)] 在这种情况下,我需要像这样

  • NLTK 会被自然地看作是具有栈结构的一系列层,这些层构建于彼此基础之上。那些熟悉人工语言(比如 Python)的文法和解析的读者来说,理解自然语言模型中类似的 —— 但更深奥的 —— 层不会有太大困难。 尽管 NLTK 附带了很多已经预处理(通常是手工地)到不同程度的全集,但是概念上每一层都是依赖于相邻的更低层次的处理。首先是断词;然后是为单词加上 标签;然后将成组的单词解析为语法元素,比如名词

  • NLTK书中有几个单词计数的例子,但实际上它们不是单词计数,而是标记计数。例如,第1章“计算词汇”中说,下面给出了一个单词计数: 然而,它没有-它给出了一个单词和标点符号计数。你怎样才能得到一个真正的字数(忽略标点符号)? 同样,如何获得一个单词中的平均字符数?显而易见的答案是: 但是,这将关闭,因为: len(文本的字符串)是一个字符计数,包括空格 我是不是遗漏了什么?这一定是一个非常常见的NL

  • 问题内容: NLTK书中有几个字数示例,但实际上它们不是字数而是令牌数。例如,第1章“计数词汇”说以下内容给出了单词计数: 但是,事实并非如此-它给出了单词和标点计数。如何获得真实的字数(忽略标点符号)? 同样,如何获得一个单词的平均字符数?显而易见的答案是: 但是,这将因为以下原因而关闭: len(string_of_text)是一个字符数,包括空格 len(text)是令牌计数,不包括空格,但

  • 在本章中,我们将学习如何开始使用Natural Language Toolkit Package。 先决条件(Prerequisite) 如果我们想用自然语言处理来构建应用程序,那么上下文的变化会使其变得非常困难。 上下文因素影响机器如何理解特定句子。 因此,我们需要使用机器学习方法开发自然语言应用程序,以便机器也能理解人类理解上下文的方式。 要构建这样的应用程序,我们将使用名为NLTK(Natu