Я использую spacy, чтобы специально получить все amod (модификатор прилагательного) во многих файлах (около 12 гигов заархивированных файлов). Я попытался заставить его работать на папке размером всего 2,8 МБ, и это заняло 4 минуты, чтобы обработать его!
Вот мой код до сих пор:
with open("descriptions.txt", "w") as outf:
canParse = False
toParse = ""
for file in getNextFile():
# Open zip file and get text out of it
with zipfile.ZipFile(file) as zf:
with io.TextIOWrapper(zf.open(os.path.basename(file)[:-3]+"txt"), encoding="utf-8") as f:
for line in f.readlines():
if line[0:35] == "*** START OF THIS PROJECT GUTENBERG":
canParse = True
elif line[0:33] == "*** END OF THIS PROJECT GUTENBERG":
break
if canParse:
if line.find(".") != -1:
toParse += line[0:line.find(".")+1]
sents = nlp(toParse)
for token in sents:
if token.dep_ == "amod":
outf.write(token.head.text + "," + token.text + "\n")
toParse = ""
toParse += line[line.find(".")+1:len(line)]
else:
toParse += line
Есть ли способ ускорить работу? spacy (или мой python код в целом) для этого очень конкретного c варианта использования?