From 855872f872196f28fde4a0a2e09e01829b4d26b2 Mon Sep 17 00:00:00 2001 From: Matthew Honnibal Date: Tue, 14 Nov 2017 23:36:46 +0100 Subject: [PATCH] Remove state hashing --- spacy/syntax/_beam_utils.pyx | 5 +---- spacy/syntax/nn_parser.pyx | 18 +++++++++--------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/spacy/syntax/_beam_utils.pyx b/spacy/syntax/_beam_utils.pyx index b26d13e4d..20cbbbaaa 100644 --- a/spacy/syntax/_beam_utils.pyx +++ b/spacy/syntax/_beam_utils.pyx @@ -81,10 +81,7 @@ cdef class ParserBeam(object): self._set_scores(beam, scores[i]) if self.golds is not None: self._set_costs(beam, self.golds[i], follow_gold=follow_gold) - if follow_gold: - beam.advance(_transition_state, _hash_state, self.moves.c) - else: - beam.advance(_transition_state, _hash_state, self.moves.c) + beam.advance(_transition_state, NULL, self.moves.c) beam.check_done(_check_final_state, NULL) # This handles the non-monotonic stuff for the parser. if beam.is_done and self.golds is not None: diff --git a/spacy/syntax/nn_parser.pyx b/spacy/syntax/nn_parser.pyx index 3ed59d3e8..49ffe2062 100644 --- a/spacy/syntax/nn_parser.pyx +++ b/spacy/syntax/nn_parser.pyx @@ -526,7 +526,7 @@ cdef class Parser: for k in range(nr_class): beam.scores[i][k] = c_scores[j * scores.shape[1] + k] j += 1 - beam.advance(_transition_state, _hash_state, self.moves.c) + beam.advance(_transition_state, NULL, self.moves.c) beam.check_done(_check_final_state, NULL) beams.append(beam) tokvecs = self.model[0].ops.unflatten(tokvecs, @@ -998,16 +998,16 @@ def _cleanup(Beam beam): state = addr del state seen.add(addr) + else: + print(i, addr) + print(seen) + raise Exception addr = beam._states[i].content if addr not in seen: state = addr del state seen.add(addr) - - -cdef hash_t _hash_state(void* _state, void* _) except 0: - state = _state - if state.is_final(): - return 1 - else: - return state.hash() + else: + print(i, addr) + print(seen) + raise Exception