首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rest模板无法正确解析json rest api响应

Rest模板无法正确解析json rest api响应
EN

Stack Overflow用户
提问于 2017-09-14 23:01:19
回答 1查看 442关注 0票数 1

我正在尝试使用Spacy的NER从德语文本中提取命名实体。我已经将该服务公开为REST POST请求,该请求接受源文本作为输入,并返回命名实体(人员、位置、组织)列表的字典(Map)。这些服务是使用托管在linux服务器上的Flask Restplus公开的。

以示例文本为例,我使用通过Swagger UI公开的REST API的POST请求得到以下响应:

代码语言:javascript
运行
复制
{
  "ner_locations": [
    "Deutschland",
    "Niederlanden"
  ],
  "ner_organizations": [
    "Miele & Cie. KG",
    "Bayer CropScience AG"
  ],
  "ner_persons": [
    "Sebastian Krause",
    "Alex Schröder"
  ]
}

当我使用Spring从Spring boot应用程序(在Eclipse中的Windows OS上)向托管在Linux服务器上的RestTemplate发出请求时。json解析已正确完成。为了使用UTF-8编码,我添加了以下代码行。

代码语言:javascript
运行
复制
restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));

但是,当我在linux机器上部署这个spring boot应用程序并向API发出用于NER标记的POST请求时,ner_persons无法正确解析。在远程调试时,我得到以下响应

代码语言:javascript
运行
复制
{
  "ner_locations": [
    "Deutschland",
    "Niederlanden"
  ],
  "ner_organizations": [
    "Miele & Cie. KG",
    "Bayer CropScience AG"
  ],
  "ner_persons": [
    "Sebastian ",
    "Krause",
    "Alex ",
    "Schröder"
  ]
}

我不能理解为什么这种奇怪的行为发生在个人而不是组织的情况下。

EN

回答 1

Stack Overflow用户

发布于 2017-09-18 23:45:15

作为python的新手,我花了2天的调试时间来理解真正的问题并找到解决方法。

原因是名称(例如,"Sebastian Krause")由\xa0分隔,即不间断的空格字符(例如,"Sebastian\xa0Krause")而不是空格。因此,Spacy未能将它们作为单个NamedEntity进行检测。

浏览SO,我从here找到了以下解决方案

代码语言:javascript
运行
复制
import unicodedata 
norm_text = unicodedata.normalize("NFKD", source_text)

这还会标准化其他unicode字符,如\u2013\u2026等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46222462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档