Библиотека Spacy NLP: каков максимально разумный размер документа
Следующий вопрос касается библиотеки Spacy NLP для Python, но я был бы удивлен, если бы ответы для других библиотек существенно отличались.
Каков максимальный размер документа, который Spacy может обрабатывать при разумных условиях памяти (например, 4 ГБ ВМ в моем случае)? Я надеялся использовать Spacy для поиска совпадений в документах размером с книгу (100K+ токены), но я постоянно получаю сбои, которые указывают на истощение памяти в качестве причины.
Я нуб НЛП - я знаю концепции академически, но я не знаю, чего ожидать от современных библиотек по искусству на практике. Так что я не знаю, является ли то, что я прошу, сделать библиотеку смехотворно трудным или настолько легким, что, должно быть, я что-то напортачил в своей среде.
Что касается того, почему я использую библиотеку NLP вместо чего-то, специально ориентированного на поиск документов (например, solr), я использую ее, потому что я хотел бы делать сопоставление на основе леммы, а не на основе строк.
1 ответ
Spacy имеет ограничение max_length в 1000000 символов. Я был в состоянии разобрать документ с 450 000 слов просто отлично. Лимит может быть поднят. Я бы разбил текст на n кусков в зависимости от общего размера.
Для парсера v2.x и моделей NER требуется примерно 1 ГБ временной памяти на 100 000 символов на входе. Это означает, что длинные тексты могут вызвать ошибки выделения памяти. Если вы не используете парсер или NER, вероятно, безопасно увеличить
nlp.max_length
предел. Ограничение на количество символов, поэтому вы можете проверить, не слишком ли длинны ваши входные данные, проверивlen(text)
,
https://github.com/explosion/spaCy/blob/master/spacy/errors.py