#shell #google-app-engine #nlp #google-cloud-storage
#оболочка #google-app-engine #nlp #google-облачное хранилище
Вопрос:
Я пытаюсь настроить API обработки естественного языка Google, используя облачную оболочку Google и облачное хранилище.
Моя проблема в том, что я продолжаю получать эту ошибку, когда указываю код на конкретный объект корзины:
{
"error": {
"code": 401,
"message": "Permission to access the GCS address is denied.",
"status": "UNAUTHENTICATED",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"field": "document.gcs_content_uri",
"description": "Permission to access the GCS address is denied."
Это код, который я использую:
curl -s -X POST -H "Content-Type: application/json" --data-binary @requestb.json https://language.googleapis.com/v1beta1/documents:analyzeEntities?key=${NL_
API_KEY}
Я владелец облачной учетной записи и имею доступ ко всем проектам. Я чего-то здесь не понимаю?
Вызов API отлично работает с облачной оболочкой, если я устанавливаю для объекта значение «Общедоступный».
Любая помощь по этому вопросу была бы очень признательна!
Спасибо
Ответ №1:
Проблема решена!
Я понял, что не передал местоположение файла ключа учетной записи службы. Вот так:
gcloud auth activate-service-account --key-file=service-account-key-file
Я сделал это, загрузив ключ из области учетных данных, а затем повторно загрузив его в командную строку облачной оболочки Google (в ней есть хороший редактор кода под названием ‘Orion’, который позволяет просматривать и редактировать каждый загруженный файл).
Затем я перешел к шагу 3 здесь
Я изменил код на шаге 4, чтобы отправить API объекту в корзине в облачном хранилище Google, вот так:
curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer xxxxxxxxxxxauth-tokenxxxxxxxxxxxxxx" --data-binary @requestb.json https://language.googleapis.com/v1beta1/documents:analyzeEntities?key=${NL_API_KEY}
Приведенный выше «@requestb.json» — это еще один текстовый файл, который я загрузил в облачную оболочку Google, который содержал следующую информацию в формате json:
{
"document":{
"type":"PLAIN_TEXT",
"gcsContentUri": "gs://<bucket-name>/<object-name>"
}
}
И это сработало!
Моим объектом был текстовый файл, содержащий выборочную статью BBC News, и он вернул этот ответ:
{
"entities": [
{
"name": "Mosul",
"type": "LOCATION",
"metadata": {
"wikipedia_url": "http://en.wikipedia.org/wiki/Mosul"
},
"salience": 0.16690882,
"mentions": [
{
"text": {
"content": "ir Mo",
"beginOffset": -1
}
},
{
"text": {
"content": "ar Mo",
"beginOffset": -1
}
},
{
"text": {
"content": "of Mo",
"beginOffset": -1
}
},
{
"text": {
"content": "to Mo",
"beginOffset": -1
}
}
]
},
{
"name": "US",
"type": "LOCATION",
"metadata": {
"wikipedia_url": "http://en.wikipedia.org/wiki/United_States"
},
"salience": 0.058336213,
"mentions": [
{
"text": {
"content": "he",
"beginOffset": -1
}
},
{
"text": {
"content": "y,",
"beginOffset": -1
}
}
]
},
{
"name": "Iraqi",
"type": "LOCATION",
"metadata": {
"wikipedia_url": "http://en.wikipedia.org/wiki/Iraq"
},
"salience": 0.0219927,
"mentions": [
{
"text": {
"content": "An Ir",
"beginOffset": -1
}
},
{
"text": {
"content": "ng Ir",
"beginOffset": -1
}
},
{
"text": {
"content": "h, I",
"beginOffset": -1
}
}
]
},
{
"name": "Qusay Hamid Kadhem",
"type": "PERSON",
"metadata": {},
"salience": 0.01995722,
"mentions": [
{
"text": {
"content": "r, Qusay Hamid Kad",
"beginOffset": -1
}
}
]
},
{
"name": "Qaraqosh",
"type": "LOCATION",
"metadata": {
"wikipedia_url": "http://en.wikipedia.org/wiki/Bakhdida"
},
"salience": 0.018237775,
"mentions": [
{
"text": {
"content": "of Qaraq",
"beginOffset": -1
}
},
{
"text": {
"content": ".rnQaraq",
"beginOffset": -1
}
}
]
},
{
"name": "AFP",
"type": "ORGANIZATION",
"metadata": {
"wikipedia_url": "http://en.wikipedia.org/wiki/Agence_France-Presse"
},
"salience": 0.0049931784,
"mentions": [
{
"text": {
"content": "ld ",
"beginOffset": -1
}
}
]
},
{
"name": "IS",
"type": "ORGANIZATION",
"metadata": {
"wikipedia_url": "http://en.wikipedia.org/wiki/Islamic_State_of_Iraq_and_the_Levant"
},
}
"salience": 0.0046183467,
"mentions": [
{
"text": {
"content": "he",
"beginOffset": -1
}
},
{
"text": {
"content": "ut",
"beginOffset": -1
}
}
]
},
{
"name": "Reuters",
"type": "ORGANIZATION",
"metadata": {
"wikipedia_url": "http://en.wikipedia.org/wiki/Reuters"
},
"salience": 0.0041254032,
"mentions": [
{
"text": {
"content": ".rnReut",
"beginOffset": -1
}
}
]
},
{
"name": "Christian",
"type": "PERSON",
"metadata": {
"wikipedia_url": "http://en.wikipedia.org/wiki/Christian"
},
"salience": 0.0016911785,
"mentions": [
{
"text": {
"content": "st Christ",
"beginOffset": -1
}
}
]
}
],
"language": "en"
Теперь я планирую отправить несколько ответов на большой запрос, а затем визуализировать данные в соответствии с этой замечательной статьей