Intelligence Service Open API를 R에서 활용하려면, R에서 RCurl 라이브러리의 getURL를 사용하여 HTTP 방식으로 호출해야 합니다. R 스크립트에서는 아래와 같이 RCurl 라이브러리를 로딩합니다.

library('RCurl')

만일 RCurl 이 설치되어 있지 않다면 콘솔에서 아래 명령으로 먼저 라이브러리를 설치해야 합니다.

install.packages("RCurl")

이 튜토리얼에서는 Intelligence Service API 중 Trend Analysis API 를 활용해보겠습니다. Trend Analysis API는 요청한 질의어에 대해 뉴스, 블로그, 트위터의 기간별 문서 통계를 제공하는 API 입니다. 먼저 소치올림픽과 관련하여 2014년 2월 7일부터 2014년 2월 24일까지의 일별 뉴스 문서 통계를 질의하기 위해, API에 입력할 변수를 아래와 같이 준비합니다.

target <- “news”
query <- "소치"
from <- "20140207"
to <- "20140224"
timeUnit <- "day"

그리고, 변수의 입력에 따라 Trend Analys API를 호출하는 함수(function)를 IntelligenceService.R 파일에 아래와 같이 정의합니다.
key <- "&key=##############": 사용자 발급Key 입력

library('RCurl')

getTrend <- function(target, query, from, to, timeUnit) {  
	
	# 입력값 구성
	trendAPI <- "http://o2.saltlux.com/o2api/trend.csv?"  
	target <- paste("&target=", target, sep="")
	query <- paste("&query=", query, sep="")
 	from <- paste("&from=", from, sep="")
 	to <- paste("&to=", to, sep="")
 	timeUnit <- paste("&timeunit=", timeUnit, sep="")  
 	key <- "&key=##############" 
	
	# HTTP 호출
 	url <- paste(trendAPI, target, query, from, to, timeUnit, sep="") 
 	cat(url)
 	result <- getURL(url)
 
	# CSV 결과 처리
	trend <- read.delim(textConnection(result), header=F, sep=",")
	names(trend) <- c("startDate", "endDate", "count", "N")
 	
 	return(trend)
}

위에 정의된 getTrend 에서는 HTTP 호출에 사용할 입력값을 URL 형식으로 구성하고, RCurl 라이브러리의 getURL 함수를 통해 CSV 결과를 받은 결과를 돌려주는 함수입니다.

이 함수를 사용하면 아래와 같은 스크립트 한 줄이면 Trend Analysis API 결과를 얻을 수 있습니다.

newsTrend <- getTrend(target, query, from, to, timeUnit)

이 튜토리얼의 스크립트를 다시 정리해보면 아래와 같습니다. RTutorial.R에서는 IntelligenceService.R 을 로딩하고, 입력값을 설정하여 Trend Analysis API를 호출합니다.

RTutorial.R

source(file="./R/lib/O2Service.R")

### query
target <- "news"
query <- "소치"
from <- "20140207"
to <- "20140224"
timeUnit <- "day"
topicCount <- 10

### Trend Analysis API 호출
newsTrend <- getTrend(target, query, from, to, timeUnit)

RTutorial.R 스크립트를 실행 (RStudio 에서는 전체 스크립트를 선택한 후 Run 버튼 클릭) 하고, View(newsTrend) 를 실행하거나 RStudio의 우측 창에서 해당 변수를 더블클릭하면 아래와 같은 통계결과를 확인할 수 있습니다.

# startDate endDate count N
1 20140207 20140207 1220 17116
2 20140208 20140208 4 26
3 20140209 20140209 523 2459
4 20140210 20140210 658 5547
5 20140211 20140211 215 3063
6 20140212 20140212 510 5403
7 20140213 20140213 222 2972
8 20140214 20140214 639 5039
9 20140216 20140216 305 2484
10 20140217 20140217 133 2716
11 20140218 20140218 1503 7579
12 20140219 20140219 522 3325
13 20140220 20140220 981 2825
14 20140221 20140221 4898 21568
15 20140222 20140222 3203 9747
16 20140223 20140223 2587 13673
17 20140224 20140224 2040 25227