zysszy / TreeGen

A Tree-Based Transformer Architecture for Code Generation. (AAAI'20)
MIT License
90 stars 27 forks source link

predict_HS-B.py 中的处理流程,和"J_*"形式的方法 的大致情况 #9

Open yueml opened 3 years ago

yueml commented 3 years ago

您好,再次感谢您贡献的代码,同时非常抱歉不得不又来打搅您。

我debug许久,但对predict_HS-B.py 中的处理流程仍然有些许( 其实是好多,(╥╯^╰╥) )疑惑。我选取下述问题,向您请教。

  1. JavaOut.gs、 JavaOut.step_list 代表的含义是什么?
  2. JavaOut 和 JavaOutNext分别代表什么?

另外,我发现predict_HS-B.py 建立ast的过程,和模型的复杂度相比,有过之而无不及,您能大概解释下其中的流程么,不胜感激!

zysszy commented 3 years ago

您好, 感谢关注~ 抱歉给您带来不便。

JavaOut.gs 代表Beam Search的步数。 JavaOut.step_list 我也不知道是什么了,感觉后面没有用上过。 JavaOut 代表的是现在所生成的代码及其状态。 JavaOutNext 代表的是基于 JavaOut 做一步Beam Search 之后所得的代码及其状态。

对于复杂度来说,是这样的,之前写了一个Java的框架,最初我在上面做了很多incremental的修改,然后迁移到了python。因为修改太多太复杂了,我怕出bug就没做优化(其实有巨多可以优化的地方),因而才有了现在这个复杂度。

主要的流程就是 建立一颗AST树(根据现有的 rule sequence 建立),然后 保留 Tree Path 信息, Traverse 信息, 图信息等信息就可以。

我不知道我回答清楚没,如果我没回答清楚,随时欢迎继续问我~

Zeyu