here这是一个Web服务,可以分析英文临床文本,并报告任何可以检测到的概念。
例如 - 我头疼。它会将头痛识别为症状。
现在我想做的是通过R将句子发送到Web服务,并将表格从网页返回到R进行进一步分析。
答案 0 :(得分:5)
如果我们采用他们的示例curl
命令行:
curl -s --request POST \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "The patient had a stroke." \
http://snomedct.t3as.org/snomed-coder-web/rest/v1.0/snomedctCodes
可以很容易地翻译成httr
。
-s
表示"沉默" (没有进度表或错误信息)所以我们真的不必翻译它。
任何-H
表示向请求添加标头。使用Content-Type
参数encode
可以更好地处理此特定httr::POST
标头。
--data-urlencode
参数表示对该字符串进行URL编码并将其放入请求的body
。
最后,URL是要调用的资源。
library(httr)
result <- POST("http://snomedct.t3as.org/snomed-coder-web/rest/v1.0/snomedctCodes",
body="The patient had a stroke.",
encode="form")
由于您不定期执行此操作,因此您可以使用POST
打包with_verbose()
来查看正在进行的操作(在httr
中查找文档)。
在此之后技术上应该有很多细微差别(比如使用stop_for_status()
,warn_for_status()
或甚至status_code()
来检查HTTP状态代码,但为了简单起见,请使用&#39 ; s假设调用有效(这个是他们的例子,所以它确实有效,并返回一个{Good}的200
HTTP状态代码。
默认情况下,该Web服务正在返回JSON,因此我们需要将其转换为R对象。虽然httr
执行内置解析,但我喜欢使用jsonlite
包来处理结果:
dat <- jsonlite::fromJSON(content(result, as="text"), flatten=TRUE)
fromJSON
函数采用一些参数来帮助将JSON形成合理的R数据结构(许多API返回可怕的JSON和/或XML)。这个API适合'#34;可怕的&#34;类别。 dat
中的数据非常粗糙,对它的进一步解码将是一个单独的SO问题。