将 SpaCy PhraseMatcher 保存到磁盘
Save SpaCy PhraseMatcher to disk
我正在使用 SpaCy 创建一个短语匹配器,如下所示:
import spacy
from spacy.matcher import PhraseMatcher
nlp = spacy.load("en")
label = "SKILL"
print("Creating the matcher...")
start = time.time()
matcher = PhraseMatcher(nlp.vocab)
for i in list_skills:
matcher.add(label, None, nlp(i))
我的list_skills很大,所以matcher的创建时间比较长,我经常复用。有没有办法将匹配器保存到磁盘,并在以后重新加载它而不必每次都重新创建它?
您最初可以通过使用 nlp.tokenizer.pipe()
来处理您的文本来节省一些时间:
for doc in nlp.tokenizer.pipe(list_skills):
matcher.add(label, None, doc)
这只是标记化,比 运行 完整的 en
管道快得多。如果您将某些 attr
设置与 PhraseMatcher
一起使用,您可能需要 nlp.pipe()
,但如果是这种情况,您应该会收到错误消息。
您可以 pickle PhraseMatcher
以将其保存到磁盘。 Unpickling 不是非常快,因为它必须重建一些内部数据结构,但它应该比从头开始创建 PhraseMatcher
快很多。
我正在使用 SpaCy 创建一个短语匹配器,如下所示:
import spacy
from spacy.matcher import PhraseMatcher
nlp = spacy.load("en")
label = "SKILL"
print("Creating the matcher...")
start = time.time()
matcher = PhraseMatcher(nlp.vocab)
for i in list_skills:
matcher.add(label, None, nlp(i))
我的list_skills很大,所以matcher的创建时间比较长,我经常复用。有没有办法将匹配器保存到磁盘,并在以后重新加载它而不必每次都重新创建它?
您最初可以通过使用 nlp.tokenizer.pipe()
来处理您的文本来节省一些时间:
for doc in nlp.tokenizer.pipe(list_skills):
matcher.add(label, None, doc)
这只是标记化,比 运行 完整的 en
管道快得多。如果您将某些 attr
设置与 PhraseMatcher
一起使用,您可能需要 nlp.pipe()
,但如果是这种情况,您应该会收到错误消息。
您可以 pickle PhraseMatcher
以将其保存到磁盘。 Unpickling 不是非常快,因为它必须重建一些内部数据结构,但它应该比从头开始创建 PhraseMatcher
快很多。