将树结构转换为有效的json
treetojson的Python项目详细描述
摘要
treetojson有助于将给定的树结构转换为 有效的json。使用这个树结构可以很容易地解释为 有效的json。进一步说明应如何给出输入,以及 输出在“基本用法”下解释。这是纯python代码 只有一个依赖项NLTK。这个罐头 也可与NLTK RegexpParser一起使用。
这主要是由于在 词性标记是自然语言的一部分 处理。当使用树结构的特定标记创建树结构时 使用nltk模块,树结构无法映射 因此,使用现有库对JSON对象进行处理。问题 由于标签是固定的,因此存在重复的“密钥”。 对于语言。因为这样的问题,最初发展到 解决了这个问题,后来决定作为一个开放的 源python模块。
进一步的treetojson维护提供的顺序。它不会把 命令。给出的输出将是一个可读的句子,如 树人。treetojson给出的输出可以是对http的响应 请求,并可以在 前端。
安装
treetojson模块是published on the Python Package Index,因此您可以安装 它使用pip或easy_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_debug。 False:
>>> treetojson.set_debug(False) Debug mode is off.
如果在代码中遇到任何错误,请在github上提交问题: https://github.com/saadsahibjan/treetojson/issues
贡献指南
使用中提供的指南 CONTRIBUTING.md