lixin4ever/BERT-E2E-ABSA

关于代码seq_util.py的几个疑问

LiuHongYi222 opened this issue · 3 comments

对于该代码的 17行是否应该改成
原始代码>> if cur_ts_tag == 'O' or cur_ts_tag == 'EQ':
新代码 assert cur_ts_tag != 'EQ' #(OT序列的话只有O,T-SENTIMENT 不会有EQ)
if cur_ts_tag == 'O' :

对于该代码的 114行是否应该这样考虑:
原始代码: if ts_tag == 'O' or ts_tag == 'EQ':
新代码:
if ts_tag == 'EQ': continue #(EQ是BERT的wordpiece出来的,应该不考虑到序列中,不应该用O代替)
if ts_tag == 'O' : 后续内容不变

以上是两个关于代码的小疑问,感谢作者解答。
祝好

抱歉我昨天没理解你的问题
首先,这里操作的tag都是word-level的tag,而不是subword-level的tag
Q1: 因为预测的时候词的tag可能是EQ,所以必须要考虑cur_ts_tag == 'EQ'的情况
Q2: 同Q1

您好,请问EQ代表什么呢?因为您在论文中只列出了B-{POS,NEG,NEU}, I-{POS,NEG,NEU}, E-{POS,NEG,NEU}, S-{POS,NEG,NEU} or O作为可能的标注。

抱歉我昨天没理解你的问题
首先,这里操作的tag都是word-level的tag,而不是subword-level的tag
Q1: 因为预测的时候词的tag可能是EQ,所以必须要考虑cur_ts_tag == 'EQ'的情况
Q2: 同Q1

EQ(equivalent)代表non-head subwords的tag,这里的head subword你可以理解为第一个subword