如何遍历NLTK树对象?

2023-12-19

给定一个括号内的解析,我可以将其转换为 NLTK 中的 Tree 对象,如下所示:

>>> from nltk.tree import Tree
>>> s = '(ROOT (S (NP (NNP Europe)) (VP (VBZ is) (PP (IN in) (NP (DT the) (JJ same) (NNS trends)))) (. .)))'
>>> Tree.fromstring(s)
Tree('ROOT', [Tree('S', [Tree('NP', [Tree('NNP', ['Europe'])]), Tree('VP', [Tree('VBZ', ['is']), Tree('PP', [Tree('IN', ['in']), Tree('NP', [Tree('DT', ['the']), Tree('JJ', ['same']), Tree('NNS', ['trends'])])])]), Tree('.', ['.'])])])

但是当我尝试遍历它时,我只能访问最顶层的树:

>>> for i in Tree.fromstring(s):
...     print i
... 
(S
  (NP (NNP Europe))
  (VP (VBZ is) (PP (IN in) (NP (DT the) (JJ same) (NNS trends))))
  (. .))
>>> for i in Tree.fromstring(s):
...     print i, i.label()
... 
(S
  (NP (NNP Europe))
  (VP (VBZ is) (PP (IN in) (NP (DT the) (JJ same) (NNS trends))))
  (. .)) S
>>> 

我可以深入一层,如下所示:

>>> for i in Tree.fromstring(s):
...     print i.subtrees()
... 
<generator object subtrees at 0x7f1eb1571410>
>>> for i in Tree.fromstring(s):
...     for j in i.subtrees():
...             print j
... 
(S
  (NP (NNP Europe))
  (VP (VBZ is) (PP (IN in) (NP (DT the) (JJ same) (NNS trends))))
  (. .))
(NP (NNP Europe))
(NNP Europe)
(VP (VBZ is) (PP (IN in) (NP (DT the) (JJ same) (NNS trends))))
(VBZ is)
(PP (IN in) (NP (DT the) (JJ same) (NNS trends)))
(IN in)
(NP (DT the) (JJ same) (NNS trends))
(DT the)
(JJ same)
(NNS trends)
(. .)

但是有没有一种方法可以深度遍历所有子树呢?

在 NLTK 中应该如何遍历一棵树?

如何遍历NLTK中的所有子树?


也许我忽略了一些事情,但这就是你所追求的吗?

import nltk
s = '(ROOT (S (NP (NNP Europe)) (VP (VBZ is) (PP (IN in) (NP (DT the) (JJ same) (NNS trends)))) (. .)))'
tree = nltk.tree.Tree.fromstring(s)
def traverse_tree(tree):
    # print("tree:", tree)
    for subtree in tree:
        if type(subtree) == nltk.tree.Tree:
            traverse_tree(subtree)
traverse_tree(tree)

