Improving representation speed ~5%

pull/1/head
Ozbolt Menegatti 5 years ago
parent 5f226d0cd4
commit 460a55cb6c

@ -881,6 +881,7 @@ class WordMsdRenderer:
self.frequent_words = {} self.frequent_words = {}
self.lemma_msd = {} self.lemma_msd = {}
self.lemma_features = lemma_features self.lemma_features = lemma_features
self.memoized_msd_merges = {}
def add_words(self, words): def add_words(self, words):
self.all_words.extend(words) self.all_words.extend(words)
@ -918,8 +919,11 @@ class WordMsdRenderer:
l1 if l1 != "-" else l2 for l1, l2 in zip(lf[cmsd[0]], cmsd) l1 if l1 != "-" else l2 for l1, l2 in zip(lf[cmsd[0]], cmsd)
) )
@staticmethod def merge_msd(self, common_msd, new_msd):
def merge_msd(common_msd, new_msd): key = (common_msd, new_msd)
if key in self.memoized_msd_merges:
return self.memoized_msd_merges[key]
def merge_letter(l1, l2): def merge_letter(l1, l2):
if l1 == "*": if l1 == "*":
return l2 return l2
@ -928,7 +932,9 @@ class WordMsdRenderer:
else: else:
return l1 return l1
return "".join(merge_letter(l1, l2) for l1, l2 in zip(common_msd, new_msd)) value = "".join(merge_letter(l1, l2) for l1, l2 in zip(common_msd, new_msd))
self.memoized_msd_merges[key] = value
return value
def render(self, lemma, msd): def render(self, lemma, msd):
if lemma in self.rendered_words: if lemma in self.rendered_words:

Loading…
Cancel
Save