Google Cloud Natural Language API:analyzeSyntax API 是否有一个参数,用于令牌在词性结果中不包含"*_UNKNOWN"值属性



我想知道 API 端点是否允许analyzeSyntaxAPI 响应 JSON 不包含partOfSpeech字典的子属性(如果它们是*_UNKNOWN(?在查看文档输入的详细信息时,我找不到任何方法来限制partOfSpeech的响应文档内容。

这是只有在清理数据时才会处理的事情,在响应后?

在名为request.json的文件中,每个 API 文档的示例查询:

{
"encodingType": "UTF8",
"document": {
"type": "PLAIN_TEXT",
"content": "Google, headquartered in Mountain View, unveiled the new Android phone at the Consumer Electronic Show.  Sundar Pichai said in his keynote that users love their new Android phones."
}
}

执行的命令:

curl "https://language.googleapis.com/v1/documents:analyzeSyntax?key=${API_KEY}" 
-s 
-X POST 
-H "Content-Type: application/json" 
--data-binary @request.json > response.json

响应示例:

{
"sentences": [
{
"text": {
"content": "Google, headquartered in Mountain View, unveiled the new Android phone at the Consumer Electronic Show.",
"beginOffset": 0
}
},
{
"text": {
"content": "Sundar Pichai said in his keynote that users love their new Android phones.",
"beginOffset": 105
}
}
],
"tokens": [
{
"text": {
"content": "Google",
"beginOffset": 0
},
"partOfSpeech": {
"tag": "NOUN",
"aspect": "ASPECT_UNKNOWN",
"case": "CASE_UNKNOWN",
"form": "FORM_UNKNOWN",
"gender": "GENDER_UNKNOWN",
"mood": "MOOD_UNKNOWN",
"number": "SINGULAR",
"person": "PERSON_UNKNOWN",
"proper": "PROPER",
"reciprocity": "RECIPROCITY_UNKNOWN",
"tense": "TENSE_UNKNOWN",
"voice": "VOICE_UNKNOWN"
},
"dependencyEdge": {
"headTokenIndex": 7,
"label": "NSUBJ"
},
"lemma": "Google"
},
{
"text": {
"content": ",",
"beginOffset": 6
},
"partOfSpeech": {
"tag": "PUNCT",
"aspect": "ASPECT_UNKNOWN",
"case": "CASE_UNKNOWN",
"form": "FORM_UNKNOWN",
"gender": "GENDER_UNKNOWN",
"mood": "MOOD_UNKNOWN",
"number": "NUMBER_UNKNOWN",
"person": "PERSON_UNKNOWN",
"proper": "PROPER_UNKNOWN",
"reciprocity": "RECIPROCITY_UNKNOWN",
"tense": "TENSE_UNKNOWN",
"voice": "VOICE_UNKNOWN"
},
"dependencyEdge": {
"headTokenIndex": 0,
"label": "P"
},
"lemma": ","
},
...
...

此响应 JSON 为819行,其中314行(接近响应的 40%(是partOfSpeech属性的*_UNKNOWN值。因此,完全没用,但显着增加了响应中的数据量。

该文档似乎没有提供可以帮助解决此问题的参数。我是否遗漏了某些内容,或者此 API 不支持在*_UNKNOWN时删除这些密钥的参数?这是否只能在响应后通过数据清理进行管理?

如果我们查看 API 规范,我们最终会发现词性实际上是枚举(枚举(。 例如,我们发现性别可以是:

  • GENDER_UNKNOWN
  • 女性
  • 男性
  • 中性

进行 REST API 调用发送和接收 JSON 有效负载,JSON 对枚举的抽象是它们的值是扩展字符串。 但是,REST 和 JSON 并不是发出 GCP 服务请求的唯一协议。 还可以进行 gRPC 调用。 当使用 gRPC 时,传输的协议是协议缓冲区。 Google提供了语言绑定,允许您使用gRPC进行服务调用,而不必在学习该技术时分心。 gRPC 的价值在于消息更小、更快。

我没有看到在 API 级别适应传输压缩的机制(例如在使用 REST 时要求字段不包含在 JSON 响应中(。

另请参阅:

  • 比较 protobuf 与 json 的大小

最新更新