Python 3.x 加速SpaCy标记器
我正在使用SpaCy标记数以万计的文档。每个文档平均需要5秒左右的时间。关于如何加快标记器的速度有什么建议吗 一些补充资料:Python 3.x 加速SpaCy标记器,python-3.x,spacy,Python 3.x,Spacy,我正在使用SpaCy标记数以万计的文档。每个文档平均需要5秒左右的时间。关于如何加快标记器的速度有什么建议吗 一些补充资料: 输入文件是具有新行字符的文本文件 文件的平均大小约为400KB 每个输入文件的标记都会写入输出文件中的新行(不过,如果这有助于提高速度,我可以对此进行更改) 共有1655个单词 输出文件被馈送到fasttext 以下是我的代码: 从pathlib导入路径,PurePath 从时间导入时间 st=时间() nlp=en_core\u web\u sm.load(禁用=[
- 输入文件是具有新行字符的文本文件
- 文件的平均大小约为400KB
- 每个输入文件的标记都会写入输出文件中的新行(不过,如果这有助于提高速度,我可以对此进行更改)
- 共有1655个单词
- 输出文件被馈送到fasttext
从pathlib导入路径,PurePath
从时间导入时间
st=时间()
nlp=en_core\u web\u sm.load(禁用=['ner','tagger','parser','textcat'])
p=Path('input_text/').glob('*.txt'))
files=['input_text/'+x.name表示p中的x,如果x.is_file()]
#nlp=spacy.load('en-core-web-sm')
stopwords_文件='stopwords.txt'
def getStopWords():
f=打开(停止字文件'r')
stopWordsSet=f.read()
返回stopWordsSet
stopWordsSet=getStopWords()
out\u file='token\u results.txt'
对于文件中的文件:
#打印(输出文件)
将open(file,encoding=“utf8”)作为f:
st_doc=时间()
对于f中的行:
doc=nlp(行)
对于文档中的令牌:
如果(不是StopWordSet中的token.text.lower())
而不是token.is_punt而不是token.is_space而不是token.like_num
和len(token.shape)>1):
tup=(token.text,“|”,token.lemma|)
appendFile=open(输出文件'a',encoding=“utf-8”)
appendFile.write(“+tup[0]”)
打印((time()-st_doc),“秒数”,文件)
appendFile.write(“\n”)
appendFile.close()
打印((time()-st)/60,‘弹性分钟’)
set()
。否则,您将在包含整个文件的长字符串中搜索每个标记,这会意外地匹配部分单词,并且比检查集合成员身份慢得多nlp.max_length
)texts = f.readlines()
docs = nlp.tokenizer.pipe(texts)
for doc in docs:
for token in doc:
...