将树结构转换为有效的json

treetojson的Python项目详细描述


treetojson

https://travis-ci.org/saadsahibjan/treetojson.svg?branch=master

摘要

treetojson有助于将给定的树结构转换为 有效的json。使用这个树结构可以很容易地解释为 有效的json。进一步说明应如何给出输入,以及 输出在“基本用法”下解释。这是纯python代码 只有一个依赖项NLTK。这个罐头 也可与NLTK RegexpParser一起使用。

这主要是由于在 词性标记是自然语言的一部分 处理。当使用树结构的特定标记创建树结构时 使用nltk模块,树结构无法映射 因此,使用现有库对JSON对象进行处理。问题 由于标签是固定的,因此存在重复的“密钥”。 对于语言。因为这样的问题,最初发展到 解决了这个问题,后来决定作为一个开放的 源python模块。

进一步的treetojson维护提供的顺序。它不会把 命令。给出的输出将是一个可读的句子,如 树人。treetojson给出的输出可以是对http的响应 请求,并可以在 前端。

安装

treetojson模块是published on the Python Package Index,因此您可以安装 它使用pipeasy_install

pip install treetojson

easy_install treetojson

那应该就是你要去的地方了。

基本用法

例1

当包含单词和适当标记的列表作为 跟随:

>>> import treetojson
>>> sentence = [('Everyone', 'NN'), ('knows', 'VBZ'), ('an', 'DT'), ('Elephant', 'NN'), ('is', 'VBZ'), ('larger', 'JJR'),
 ('than', 'IN'), ('a', 'DT'), ('Dog', 'NN')]
>>> print treetojson.get_json(data=sentence)
{u'SENTENCE': [{u'NN': u'Everyone'}, {u'VBZ': u'knows'}, {u'DT': u'an'}, {u'NN': u'Elephant'}, {u'VBZ': u'is'},
{u'JJR': u'larger'}, {u'IN': u'than'}, {u'DT': u'a'}, {u'NN': u'Dog'}]}

例2

当包含带有适当标记和语法的单词的列表 提供:

>>> import treetojson
>>> sentence = [('Everyone', 'NN'), ('knows', 'VBZ'), ('an', 'DT'), ('Elephant', 'NN'), ('is', 'VBZ'), ('larger', 'JJR'),
('than', 'IN'), ('a', 'DT'), ('Dog', 'NN')]
>>> grammar = """
      NP:   {<PRP>?<JJ.*>*<NN.*>+}
      CP:   {<JJR|JJS>}
      VERB: {<VB.*>}
      THAN: {<IN>}
      COMP: {<DT>?<NP><RB>?<VERB><DT>?<CP><THAN><DT>?<NP>}
    """
>>> print treetojson.get_json(data=sentence, grammar=grammar)
{u'SENTENCE': [{u'NP': [{u'NN': u'Everyone'}]}, {u'VERB': [{u'VBZ': u'knows'}]}, {u'COMP': [{u'DT': u'an'},
{u'NP': [{u'NN': u'Elephant'}]}, {u'VERB': [{u'VBZ': u'is'}]}, {u'CP': [{u'JJR': u'larger'}]},
{u'THAN': [{u'IN': u'than'}]}, {u'DT': u'a'}, {u'NP': [{u'NN': u'Dog'}]}]}]}

例3

当单独提供文字和标签或标签时:

>>> import treetojson
>>> words = ['Everyone', 'knows', 'an', 'Elephant', 'is', 'larger', 'than', 'a', 'Dog']
>>> labels = ['NN', 'VBZ', 'DT', 'NN', 'VBZ', 'JJR', 'IN', 'DT', 'NN']
>>> print treetojson.get_json(words=words, label=labels)
{u'SENTENCE': [{u'NN': u'Everyone'}, {u'VBZ': u'knows'}, {u'DT': u'an'}, {u'NN': u'Elephant'}, {u'VBZ': u'is'},
{u'JJR': u'larger'}, {u'IN': u'than'}, {u'DT': u'a'}, {u'NN': u'Dog'}]}

例4

当单词和标签或标签与语法分开时 提供:

>>> import treetojson
>>> words = ['Everyone', 'knows', 'an', 'Elephant', 'is', 'larger', 'than', 'a', 'Dog']
>>> labels = ['NN', 'VBZ', 'DT', 'NN', 'VBZ', 'JJR', 'IN', 'DT', 'NN']
>>> grammar = """
      NP:   {<PRP>?<JJ.*>*<NN.*>+}
      CP:   {<JJR|JJS>}
      VERB: {<VB.*>}
      THAN: {<IN>}
      COMP: {<DT>?<NP><RB>?<VERB><DT>?<CP><THAN><DT>?<NP>}
    """
>>> print treetojson.get_json(words=words, label=labels, grammar=grammar)
{u'SENTENCE': [{u'NP': [{u'NN': u'Everyone'}]}, {u'VERB': [{u'VBZ': u'knows'}]}, {u'COMP': [{u'DT': u'an'},
{u'NP': [{u'NN': u'Elephant'}]}, {u'VERB': [{u'VBZ': u'is'}]}, {u'CP': [{u'JJR': u'larger'}]},
{u'THAN': [{u'IN': u'than'}]}, {u'DT': u'a'}, {u'NP': [{u'NN': u'Dog'}]}]}]}

调试

您可以启用调试信息。

>>> import treetojson
>>> treetojson.set_debug()
Debug mode is on. Events are logged at: treetojson.log

若要关闭调试模式,请使用的参数调用set_debugFalse

>>> treetojson.set_debug(False)
Debug mode is off.

如果在代码中遇到任何错误,请在github上提交问题: https://github.com/saadsahibjan/treetojson/issues

贡献指南

使用中提供的指南 CONTRIBUTING.md

许可证

MIT

作者

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Synth xml中的java设置JLabel图标   java全屏Flash应用程序测试需要外部戳   评测配置文件Java CPU负载   java如何显示布尔值?   java共享库与微服务?   使用bash脚本重定向java输出(liquibase)   java如何进行结构化日志记录?   属性JSF2的java绑定属性<h:dataTable>   java Android Restlet包装崩溃   java如果在一个事务中我们只在一个数据源上写,是否可以避免2PC或手动处理提交?(J2CA0030E)   java从哪里获得openCV的jar?   java正在尝试更新SQL数据库条目,但收到SQL语法错误。我怎么知道这里出了什么问题?   java如何在Firebase数据库值中添加空格   为什么在java中读取datainputstream时会出现EOF异常?   java STDERR将每个stacktrace行作为错误日志条目写入WildFly服务器。日志   java通过socket编写一个没有'ImageIO'的映像   java为什么JBoss会在出现错误时破坏连接池?   javafxjava如何查找当月的第一次登录   java这个Android项目给了我一个崩溃的机会,我正试图让这个项目有一个来自编辑文本的数字,并在文本视图中得到它两次