R 영화 시나리오 로딩하기

R을 활용하여 영화 시나리오 분석하는 프로젝트를 진행해보도록 하겠습니다. 데이타 분석에 많이 활용하는 R 언어를 이용해보고자 합니다. 먼저 R 영화 시나리오 로딩을 진행해보겠습니다. 작업 디렉토리를 설정하고 대본의 형식을 간략히 살펴본 후 로딩하여 샘플데이타를 표시하는 방법을 알아보겠습니다.

목표

R을 활용해서 영화 시나리오를 로딩하는 방법에 대해 알아봅니다.

R 소개

R은 통계 분석 및 시각화에 사용되는 오픈 소스 프로그래밍 언어입니다. 1993년 로버트 젠트너와 로버트 헬스턴이 개발했으며, 수학자, 통계학자, 컴퓨터 과학자 등 다양한 분야의 사람들이 사용합니다.

R은 통계 분석에 필요한 다양한 기능을 제공하고 있습니다. 예를 들어, 데이터를 수집하고 정리하고, 통계적 모델을 만들고, 결과를 시각화할 수 있습니다. 그리고 다양한 통계 패키지를 제공하고 이러한 패키지는 데이터 분석을 더 쉽게 하고, 다양한 통계적 방법을 사용할 수 있도록 합니다.

R은 무료로 사용할 수 있습니다. 또한 온라인에서 많은 리소스를 제공합니다. 이러한 리소스에는 R 매뉴얼, R 튜토리얼, R 패키지 설명서 등이 포함됩니다. R의 가장 큰 장점은 배우기 쉬운 프로그래밍 언어란 점입니다. R의 기본 문법은 간단하고, R의 온라인 리소스를 통해 쉽게 학습할 수 있습니다.

R의 공식 사이트는 여기 링크를 참고바랍니다.

R 영화 시나리오 로딩

R을 실행할 수 있는 환경(R와 RStudio)을 구성했다하는 가정 하에 씬분류를 하나씩 진행해보겠습니다.

1. 작업 디렉토리 설정

R에서 setwd 함수는 현재 작업 디렉토리를 지정하는 함수입니다. setwd() 함수는 R의 utils 패키지에 포함되어 있습니다. utils 패키지를 설치하지 않은 경우 다음 명령을 사용하여 설치할 수 있습니다.

아래는 설치하는 방법입니다. install.packages 명령을 이용합니다. 해당 명령은 패키지를 설치하는 명령어입니다.

install.packages("utils")

작업 디렉토리는 R에서 파일이나 디렉토리에 액세스할 때 사용되는 디렉토리입니다. setwd 함수는 다음과 같은 형식으로 사용됩니다.

setwd("path")

여기서 path는 현재 작업 디렉토리를 지정하는 문자열입니다. path는 절대 경로 또는 상대 경로로 지정할 수 있습니다. 절대 경로는 디스크의 루트 디렉토리에서 시작하는 경로입니다. 상대 경로는 현재 작업 디렉토리에서 시작하는 경로입니다.

예를 들어, 다음 코드는 현재 작업 디렉토리를 C:\Users\user 디렉토리로 설정합니다.

setwd("C:/Users/user")

위와 같이 작업 디렉토리를 설정했다면 아래와 같이 로딩할 때 절대 경로를 지정해주지 않아도 됩니다.

# 작업 디렉토리 안의 data.csv 파일을 로딩함.
# 해당 파일의 위치는 C:/Users/user/data.csv 임.
data <- read.csv("data.csv")

작업 디렉토리를 설정하지 않을 경우는 아래 코드로 로딩이 가능합니다.

data <- read.csv("C:/Users/user/data.csv")

setwd 함수는 RStudio의 메뉴에서도 사용할 수 있습니다. RStudio에서 File > Change Working Directory 메뉴를 선택하면 현재 작업 디렉토리를 변경할 수 있습니다.

setwd 함수는 R에서 파일이나 디렉토리에 액세스할 때 사용되는 중요한 함수입니다. R에서 파일이나 디렉토리에 액세스하려면 먼저 해당 파일이나 디렉토리가 현재 작업 디렉토리에 있어야 합니다. setwd 함수를 사용하여 현재 작업 디렉토리를 변경하면 R에서 파일이나 디렉토리에 액세스할 수 있습니다.

저는 아래와 같이 작업 디렉토리를 설정하였습니다.

setwd("~/IT_Project/text_mining")

2. 데이타 읽기

데이타를 로딩하기에 앞서 시나리오 데이타 형식을 알아보도록 하겠습니다. 보통의 시나리오는 씬번호와 함께 장소, 시간을 적습니다. 그리고 그 다음으로 지문과 인물들의 대사로 구성되어 있습니다.