它深度优先遍历你的树。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何遍历NLTK树对象? 的相关文章

  • 是否有一个实用程序可以在给定 ANTLR 语法的情况下生成匹配的字符串?

    我有一个 ANTLR 语法 我想模 糊我的解析器 您是否正在寻找 CFG 语法的生成 IE 语法接受的字符串的生成 这可能是检查语法正确性的好主意 但请记住 可接受的字符串集很可能是无限的 任何真正严重的错误应该已经在语法规范中显而易见 并
  • 使用 js-xlsx 解析 Excel 工作表

    我正在尝试解析用户指定的目录中的所有 Excel 文件 但js xlsx我正在使用的库似乎需要手动导航 var url test files test xlsx lt Located in the project directory var
  • 图中的后边

    I m having a hard time understanding Tarjan s algorithm for articulation points I m currently following this tutorial he
  • 如何提取句子中的主语及其各自的从属短语?

    我正在尝试在句子中进行主题提取 以便我能够根据主题获得情感 我在用nltk在 python2 7 中用于此目的 以下面的句子为例 Donald Trump is the worst president of USA but Hillary
  • 使用 FoldLine 解析多个块

    对于这个简化的问题 我试图解析一个如下所示的输入 foo bar baz quux woo hoo xyzzy glulx into foo bar baz quux woo hoo xyzzy glulx 我尝试过的代码如下 import
  • 旧版本的 spaCy 在尝试安装模型时抛出“KeyError: 'package'”错误

    我在 Ubuntu 14 04 4 LTS x64 上使用 spaCy 1 6 0 和 python3 5 为了安装 spaCy 的英文版本 我尝试运行 这给了我错误消息 ubun ner 3 NeuroNER master src pyt
  • python 3 argparse 调用函数

    我想在 python3 中创建一个类似命令行 类似 shell 的界面 Argparse 似乎负责解析和显示帮助 错误消息 根据argparse 的 python3 文档 https docs python org 3 5 library
  • 用于(联合国)结构化文本文档的词法分析器/解析器[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有很多脚本解析器和词法分析器 即结构化计算机语言 但我正在寻找一个可以将 几乎 非结构化文本文档分成更
  • 为正则表达式编写解析器

    即使经过多年的编程 我很羞愧地说我从未真正完全掌握正则表达式 一般来说 当问题需要正则表达式时 我通常可以 在一堆引用语法之后 想出一个合适的正则表达式 但我发现自己越来越频繁地使用这种技术 所以 自学并理解正则表达式properly 我决
  • Magento - 将特定父类别的子类别列为链接

    我是 php 的初学者 并且一直试图将一个父类别的子类别作为链接调用 我得到了这个 它调出了 getName 但 getUrl 根本没有返回任何 URL 输出代码只是 li a href name of sub a li
  • Java 库有 parseInt、parseLong、parseDouble 等接受默认值并且不抛出异常吗?

    我喜欢中的建议java中的String到Int 可能是坏数据 需要避免异常 https stackoverflow com questions 174502 string to int in java likely bad data nee
  • 如何在 R 中将字符串解析为层次结构或树

    有没有办法将表示组的字符串解析为 R 中的层次结构 假设我的小组结构如下 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 3 1 1 3 1 1 1 3 2 1 1 3 3 1 2 1 2 1 1 2 1 1 1 2 1 2 1
  • 使用 NLTK 在 Python 中获取大量名词(或形容词);或 Python Mad Libs

    Like 这个问题 https stackoverflow com questions 7439555 noun adjective etc word lists or dictionaries common words 我有兴趣按词性获取
  • .Net 中是否有与 HTML 等效的 XmlReader?

    我用过Html敏捷包 http html agility pack net z codeplex过去在 Net 中解析 HTML 但我不喜欢它只使用 DOM 模型 在大型文档和 或具有大量嵌套的文档上 可能会遇到堆栈溢出或内存不足异常 另外
  • 除非 POS 显式,否则 WordNetLemmatizer 不会返回正确的引理 - Python NLTK

    我正在对 Ted 数据集成绩单进行词形还原 我注意到一些奇怪的事情 并非所有单词都被词形还原 要说的是 selected gt select 哪个是对的 然而 involved gt involve and horsing gt horse
  • SQL Server OPENJSON读取嵌套json

    我有一些想要在 SQL Server 2016 中解析的 json 有一个项目 gt 结构 gt 属性的层次结构 我想编写一个解析整个层次结构的查询 但我不想通过索引号指定任何元素 即我不想做这样的事情 openjson json 0 or
  • PHP DOM - 剥离 span 标签,保留其内容

    我希望采用如下标记 span class test Some text that is strong bolded strong and contains a a href link a span 并在 PHP 中找到剥离跨度的最佳方法 剩
  • LL(1) 解析器中 FIRST 和 FOLLOW 集的用途?

    谁能向我解释一下 LL 1 语法中如何使用 FIRST 和 FOLLOW 我知道它们用于语法表构建 但我不明白如何使用 在 LL 1 解析器中 解析器的工作方式是维护一个工作空间 该工作空间最初播种到开始符号 后跟字符串结束标记 通常表示为
  • C# 是否有像 Java 那样的字符串分词器?

    我正在做简单的字符串输入解析 我需要一个字符串标记器 我是 C 新手 但已经编写过 Java 程序 因此 C 应该有一个字符串标记生成器似乎很自然 可以 它在哪里 我该如何使用它 你可以使用String Split 方法 http msdn
  • 应用对数来导航树

    我曾经知道一种使用对数从树的一片叶子移动到树的下一个 有序 叶子的方法 我认为它涉及获取 当前 叶子的位置值 排名 并将其用作从根向下到新目标叶子的新遍历的种子 一直使用对数函数测试来确定是否沿着右或左节点向下到达叶子 我已经不记得如何运用

随机推荐

  • 如何使用 gradle 使用平台密钥签署 Android 应用程序?

    我看到了几个类似的问题 例如 Android 构建平台源代码后 如何使用平台密钥签署任意APK https stackoverflow com questions 4247818 android after building platfor
  • Redis作为数据库

    我想使用Redis作为数据库 而不是缓存 根据我 有限 的理解 Redis 是一个内存数据存储 使用 Redis 有哪些风险 如何减轻这些风险 您可以通过多种不同方式将 Redis 用作权威存储 Turn on AOF 仅追加文件存储 请参
  • 使用 Amazon SES 的 Codeigniter SMTP 电子邮件

    我想昨天亚马逊宣布了对 SES 简单电子邮件服务 的 SMTP 支持 我尝试使用 Codeigniter 发送 SMTP 电子邮件 但没有成功 我有一个经过验证的发件人 一切看起来都很好 this gt load gt library em
  • 查找从开始日期到年底的每个星期五

    所以我又带着另一个令人困惑的日期时间问题回来了 在 C 中 我如何返回从开始日期 DateTime Now 到今年年底 例如 今天是 19 号星期五 它将返回 26 2 9 16 23 30 7 等 这有效吗 static IEnumera
  • 如何用 Dotrine 保存图像

    我想在我的文章实体中保留图像 Doctrine2 可以做到这一点吗 我该怎么做呢 此致 博多 使用带有 File 类型的 ODM 设置非常简单 对于 ORM 实体 我会考虑创建一个像这样的列 注意 使用此链接将 blob 类型添加到 Doc
  • 使用 multipart/form-data 和 JSON 进行 Curl 发布

    有没有办法使用curl来做multipart form data发布并指定数据是application json 它不一定是卷曲的 这就是我使用的 效果很好 curl v H Content Type multipart form data
  • 使用纱线工作区在 npm 上创建可用的库...

    我正在寻找有关我编码的模式的反馈一边修修补补 Context 我正在为我的公司创建一个包 该包将公开发布 DX 开发人员体验 对我们来说是最重要的 为此我选择了开发中的最新趋势 Typescript esm 等 我想提出多个模块并使导入易于
  • 无向图中,最简单的环必须有3个节点?

    我正在尝试写一个关于循环和无向图的证明 但我对某些事情感到困惑 如果我的图只有 2 个顶点和一条连接它们的边 那不是循环 不是吗 因此 我需要至少 3 个顶点 其中 2 个顶点与其中一个节点之间有 2 个连接 另外两个顶点之间有一个连接 以
  • Java程序使用javascript读取html页面并保存其内容

    我想使用javascript提取html内容 从网站中提取用户的评论 在chrome中另存为 Inspect Element 我试试这个 Java 程序读取 html 页面并将其 HTML 代码保存在文本文件中 https stackove
  • 这是 C# 中将分隔字符串转换为 int 数组的最佳方法吗?

    给出以下字符串 string str 1 2 3 这是否是将其转换为最佳扩展int array static class StringExtensions public static int ToIntArray this string s
  • 使用python查找CSV文件每列的最小值

    我创建了一个程序 可以查找 CSV 文件每一行的最小值 现在我想对每一列执行相同的操作 但我无法这样做 任何建议将不胜感激 谢谢 Import and convert csv import csv data with open file r
  • Java HashMap 中的冲突解决

    Java HashMap uses put插入K V对的方法HashMap 可以说我用过put方法和现在HashMap
  • 在cloudfoundry上发布项目时出现错误java.io.FileNotFoundException(log4j日志文件)

    我计划将 Web 应用程序与 mysql 服务一起迁移到 Cloud Foundry 但我遇到了以下错误 它与当地环境配合良好 日志文件也会生成 下面是错误日志 Jan 5 2013 7 35 59 AM org cloudfoundry
  • X-Forwarded-Proto 和 Flask

    我有完全相同的问题描述这个问题和答案 https stackoverflow com questions 19840051 mutating request base url in flask 这个问题的答案是一个很好的解决方法 但我不明白
  • 用c++做一个定时器?

    我正在用 C 开发一个简单的游戏 一种追逐点风格的游戏 你必须单击显示屏上的一个绘制的圆圈 然后每次单击都会跳到另一个随机位置 但我想让游戏在 60 后结束几秒钟左右 将分数写入文本文件 然后在启动程序时从文本文件中读取信息并将信息存储到数
  • 使用默认分隔符与用户定义分隔符分割字符串

    我尝试了一个使用字符串分割的简单示例 但出现了一些意外的行为 这是示例代码 def split string source splitlist for delim in splitlist source source replace del
  • 防止渐变叠加滚动

    我试图在滚动 div 的底部放置一个小渐变 我的解决方案基于已接受的答案这个所以线程 https stackoverflow com questions 9204450 how to apply a fade away effect not
  • Facebook Messenger API“无法验证 URL”

    我正在尝试设置 Facebook Messenger API 但在尝试添加 WebHook 时收到此错误 无法验证该 URL 回调验证失败 出现以下错误 curl errno 60 curl error SSL证书问题 无法获取本地颁发者证
  • init] 自动引用计数

    我知道我应该使用 ObjectClass tmpObject ObjectClass alloc init realObject tmpObject tmpObject release 初始化realObject where realObj
  • 如何遍历NLTK树对象?

    给定一个括号内的解析 我可以将其转换为 NLTK 中的 Tree 对象 如下所示 gt gt gt from nltk tree import Tree gt gt gt s ROOT S NP NNP Europe VP VBZ is P