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

Connected

연습 문제

스트레스 가득!

이 연습 문제에서는 특정 텍스트에 맞게 부정 단어 목록을 조정한 다음, 기본 polarity() 점수와 커스텀 점수를 비교해 봅니다.

Twenty One Pilots의 인기곡 "Stressed Out"의 가사를 살펴보면, 이 노래가 젊은 시절의 향수를 담고 있다는 것을 알 수 있습니다. 대부분의 사람들은 이 곡의 감성(polarity)이 부정적이라고 느낄 것입니다. 가사 전반에 걸쳐 스트레스, 두려움, 그리고 가식에 대한 표현이 반복됩니다.

기본 주관성 어휘 사전과 커스텀 사전을 사용해 가사를 비교해 봅시다.

먼저, key.pol 주관성 어휘 사전에 추가하려는 단어가 이미 포함되어 있는지 확인해야 합니다. 이를 확인하는 방법 중 하나는 grep() 함수를 사용하는 것입니다. grep() 함수는 검색 패턴과 일치하는 문자가 포함된 행을 반환합니다. 인덱싱에 활용하는 예시는 다음과 같습니다.

data_frame[grep("search_pattern", data_frame$column), ]

슬랭이나 새로운 단어가 key.pol 어휘 사전에 없는 것을 확인한 후, 해당 단어를 추가해야 합니다. 아래 코드는 sentiment_frame()을 사용하여 새로운 어휘 사전을 구성합니다. sentiment_frame()은 기존 긍정 단어 벡터인 positive.words를 첫 번째 인수로 받습니다. 이어서 기존 negative.words에 부정적인 슬랭으로 간주되는 "smh"와 "kappa"를 연결합니다. 긍정·부정 가중치를 직접 지정할 수도 있지만, 기본값이 각각 1과 -1이므로 아래 예시에서는 생략합니다.

custom_pol <- sentiment_frame(positive.words, c(negative.words, "hate", "pain"))

이제 polarity()를 적용할 준비가 되었습니다. 이때 커스텀 주관성 어휘 사전이 참조됩니다!

지침

100 XP

Twenty One Pilots의 노래 "Stressed Out" 가사를 담은 stressed_out이 미리 준비되어 있습니다.

  • polarity()에 stressed_out을 적용하여 기본 점수를 확인하세요.
  • key.pol에서 "stress"가 포함된 단어를 확인하세요. grep()을 사용해 x 열에서 검색하여 데이터 프레임을 인덱싱하세요.
  • custom_pol을 새로운 감성 데이터 프레임으로 생성하세요.
    • sentiment_frame()을 호출하고, 새로운 단어를 추가하지 않고 positive.words를 첫 번째 인수로 전달하세요.
    • 다음으로, c()를 사용해 negative.words에 새로운 단어 "stressed"와 "turn back"을 결합하세요.
  • stressed_out에 polarity()를 다시 적용하되, 추가 파라미터 polarity.frame = custom_pol을 지정하여 새로운 단어가 점수에 어떤 영향을 미치는지, 그리고 노래를 얼마나 더 정확하게 반영하는지 비교해 보세요.