将树结构转换为有效的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第三方库


热门话题
java JPA。Eclipselink没有为mySQL提供密码,但它应该提供   我的Servlet和@FormDataParam存在java问题   java将什么作为上下文参数传递到文件I/O方法中?   如果两个值相同,java无法找到其中一个单选按钮   java在变量和方法名中使用下划线   JavaSpringMVC单线程安全?   klazz类的java Arraylist(反射Api)   java如何在数字字符串中查找最频繁的数字?   JavaAPI设计:使数据更易于阅读与强制更多API调用   JavaHadoopMapReduceforGoogleWebGraph   java无法启动gauge API:Runner意外退出   java如何在bluemix上使用ibm工作负载调度器?   拉取一年中某一周特定日期的所有日期   java为什么是我的角节点。js应用程序将图像上传到S3� 邮递员正确上传时的符号?   在不使用任何第三方jar的情况下将文件从本地传输到linux系统(java代码)   java将现有文件夹复制到Eclipse工作区中新创建的项目中   Java中的regex RegExp帮助   当使用“系统”外观时,Java组合框setSelectedItem会出现故障   JavaASM:在类的方法中获取局部变量名和值