如何解决 StanfordCoreNLP 中的 "Tree not correctly binarized" 错误?

How may I resolve "Tree not correctly binarized" error in StanfordCoreNLP?

我在 运行 stanfordCoreNLP 获取如下情绪时遇到错误:我目前使用的是 4.0.0 版,请问您有什么建议吗?

SentimentCostAndGradient:警告:树未正确二值化:(ROOT (: --) (S (VB let) (SBARQ (NP's) (@SBARQ (ADVP just) (@SBARQ (VBP说)(SQ(S(VBG假设)(SBAR(NP你)(VP(@VP(@VP(VBP得到)(NP(JJ支持)( NN立法)))(NP(DT本)(NN年)))(PP(IN in)(NP(DT)(@NP(NNP Texas)(NN立法))))))(@SQ( ,) (@SQ(SBARQ(WHNP什么)(SQ(VBZ's)(NP(NP(DT)(@NP(NN时间)(NN线)))(PP(IN到) (S (VBG getting) (S (NP (DT an) (@NP (NNP AMI) (NN program))) (VP deployed)))))) (@SQ (, ,) (@SQ (@SQ (MD shall) (NP we)) (VP (@VP (@VP (@VP (VB say) (, ,)) (INTJ 对)) (, ,)) ( S (ADVP so) (VP (@VP (@VP (VBG starting) (PP (IN from) (NP middle))) (NP (DT this) (NN year))) (ADVP onwards) ))))))))))))(。?)) 线程“main”中的异常 java.lang.AssertionError:树未正确二值化 在 edu.stanford.nlp.sentiment.SentimentCostAndGradient.forwardPropagateTree(SentimentCostAndGradient.java:532) 在 edu.stanford.nlp.sentiment.SentimentCostAndGradient.forwardPropagateTree(SentimentCostAndGradient.java:512) 在 edu.stanford.nlp.pipeline.SentimentAnnotator.doOneSentence(SentimentAnnotator.java:115) 在 edu.stanford.nlp.pipeline.SentenceAnnotator.annotate(SentenceAnnotator.java:102) 在 edu.stanford.nlp.pipeline.AnnotationPipeline.annotate(AnnotationPipeline.java:76) 在 edu.stanford.nlp.pipeline.StanfordCoreNLP.annotate(StanfordCoreNLP.java:640) 在 edu.stanford.nlp.pipeline.StanfordCoreNLP.annotate(StanfordCoreNLP.java:650) 在 edu.stanford.nlp.pipeline.StanfordCoreNLP.processFiles(StanfordCoreNLP.java:1245) 在 edu.stanford.nlp.pipeline.StanfordCoreNLP.processFiles(StanfordCoreNLP.java:1079) 在 edu.stanford.nlp.pipeline.StanfordCoreNLP.run(StanfordCoreNLP.java:1362) 在 edu.stanford.nlp.pipeline.StanfordCoreNLP.main(StanfordCoreNLP.java:1408)

我输入到StanfordCoreNLP模块的文本:

