AFINN: 내가 바로 적임자죠
이번에는 AFINN 감성 어휘 사전으로 넘어가겠습니다. AFINN 어휘 사전은 단순히 긍정/부정을 나타내는 것이 아니라, -5부터 5까지의 수치 점수를 사용합니다. Bing 어휘 사전의 열 이름이 sentiment인 것과 달리, AFINN 어휘 사전의 감성 점수 열은 value라고 불립니다.
앞서와 마찬가지로 inner_join()을 적용한 뒤 count()를 사용합니다. 그런 다음, 각 행의 점수를 합산하기 위해 dplyr의 group_by()와 summarize() 함수를 사용합니다. group_by() 함수는 기존 데이터 프레임을 받아 그룹별로 연산이 수행되는 그룹화된 데이터 프레임으로 변환합니다. 이후 summarize() 함수를 사용하면 sum()이나 mean()처럼 데이터를 집계하는 함수를 통해 각 그룹에 대한 값을 계산할 수 있습니다. 예를 들어 다음과 같이 작성할 수 있습니다.
data_frame %>%
group_by(book_line) %>%
summarize(total_value = sum(book_line))
정돈된 버전의 허클베리 핀에서 9703번 줄에는 "best", "ever", "fun", "life", "spirit"이라는 단어가 포함되어 있습니다. "best"와 "fun"의 AFINN 점수는 각각 3과 4입니다. 집계 후 9703번 줄의 총 점수는 7이 됩니다.
tidyverse에서는 subset() 대신 filter()를 권장합니다. filter()는 subset()의 기능을 더 간결한 문법으로 제공하기 때문입니다. 아래는 column1의 값이 24인 행을 filter()로 추출하는 예시입니다. 열 이름에 따옴표를 사용하지 않는 점에 유의하세요.
filter(data_frame, column1 == 24)
afinn 객체에는 AFINN 어휘 사전이 담겨 있습니다. huck 객체는 분석을 위해 정돈된 형식으로 변환된 마크 트웨인의 허클베리 핀의 모험입니다.
5400번 줄의 내용은 All the loafers looked glad; I reckoned they was used to having fun out of Boggs. 입니다. 데이터셋에서 불용어와 구두점은 이미 제거된 상태입니다.
이 연습은 강의의 일부입니다
R을 활용한 감성 분석
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# See abbreviated line 5400
huck %>% filter(line == 5400)
# What are the scores of the sentiment words?
afinn %>% filter(word %in% c("fun", "glad"))
huck_afinn <- huck %>%
# Inner Join to AFINN lexicon
inner_join(___, by = c("___" = "___")) %>%
# Count by value and line
___(___, ___)