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