아래 예시를 보시면 1. 이란 씬 번호와 프롤로그란 씬의 성격, 그리고 바닷가 항구라는 장소를 명시합니다. 시나리오는 영화를 제작하기 위한 기본 자료이기 때문에 기본적인 시각적인 요소들을 담고 있습니다. 11. 번 씬을 보면 장소 / 시간 형식으로 구성되어 있습니다.

1. 프롤로그 / 바닷가 항구
밤바다의 풍경이 아름다운데, 그 위로 비명소리가 들린다.
사내 으악- 악- 아아악. 이 새끼들아! 이거 놔 이 개새끼야!
보면, 말끔한 정장 차림의 한 사내가 여러명의 건달들에게 바다쪽으로 끌려가고 있다.
건달 아이 씨발 좆나 시끄럽네. (퍽 - 발로 찬다.) 사내 아아. 아파. 아파요!
항구 위, 그들을 기다리던 다른 건달들.
건달1 아따, 몇시요! 추어 죽는줄 알아당게.
.....
11. 동네 어귀 / 낮
동네, 구석에서 술먹고, 담배피우는 아이들을 지나쳐 가는 동수. 친구3 동수야! 그냥 가게?!

친구4 맨날 잠만 자면서 공부한다고 미친놈이.
12. 집 / 낮
벌컥- 문을 열면, 학생하고 뽀뽀하려던 시연, 학생 놀라 보면- 동수, 확 노려보자 후다닥 도망간다. 동수 아버지 보면 너 죽는다이. 조심하라니까!
하고 방으로 들어가는 동수.
시연 오빠 요즘 이상하네. 왜 이리 일찍오고? 어디 병있나?

이제 대본을 로딩해보겠습니다.

  • readLines 함수

R에서 readLines 함수는 파일에서 줄 단위로 문자열을 읽는 함수입니다. readLines 함수는 다음과 같은 형식으로 사용됩니다.

lines <- readLines(file)

여기서 file은 읽을 파일의 경로입니다. 파일의 경로는 절대 경로 또는 상대 경로를 사용할 수 있습니다. 절대 경로는 루트 디렉토리로부터 시작하는 경로이고, 상대 경로는 현재 작업 디렉토리로부터 시작하는 경로입니다.

예를 들어, 다음 코드는 C:\Users\user1\Documents 폴더에 있는 data.txt 파일에서 줄 단위로 문자열을 읽습니다.

lines <- readLines("C:\Users\user1\Documents\data.txt")

readLines 함수는 R에서 파일에서 줄 단위로 문자열을 읽을 때 사용됩니다. 예를 들어, 다음 코드는 C:\Users\user1\Documents 폴더에 있는 data.txt 파일에서 줄 단위로 문자열을 읽고, 각 줄을 콘솔에 출력합니다.

lines <- readLines("C:\Users\user1\Documents\data.txt")
for (line in lines) {
 print(line)
}
  • head 함수

R에서 head 함수는 벡터, 행렬, 데이터 프레임의 처음 몇 개 행을 반환하는 함수입니다. head 함수는 다음과 같은 형식으로 사용됩니다.

head(x, n)

여기서 x는 벡터, 행렬, 데이터 프레임이고, n은 반환할 행의 개수입니다. n을 생략하면 기본값인 6개가 반환됩니다.

예를 들어, 다음 코드는 벡터 c(1, 2, 3, 4, 5, 6)의 처음 3개 행을 반환합니다.

head(c(1, 2, 3, 4, 5, 6), 3)

head 함수는 R에서 데이터를 시각화하거나 데이터의 특징을 파악할 때 유용하게 사용됩니다. 예를 들어, 다음 코드는 데이터 프레임 mtcars의 처음 6개 행을 출력합니다.

head(mtcars)

# Output
mpg cyl disp hp drat wt qsec vs am gear carb
1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 1
2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 1
3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
4 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
5 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
6 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
  • 시나리오 로딩 명령어
## R Read Data

raw_moon <- readLines("data/km-theking", encoding = "UTF-8")
head(raw_moon)

위 명령을 실행하면 아래와 같은 결과를 얻습니다.

[1] "1. 프롤로그 / 바닷가 항구"                                                       
[2] "밤바다의 풍경이 아름다운데, 그 위로 비명소리가 들린다."                          
[3] "사내 으악- 악- 아아악. 이 새끼들아! 이거 놔 이 개새끼야!"                        
[4] "보면, 말끔한 정장 차림의 한 사내가 여러명의 건달들에게 바다쪽으로 끌려가고 있다."
[5] "건달 아이 씨발 좆나 시끄럽네. (퍽 - 발로 찬다.) 사내 아아. 아파. 아파요!"        
[6] "항구 위, 그들을 기다리던 다른 건달들." 

이상으로 영화 시나리오를 로딩하는 방법에 대해 알아봤습니다. 다음으로는 로딩한 데이타를 가지고 분석하기 전에 텍스트를 파싱하여 기본적인 정보를 추가하는 방법에 대해 알아보겠습니다.

Back to top