1. 학습
  2. /
  3. 강의
  4. /
  5. R을 활용한 감성 분석

Connected

연습 문제

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. 입니다. 데이터셋에서 불용어와 구두점은 이미 제거된 상태입니다.

지침 1/3

undefined XP
    1
    2
    3
  • 코드를 실행하여 5400번 줄을 확인하고, 일부 단어의 감성 점수를 살펴보세요.
  • huck을 afinn 어휘 사전에 inner_join()으로 결합하세요.
    • huck은 이미 파이프로 연결되어 있으므로, 어휘 사전만 추가하면 됩니다.
    • 텍스트의 term 열과 어휘 사전의 word 열을 기준으로 조인하세요.
  • count()를 value와 line에 사용하여 그룹별 관측값을 집계하세요.
    • 결과를 huck_afinn에 할당하세요.