- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一组解析树,它们在这个 ascii 表示中,其中缩进决定结构(并且右括号是隐式的)。我需要将它们转换为 s 表达式,以便括号确定结构。这有点像 python 的显着空白 vs. 大括号。输入格式是树的垂直表示,如下所示:
STA:fcl
=S:np
==DN:pron-dem("tia" <*> <Dem> <Du> <dem> DET P NOM) Tiaj
==H:n("akuzo" <act> <sd> P NOM) akuzoj
=fA:adv("certe") certe
=P:v-fin("dauxri" <va+TEMP> <mv> FUT VFIN) dauxros
.
应该变成:
(STA:fcl (S:np (DN:pron-dem Tiaj) (H:n akuzoj)) (fA:adv certe) (P:v-fin dauxros) .)
我的代码几乎可以做到,但不完全是。某处总是缺少 parent ;它变得非常令人沮丧。我应该使用合适的解析器,也许是 CFG?当前(困惑的)代码位于 http://github.com/andreasvc/eodop/blob/master/arbobanko.py
最佳答案
仅关注您在此 Q 中给出的示例,以及 Q 的关于将垂直树转换为 S 表达式的标题,例如...:
import re
import sys
samp='''S
=NP
==(DT +def) the
== (N +ani) man
=VP
==V walks'''.splitlines()
relinelev = re.compile(r'(=*)(.*)')
reclean = re.compile(r'\s*\((\S+)[^)]*\)')
def clean(line):
return reclean.sub(r'\1', line)
def reparse(tree=samp):
stack = [-1]
for line in tree:
equals, rest = relinelev.match(line).groups()
linelev = len(equals)
while linelev < stack[-1]:
sys.stdout.softspace = False
print ')',
curlev = stack.pop()
if linelev == stack[-1]:
sys.stdout.softspace = False
print ')',
else:
stack.append(linelev)
print '(%s' % clean(rest),
while stack[-1] >= 0:
sys.stdout.softspace = False
print ')',
stack.pop()
print
reparse()
似乎工作,并输出
(S (NP (DT the) (N man)) (VP (V walks)))
我知道你正在尝试做比我在这里做的更多的“清理”,但这可以集中在 clean
函数中,将 reparse
留给处理Q的标题。如果您不想边走边打印,而是将结果作为字符串返回,那么变化当然很小:
def reparse(tree=samp):
stack = [-1]
result = []
for line in tree:
equals, rest = relinelev.match(line).groups()
linelev = len(equals)
while linelev < stack[-1]:
result[-1] += ')'
curlev = stack.pop()
if linelev == stack[-1]:
result[-1] += ')'
else:
stack.append(linelev)
result.append('(%s' % clean(rest))
while stack[-1] >= 0:
result[-1] += ')'
stack.pop()
return ' '.join(result)
关于python - 将垂直树的树库转换为 s 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2815020/
Google 有一个用 C 语言编写的 KD 树库:Here 据我所知,您使用其中一个函数将注释插入树中,然后查询树中最近的邻居。它返回一个指向新数组的指针(据我所知)。 这是我的目标: 我有一个 3
我只是想知道是否有任何好的完整的。不可变的我的意思是那些总是不可变的。如果库包含 freeze() 或等效方法以使某些值实例不可变,那么请在回复中注明这一点。我最感兴趣的是在对所述节点进行更改时返回新
我需要一个可以用 Java 计算最小斯坦纳树的有向图库。对我来说,任何启发式都很好(就运行时间和接近最佳树的程度而言)。有谁知道 Github 或其他地方有什么流行的软件包吗? 最佳答案 您可以使用作
我正在寻找一个 PHP 库,它可以从具有左右 ID 的数据库(或值数组)创建树结构。对于获取值时的结果,我只是在寻找一个数组,这样我就可以创建任何类型的 View 。对于添加和删除,如果库能做到这一切
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 2 年前。
我有一个 CoNLL-X 格式树库和每个句子对应的二叉解析树,我想将它转换成 PTB 格式。是否有任何转换器或任何人都可以阐明 PTB 格式? 最佳答案 为了将依赖关系(以 CoNLL-X 格式表示)
有人知道支持流程图(树)但不使用任何浏览器插件(如 Flash)来实现这一点的图表库(SVG 也可以)吗? 我找到了 RaphaelGWT (http://code.google.com/p/raph
我是一名优秀的程序员,十分优秀!