你能听到我说话吗?如果可以的话,请问几个后续问题。首先,让我在这里谈谈信贷方面和股权融资的一些细节。你如何看待你的[某种]债务指标,它们今天在哪里?显然,这些机构已经发表了一些评论。但是——你需要去哪里?我知道你说过你今天不会具体说明所需的总股本数量,而只是想确保我们了解你今天的状况以及你需要从信用的角度去往哪里。我假设你想维持你目前各自的评级。知道了,好的。然后让我回到这种扭曲,据我所知,关于 50 到 150 兆瓦——或者更确切地说,采购之外的好处,也许是更好的说法,对吧?所以你 运行 RFP。你已经宣布了那些结果。但是,在此处的幻灯片中,您谈到了购买,这似乎是一个额外的量,如果我——如果您愿意的话。你能谈谈吗?然后在这里明确一点,很明显,你授予了——或者你打算在这里授予 PPA。这会是一个潜在的 build-own-t运行sfer 情况吗?实际上,甚至可能——让我扩大范围,最初授予的 RFP 容量是否可能是一种构建-拥有-t运行sfer 的情况?如果你不介意提醒我的话,时间线是什么时候?就这些而言——我知道你今年对何时完成这些合同有大致的描述。但是具体围绕 build-own-t运行sfer、BOT 的时间线可能是其中的一部分。明白了,优秀。然后抱歉,最后一个关于 AMI 工作的问题。那里的时间表,你是怎么想的 - 假设你今年在德克萨斯州立法机构获得支持性立法,那么部署 AMI 计划的时间表是什么,我们应该说,从今年年中开始向前?在 2019 年的指导方针中,假设关于德克萨斯州以及 t运行 任务和分配的利率减免水平是多少?好的。因为看起来基于你归档这些东西的方式,似乎 t运行smission 应该在夏季高峰期可用,而分配增加可能不会在夏季高峰期出现。不,我当然很感激并理解这一点。但在 1600 万美元的申请中,假设这些美元总额已获批准,根据时间线,现实中有多少落入 19 年与 20 年?好的。此外,就股权而言,就您的指导而言,2019 年指导的增量股权方面的股份数量假设是多少?此外,您已经提交并等待批准请求。高达2亿美元。我想,你能在时间方面帮助我们吗 - 在几年内或者你是如何考虑的?如果您能够与一些 RFP 获胜者达成协议,如 Julien 所描述的那样,这种灵活性是否也考虑了为股权提供资金的能力?到目前为止,您能给我们介绍一下您在第一季度天气中看到的情况吗?好的。你能告诉我们你到目前为止在 AMI 方面从德克萨斯州立法机构看到了什么吗?好的。至于 - 你让我们了解了 DCRF 今年的情况。您认为这些数字是基准年度数字的样子吗?还是您远远落后于这些可能比正常前进略高一点?所以也许像一半?假设您的客户和负载增长继续以相似的速度增长,那可能意味着大约一半是前进的速度。是的。我的理解是,立法机构正在努力授权 PUCT 能够使用预测的测试年份来处理费率案例,以帮助减轻监管滞后。我只是想知道你是什么样的人——你对这种努力和状态的了解以及你认为的前景是什么。是的。我想我指的是一代车手,可能更多是在更广泛的背景下。但是你 - 如果它现在特别关注一代车手,我猜你是什么 - 你现在怎么看?对不起,伙计们,在这里跟进。但我只是想澄清一下,你如何看待你在 19 年指南中所获得的 ROE?再一次,我知道你在谈论标准化天气,但我只想了解赚取的 ROE 预期以及这些预期是如何建立的。如果我们可以深入研究的话,我真的主要是在分发方面比 t运行smission 方面要求更多。知道了。但反映在2个辖区分布端的平均值略低于9%。

下面是我运行的模型,我的是4.1.0版本:

java -mx3g -cp "/home/cxiao/release_date/stanford-corenlp-4.1.0/*" edu.stanford.nlp.pipeline.StanfordCoreNLP -props.q1

对于 props.q1:

annotators = tokenize, ssplit, pos, parse, sentiment
outputFormat = JSON 
outputDirectory = /path_to/standard_input/fail/
timeout = 500000
output.includeText = False
parse.model = edu/stanford/nlp/models/srparser/englishSR.ser.gz
continueOnAnnotateError = True
filelist = /path_to/stanford-corenlp-4.1.0/q/flist1.lst

对于文件列表:

/pathto/failed_file.txt

这是 sr 解析器中一个非常隐蔽的错误,由最近添加的训练集中的一小部分训练树打破了所有树都以 S、FRAG 等结尾然后转到 ROOT 的假设引起的作为一元过渡。这里产生的错误只是导致问题的句子的一部分,并且 sr 解析器试图将该句子分成两部分,有两个单独的 ROOT。事实上,问题比这更奇怪,因为这只会在其中一个 ROOT 有 3 个或更多块时导致下游出现错误。

无论如何,这个错误可以通过强制 ROOT 节点只出现在树的最顶端来修复。该修复程序位于源代码树的这个分支中:

https://github.com/stanfordnlp/CoreNLP/tree/fix_sr_binary

如果你在那里没有看到分支,这意味着它已经被合并到

https://github.com/stanfordnlp/CoreNLP/tree/dev

计划在接下来的几周内 post 发布新版本,届时您可以简单地使用新版本而不是从源代码构建来修复此错误。

编辑:您特别想要此更改

https://github.com/stanfordnlp/CoreNLP/commit/10881ca4727b6d114e5157d2aa547bceac18d294

过去的任何内容都无法加载旧模型,因为 readObject 中需要 hack 才能加载旧模型,我们将使用更新的转换规则重做模型