yhcc
yhcc
所有的获得paper结果的超参数应该都是直接hard encode在脚本里了,应该直接运行就可以获得论文报道的性能了。
Thanks for your attention. I do not see other limitations. The tokenization part may need some adaptation, mainly for the add_prefix_space. https://github.com/yhcc/CNN_Nested_NER/blob/91ec7ec42ddf4ca70bb0be6c89d2e915a07a5501/data/ner_pipe.py#L12-L28 Actually you can just delete this line https://github.com/yhcc/CNN_Nested_NER/blob/91ec7ec42ddf4ca70bb0be6c89d2e915a07a5501/train.py#L103-L105...
你说的问题确实是存在的,但大部分模型应该都是一致的,这里面最大的困难可能是任务评测的需要导致了有一些评测会看起来挺吃力的(比如有的需要给定一些token,而有的不需要;另外就是例如一些评测ALSC的,但实际是从AESC中抽取出来的结果)。这里面应该最大的出入地方应该是那个eos不是copy的,而是直接生成的,这个地方是由于画图的时候copy的话画图比较容易,但实际实现的话直接生成会更容易;另外还有一个比较小的出入是,在wang数据集中,任务的task_id是会重复一下,这个算是一个empirically效果更好的实现吧。
> 请问这里计算多次指的是什么呢,以AE为例,这是指的BART可能生成重复的aspects?按理说重复的aspects只能算预测对1个。但是在metric中这些重复的aspects都会被当做tp计算? 这里的注释是错误的注释,按照代码就是重复的不会计算多次,因为重复了key就一样,就只会保留一个。
> 还有一点疑惑,我发现从paper里的Figure3的示意图里来看,做AE的时候,应该是只输出aspect的start和end index。但是我发现在wang这个目录下,只有OESpanMetric和 AESCSpanMetric两个metric。在AESCSpanMetric用aesc的输出同时计算了AE和AESC两个任务的P,R,F1?所以请问是没有单独做AE任务吗 好像是的,应该是直接拿了AESC中的AE结果作为了AE任务的结果。
> 如果确实是这样操作的话,想请问一下为什么不单独做这些子任务呢?是不是多任务的方式以及直接通过aesc的结果得到ae,效果会好一些。期待您的回复 因为我们的目标是一个one-for-all,所以就希望不要分开他们。分开的话,结果也许还会高一些,因为我觉得这几个任务应该不太能够相互促进,反而是可能有一个错误传播的问题。
fastNLP里面有一个简单的方法来生成预测文件就是修改metric的逻辑,在evaluate()函数中存下每个batch的预测结果(例如append到metric的某个属性上),然后再在get_metric的时候写出到某个文件里,
(1)是因为那个FitlogCallback参数设置的时候没有设置需要记录loss,你可以查看一下那个参数,设置loss。 (2)best_metric不能在metric曲线上显示出来。
这里主要是预训练模型不太能接受word的编码,非法的预测实际上可以在decode的时候进行限制的。需要修改一下decode时候的beam search算法。
是的。