Библиотека 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

Другие вопросы по тегам