SpaCy 使用 Lemmatizer 作为独立组件
SpaCy use Lemmatizer as stand-alone component
我想将 SpaCy 的词形还原器用作独立组件(因为我有预先标记化的文本,我不想重新连接它和 运行 完整的管道,因为 SpaCy 很可能会标记化在某些情况下有所不同)。
我在包中找到了词形还原器,但不知何故我需要用规则加载词典来初始化这个词形还原器。
这些文件一定在英文或德文模型的某处吧?我在那里找不到它们。
from spacy.lemmatizer import Lemmatizer
where do the LEMMA_INDEX, etc. files are comming from?
lemmatizer = Lemmatizer(LEMMA_INDEX, LEMMA_EXC, LEMMA_RULES)
我在这里发现了一个类似的问题:
但是这个并没有完全回答如何从模型中获取这些字典文件。 spacy.lang.* 参数似乎不再存在于较新的版本中。
这是我提取的一段代码,它本身使用了 SpaCy 词形还原器。我不在我可以运行的地方,所以如果我犯了一个编辑错误,它可能会有一两个小错误。
请注意,一般来说,您需要知道单词的 upos
才能正确词形还原。此代码将 return 所有可能的引理,但我建议修改它以传递正确的 upos
为您的词。
class SpacyLemmatizer(object):
def __init__(self, smodel):
import spacy
self.lemmatizer = spacy.load(smodel).vocab.morphology.lemmatizer
# get the lemmas for every upos
def getLemmas(self, entry):
possible_lemmas = set()
for upos in ('NOUN', 'VERB', 'ADJ', 'ADV'):
lemmas = self.lemmatizer(entry, upos, morphology=None)
lemma = lemmas[0] # See morphology.pyx::lemmatize
possible_lemmas.add( lemma )
return possible_lemmas
我想将 SpaCy 的词形还原器用作独立组件(因为我有预先标记化的文本,我不想重新连接它和 运行 完整的管道,因为 SpaCy 很可能会标记化在某些情况下有所不同)。
我在包中找到了词形还原器,但不知何故我需要用规则加载词典来初始化这个词形还原器。 这些文件一定在英文或德文模型的某处吧?我在那里找不到它们。
from spacy.lemmatizer import Lemmatizer
where do the LEMMA_INDEX, etc. files are comming from?
lemmatizer = Lemmatizer(LEMMA_INDEX, LEMMA_EXC, LEMMA_RULES)
我在这里发现了一个类似的问题:
这是我提取的一段代码,它本身使用了 SpaCy 词形还原器。我不在我可以运行的地方,所以如果我犯了一个编辑错误,它可能会有一两个小错误。
请注意,一般来说,您需要知道单词的 upos
才能正确词形还原。此代码将 return 所有可能的引理,但我建议修改它以传递正确的 upos
为您的词。
class SpacyLemmatizer(object):
def __init__(self, smodel):
import spacy
self.lemmatizer = spacy.load(smodel).vocab.morphology.lemmatizer
# get the lemmas for every upos
def getLemmas(self, entry):
possible_lemmas = set()
for upos in ('NOUN', 'VERB', 'ADJ', 'ADV'):
lemmas = self.lemmatizer(entry, upos, morphology=None)
lemma = lemmas[0] # See morphology.pyx::lemmatize
possible_lemmas.add( lemma )
return possible_lemmas