Мое текущее понимание TfidfVectorizer
требует запуска nltk.download("punkt")
перед преобразованием входных данных, поскольку все токенизаторы по умолчанию доступны в punkt
. В настоящее время, поскольку я использую TfidfVectorizer
в своей облачной функции, я запускаю nltk.download("punkt")
внутри контейнера облачной функции, который загружает punkt
в /tmp
. Моя проблема заключается в том, что я не могу гарантировать доступ к одному и тому же содержимому файловой системы для каждого вызова моей облачной функции Google, потому что «последующие вызовы одной и той же функции иногда будут выполняться в другом контейнере, поэтому они будут иметь разные /tmp
монтирования . Таким образом, вы не можете использовать /tmp
для связи между функциями" (из этот вопрос SO а>). Это приводит к необходимости повторной загрузки punkt
при каждом переключении контейнера, и это отображается в журналах моей облачной функции.
Я попытался создать токенизатор, десериализованный из english.pickle
, который является частью punkt
. Даже при передаче функции tokenize
этого пользовательского токенизатора как tokenizer
в TfidVectorizer
преобразование входных данных позже заканчивается сбоем из-за отсутствия загрузки punkt
.
Есть ли способ загрузить punkt
в доступную память Python, чтобы он не сохранялся в файловой системе и не стирался при переключении контейнера? Похоже, мне нужно, чтобы punkt
загружался в файловую систему независимо от того, передаю ли я пользовательский токенизатор или позволяю TfidfVectorizer
выбрать свой собственный токенизатор по умолчанию.