mirror of https://github.com/explosion/spaCy.git
Fix order of actions when labels added to parser
When labels were added to the parser or NER, we weren't loading back the classes in the correct order. Re issue #3189
This commit is contained in:
parent
7ac0f9626c
commit
d74dbde828
|
@ -147,6 +147,8 @@ cdef class TransitionSystem:
|
|||
def initialize_actions(self, labels_by_action, min_freq=None):
|
||||
self.labels = {}
|
||||
self.n_moves = 0
|
||||
added_labels = []
|
||||
added_actions = {}
|
||||
for action, label_freqs in sorted(labels_by_action.items()):
|
||||
action = int(action)
|
||||
# Make sure we take a copy here, and that we get a Counter
|
||||
|
@ -157,6 +159,15 @@ cdef class TransitionSystem:
|
|||
sorted_labels.sort()
|
||||
sorted_labels.reverse()
|
||||
for freq, label_str in sorted_labels:
|
||||
if freq < 0:
|
||||
added_labels.append((freq, label_str))
|
||||
added_actions.setdefault(label_str, []).append(action)
|
||||
else:
|
||||
self.add_action(int(action), label_str)
|
||||
self.labels[action][label_str] = freq
|
||||
added_labels.sort(reverse=True)
|
||||
for freq, label_str in added_labels:
|
||||
for action in added_actions[label_str]:
|
||||
self.add_action(int(action), label_str)
|
||||
self.labels[action][label_str] = freq
|
||||
|
||||
|
|
Loading…
Reference in New Issue