API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.
영국 경찰은 범죄관련 데이터를 API를 통해 제공하고 있다. 기본적으로 API에 대한 설명과 사용예제를 담고 있으며 예제를 실행시켰을 경우 응답값도 함께 알려준다.
API를 호출했을 때 반환되는 결과도 아래와 같이 친철히 반환값을 예시로 기술해준다.
library(webshot2)
webshot('https://data.police.uk/docs/method/crime-street/', selector = '#content > div > pre:nth-child(21)')
강도(burglary) 데이터를 가져오려면 URL을 지정하고, GET()
함수로 데이터를 끌어오는데 필요한 매개별수를 넘기고 content()
함수로 데이터를 가져오는데 JSON 형태라 이를 데이터분석을 위한 데이터프레임으로 변환시킨다.
library(tidyverse)
library(httr)
library(jsonlite)
get_burgalary <- function() {
uk_police_url <- "https://data.police.uk/api/crimes-street/burglary"
request <- GET(url = uk_police_url,
query = list(
lat = 53.421813,
lng = -2.330251,
date = "2019-01")
)
resp <- content(request, as = "text", encoding = "UTF-8")
parsed <- jsonlite::fromJSON(resp, flatten = TRUE) %>%
data.frame()
structure(
list(
content = parsed,
response = resp
),
class = "police_api"
)
}
burglary <- get_burgalary()
listviewer::jsonedit(burglary)
burglary$content %>%
select(month, category,
location = location.street.name,
long = location.longitude,
lat = location.latitude) %>%
as_tibble()
# A tibble: 39 x 5
month category location long lat
<chr> <chr> <chr> <chr> <chr>
1 2019-01 burglary On or near Sefton Crescent -2.318588 53.429393
2 2019-01 burglary On or near Ainsdale Drive -2.344496 53.411641
3 2019-01 burglary On or near Clarendon Road -2.306736 53.424166
4 2019-01 burglary On or near Lyndhurst Avenue -2.335320 53.419379
5 2019-01 burglary On or near Grosvenor Square -2.332214 53.420475
6 2019-01 burglary On or near Penrith Avenue -2.311118 53.414249
7 2019-01 burglary On or near Brixham Drive -2.347721 53.428880
8 2019-01 burglary On or near Bromley Road -2.315403 53.411838
9 2019-01 burglary On or near Kirklands -2.326680 53.415106
10 2019-01 burglary On or near Cunliffe Drive -2.314591 53.416065
# … with 29 more rows
투블럭 AI는 2019년 창업한 스타트업으로 인공지능 자연어 처리 엔진 개발에 매진을 하고 있으며 자체 개발한 엔진을 TBai Machine Reading (기계독해) 데모 페이지를 통해 제공하고 있다.
읽을 꺼리(text) 신문기사를 대상으로 물어 볼꺼(question)을 전달하면 대답으로 정확한 결과를 전달한 것이 확인된다.
https://repo.continuum.io/archive/ 웹사이트에서 다운로드 받을 해당 버전을 선택하여 설치를 했으나 맥OS가 Catalina로 버전업 되면서 루트에 설치하는 것이 원칙적으로 금지되었다. 이런 경우 reticulate::install_miniconda()
명령어로 설치를 진행한다.
reticulate::install_miniconda()
use_python('/Users/statkclee/Library/r-miniconda/bin/python')
repl_python()
Stackoverflow, “Unable to change python path in reticulate (R)”를 참조하여 “.Renviron” 파일에 RETICULATE_PYTHON
을 지정한다.