INNER CODE UNIT · Python
obs_broadcast
taishi-i/nagisa · nagisa/model.py:131
obs_broadcast = dy.concatenate([dy.pick(obs, next_tag)] * self.dim_output)
next_tag_expr = for_expr + self.trans[next_tag] + obs_broadcast
alphas_t.append(log_sum_exp(next_tag_expr))
for_expr = dy.concatenate(alphas_t)
terminal_expr = for_expr + self.trans[self.sp_e]
alpha = log_sum_exp(terminal_expr)
return alpha
def score_sentence(self, observations, tags):
if not len(observations) == len(tags):
raise AssertionError("len(observations) != len(tags)")
score_seq = [0]
score = dy.scalarInput(0)
tags = [self.sp_s] + tags
for i, obs in enumerate(observations):
score = score + dy.pick(self.trans[tags[i+1]], tags[i]) + dy.pick(obs, tags[i+1])