Попытка распознать сущности из заданного фрагмента текста, используя Spacy's fraMatcher в приложении flask.
У меня есть настраиваемый список сущностей (около 150 КБ), которые я хочу сопоставить с использованием Spacy's fraMMatcher , Я использую самый быстрый рекомендуемый подход, используя tokenizer.pipe, как указано здесь при создании шаблонов, а также для добавления в PhraseMatcher.
with open('entities_index_keys.pkl', 'rb')as f:
entities_list=pickle.load(f)
print (len(entities_list))
phrase_matcher_obj = PhraseMatcher(nlp.vocab)
# create doc for each entity from entities_list
patterns = list(nlp.tokenizer.pipe(entities_list))
phrase_matcher_obj.add('my_entities', None, *patterns)
Для завершения строки ниже требуется некоторое время. , Я имел успех со списком сущностей размером 1200, и это было довольно быстро во время выполнения. Но при переходе к 150 К сущностям это значительно замедляется.
patterns = list(nlp.tokenizer.pipe(entities_list))
Я бы предпочел не создавать шаблоны во время выполнения, но выбор списка «документов» / шаблонов, созданных с помощью приведенного выше кода, повреждает объект для некоторых причина. Так есть ли способ быстро создать шаблоны и добавить их к объекту разговорника без быстрого удара?
Другой альтернативный подход - сохранить PhraseMatcher на диск и просто быстро загрузить его во время выполнения. маршрута приложения flask. (пробовал травить безуспешно)