#python #google-cloud-platform #named-entity-recognition #google-cloud-automl #google-natural-language
#python #google-облачная платформа #распознавание именованных объектов #google-облако-automl #google-естественный язык
Вопрос:
У меня возникли трудности при попытке создать набор данных для распознавания именованных объектов в Google NLP API с помощью этого скрипта, предоставленного Googleinput_helper_v2.py
Проблема возникает с функцией _DownloadGcsFile, поскольку она выдает эту ошибку:
gsutil_cp_cmd = ' '.join(['gsutil', 'cp', gcs_file, local_filename])
TypeError: sequence item 2: expected str instance, bytes found
Я пытался поставить b' '.join(['gsutil', 'cp', gcs_file, local_filename])
, но это приводит к аналогичным проблемам.
При поиске информации я заметил, что причиной этого может быть скрипт, разрабатываемый на python 2.7.
Я буду признателен за любую помощь, так как я полный новичок. Большое вам спасибо.
Комментарии:
1. Как вы называете этот предоставленный scipt? похоже, что переменная
gcs_file
в некоторых случаях имеет двоичный формат, поэтому интересно, как вы это называете?2. Спасибо за ответ. Ну, я запускаю этот скрипт на виртуальной машине из Google App Engine. Может быть, я ошибаюсь, но это то, что вы спросили? Если нет, я готов уточнить.
3. Когда вы запускаете этот скрипт в Google App Engine, какую команду вы используете для запуска этого скрипта, например:
python input_helper_v2.py ....
? Не могли бы вы проверить, доступен ли python2 на вашей виртуальной машине (вызовите как:python2 --version
)?4. Я использую это
python3 input_helper_v2.py gs://<my-bucket> -t gs://<my-bucket>/output
и нет, на виртуальной машине предустановлен python 3. Я пытался установить python 2.x, но безуспешно.5. Да, весьма вероятно, проблема в том, что вы вызываете его с помощью python3 вместо python2. Взгляните на
Prerequisites
в верхней части файла скрипта , для этого требуетсяpython2
. Доступны ли другие виртуальные машины в Google Engine с предустановленным 2.x?
Ответ №1:
Ну, это означает, что gcs_file имеет тип байт. Итак, вам нужно придать ему строковый (str) тип. Например:
gsutil_cp_cmd = ' '.join(['gsutil', 'cp', gcs_file.decode('utf-8'), local_filename])
Комментарии:
1. Это решило проблему. Но далее отображается эта ошибка: File «/usr/lib/python3.7/genericpath.py «, строка 50, в getsize возвращает os.stat(filename).st_size FileNotFoundError Ошибка: [Ошибка 2] Нет такого файла или каталога: «/tmp/tmp7anr1toh/1_b’wikiner_ancora_conll.train.txt ‘» У вас есть какие-либо идеи о том, что вызывает эту проблему? Заранее благодарю вас.
2. Это просто указывает на то, что он не может найти данный файл. Я полагаю, вы запускаете «gsutil_cp_cmd»? Посмотрите, как выглядит команда, просто распечатайте ее. В любом случае проверьте, правильный ли пройденный путь. Это может иметь какое-то отношение к кавычкам. Или, я вижу, что он ищет каталог tmp, так что файл, который вы сгенерировали (?), Возможно, уже удален. Вам просто нужно проверить, существует ли файл при запуске скрипта. Опубликуйте свой код, если это не поможет