mirror of https://github.com/explosion/spaCy.git
* Ensure Morphology can be pickled, to address Issue #125.
This commit is contained in:
parent
dfe0ad51ff
commit
5ca57bd859
|
@ -25,6 +25,7 @@ cdef class Morphology:
|
|||
cdef readonly Pool mem
|
||||
cdef readonly StringStore strings
|
||||
cdef public object lemmatizer
|
||||
cdef readonly object tag_map
|
||||
cdef public object n_tags
|
||||
cdef public object reverse_index
|
||||
cdef public object tag_names
|
||||
|
|
|
@ -14,6 +14,7 @@ cdef class Morphology:
|
|||
def __init__(self, StringStore string_store, tag_map, lemmatizer):
|
||||
self.mem = Pool()
|
||||
self.strings = string_store
|
||||
self.tag_map = tag_map
|
||||
self.lemmatizer = lemmatizer
|
||||
self.n_tags = len(tag_map) + 1
|
||||
self.tag_names = tuple(sorted(tag_map.keys()))
|
||||
|
@ -28,6 +29,9 @@ cdef class Morphology:
|
|||
self.reverse_index[self.rich_tags[i].name] = i
|
||||
self._cache = PreshMapArray(self.n_tags)
|
||||
|
||||
def __reduce__(self):
|
||||
return (Morphology, (self.strings, self.tag_map, self.lemmatizer), None, None)
|
||||
|
||||
cdef int assign_tag(self, TokenC* token, tag) except -1:
|
||||
cdef int tag_id
|
||||
if isinstance(tag, basestring):
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
import pytest
|
||||
|
||||
import pickle
|
||||
import StringIO
|
||||
|
||||
|
||||
from spacy.morphology import Morphology
|
||||
from spacy.lemmatizer import Lemmatizer
|
||||
from spacy.strings import StringStore
|
||||
|
||||
|
||||
def test_pickle():
|
||||
morphology = Morphology(StringStore(), {}, Lemmatizer({}, {}, {}))
|
||||
|
||||
file_ = StringIO.StringIO()
|
||||
pickle.dump(morphology, file_)
|
||||
|
Loading…
Reference in New Issue