Skip to content

🎭 λ‹€μŒ(Daum) λ‰΄μŠ€ ν”Œλž«νΌμ—μ„œ μˆ˜μ§‘ν•œ λŒ“κΈ€ 데이터에 λŒ€ν•œ 6가지 감정 뢄석

Notifications You must be signed in to change notification settings

woodongk/news-comments_emotion_classification-CNN-tensorflow

Repository files navigation

Open In Colab

λ‰΄μŠ€ λŒ“κΈ€ 감정 λΆ„λ₯˜ λͺ¨λΈ

  • λ‹€μŒ(Daum) λ‰΄μŠ€ ν¬νƒˆμ—μ„œ μˆ˜μ§‘ν•œ λŒ“κΈ€ 데이터 2,393,070κ°œμ— λŒ€ν•œ 6가지 감정 뢄석
  • 2018λ…„ KHCI ν•™νšŒ Best Poster Award
  • 2018λ…„ ν•œκ΅­μ°¨μ„ΈλŒ€μ»΄ν“¨νŒ…ν•™νšŒ 졜우수 λ…Όλ¬Έ μ„ μ •

Requirement

  • tensorflow 2.4.1
  • keras 2.4.0
  • gensim 3.8.1
  • konlpy 0.5.2

1. 데이터 μˆ˜μ§‘ 및 μ „μ²˜λ¦¬

  • λ‰΄μŠ€ 데이터 크둀링
  • λ‰΄μŠ€μ˜ λŒ“κΈ€ λ°μ΄ν„°λ‘œ word embedding model λ§Œλ“€κΈ°
    • λŒ“κΈ€ 토큰화 and νŠΉμ • ν’ˆμ‚¬λ§Œ μΆ”μΆœ
    • konlpy Twitter (Okt) νŒ¨ν‚€μ§€ κΈ°μ€€ ['Noun', "Verb", 'Adjective', "Adverb", "Determiner", "Exclamation", "Emotion"]
  • λ™μΌν•œ λ°μ΄ν„°λ‘œ word2vec ν•™μŠ΅
  • [Code]

2. λŒ“κΈ€μ— 감정 λ ˆμ΄λΈ” λΆ€μ—¬ν•˜κΈ°

초기 λ²„μ „μ˜ μ—°κ΅¬μ—μ„œλŠ” ν¬λΌμš°λ“œ μ†Œμ‹±μ„ ν†΅ν•œ 감정 λ ˆμ΄λΈ” μž‘μ—…μ„ ν•˜μ˜€μ§€λ§Œ, ν¬λΌμš°λ“œμ†Œμ‹± 방법은 연ꡬλ₯Ό ν™•μž₯μ‹œν‚€κΈ°μ— 어렀움이 μ»€μ„œ 이후 감정사전을 ν†΅ν•œ λ ˆμ΄λΈ” 방법을 이용.

  • (참고용) ν¬λΌμš°λ“œ μ†Œμ‹±μ— μ‚¬μš©λœ 감정 라벨 κΈ°μ€€

    1. 감정동사 434개의 λͺ©λ‘μ„ 19κ°€μ§€μ˜ κ°μ •μœΌλ‘œ λΆ„λ₯˜ν•œ λ…Όλ¬Έκ³Ό Word2Vec을 λ°”νƒ•μœΌλ‘œ 우리만의 labeling λΆ„λ₯˜ 기쀀을 λ§Œλ“€μ—ˆλ‹€.

    2. [기쁨, μŠ¬ν””, λ†€λžŒ, 곡포, 혐였, λΆ„λ…Έ] 6가지 감정에 λŒ€ν•œ κΈ°μ€€ 틀을 μœ„ νŽ˜μ΄μ§€μ— λ§Œλ“€μ–΄ λ†“μ•˜κ³ , μ € κΈ°μ€€ 틀을 λ°”νƒ•μœΌλ‘œ λŒ“κΈ€μ„ 6가지 κ°μ •μœΌλ‘œ labeling ν•œλ‹€.

    3. One label둜 annotation ν•œλ‹€. (ν•œ λŒ“κΈ€μ—μ„œ λ‹€μˆ˜μ˜ 감정 λŠκ»΄μ Έλ„ ν•œ 가지 κ°μ •μœΌλ‘œ annotate)

    4. μ΅œλŒ€ν•œ 6가지 κ°μ •μœΌλ‘œ λΆ„λ₯˜ν•œλ‹€. (κΈ°μ¨μ΄λ‚˜ 혐였둜 label λͺ°λ¦¬μ§€ μ•Šκ²Œ)

    5. κ·ΈλŸ¬λ‚˜ 감정 label annotation 을 ν•˜λ‹€ 보면 6κ°€μ§€μ˜ κ°μ •μœΌλ‘œ λšœλ ·ν•˜κ²Œ λΆ„λ₯˜ν•  수 μ—†λŠ” κ²½μš°κ°€ μ‘΄μž¬ν•œλ‹€.

      • λ‹€μˆ˜μ˜ 감정이 느껴질 경우/ νŠΉμ •ν•œ ν•œ 가지 κ°μ •μœΌλ‘œ λΆ„λ₯˜ν•˜κΈ° νž˜λ“  경우

        • 뢄노와 ν˜μ˜€κ°€ 언어적 νŠΉμ„±μ—μ„œ 많이 겹치기 λ•Œλ¬Έμ—, labeling을 ν•˜λ‹€ 보면 λͺ…ν™•ν•˜κ²Œ 두 감정이 ꡬ뢄이 λ˜μ§€ μ•ŠλŠ” κ²½μš°κ°€ λ‹€μˆ˜ 쑴재. λ”°λΌμ„œ 뢄노와 혐였의 ꡬ뢄을 λͺ…ν™•νžˆ ν•˜κΈ° μœ„ν•΄ λŒ“κΈ€μ—μ„œ {μš•, κ³Όκ²©ν•œ 단어, 곡격적인 단어, 비속어}κ°€ λ‚˜νƒ€λ‚  μ‹œμ—λŠ” λΆ„λ…Έ κ·Έ μ™Έμ—λŠ” 혐였둜 labelingν•œλ‹€.
        • 비ꡐ적 ν‘œλ³Έ κ°œμˆ˜κ°€ λ§Žμ€ [기쁨, λΆ„λ…Έ, 혐였]와 [μŠ¬ν””, λ†€λžŒ, 곡포]이 λ™μ‹œμ— 느껴질 경우 [μŠ¬ν””, λ†€λžŒ, 곡포]의 κ°μ •μœΌλ‘œ labeling ν•œλ‹€. ([μŠ¬ν””, λ†€λžŒ, 곡포]의 ν‘œλ³Έ κ°œμˆ˜κ°€ μƒλŒ€μ μœΌλ‘œ λΆ€μ‘±)
      • 6 가지 κ°μ •μœΌλ‘œ labelingν•  수 μ—†λŠ”, 감정을 νŒλ‹¨ν•˜κΈ° λΆˆκ°€λŠ₯ν•œ λŒ“κΈ€μ€ λ”°λ‘œ β€˜7β€™μœΌλ‘œ labelingν•œλ‹€.

          (a) μžμ‹ μ˜ 의견 
        
          	μ˜ˆμ‹œ 1) μ‘°λ§Œκ°„ Bada tv μ—μ„œ λ΄…μ‹œλ‹€. 
          	μ˜ˆμ‹œ 2) νˆ¬ν‘œ 잘 해야지
          	μ˜ˆμ‹œ 3) 씨앗을 뿌렸으면 싹이 λ‚˜κ³  꽃이 ν”Όκ³  열맀λ₯Ό λ§ΊλŠ” 건 순리이고 진리이닀
          	μ˜ˆμ‹œ 4) 50λŒ€ 6070 λŒ€λ„ λ§ˆμ°¬κ°€μ§€
        
          (b) μ •μ±… μ œμ‹œ
        
          	μ˜ˆμ‹œ 1) 주거용으둜 ν•œμ§‘ μ†Œμœ ν•œ μ‚¬λžŒμ€ μž¬μ‚°μ„Έ 내리고 두 채 이상 μ†Œμœ ν•œ μ‚¬λžŒμ€ μ„ΈκΈˆ 더 λ‚΄κ²Œ ν•˜μ‹œκΈΈ.... λ”μš± 더 κ°•ν•œ 법을 λ§Œλ“€μ–΄μ•Ό ν•©λ‹ˆλ‹€, 
          	μ˜ˆμ‹œ 2) 쀑μž₯κΈ°μ μœΌλ‘œλŠ” (λ³΄μœ μ„Έ 인상)으둜 갈 μˆ˜λ°–μ— 없을 것이닀.   뢀동산 μ—…κ³„μ—μ„œλŠ” 양도세 쀑과세가 μ μš©λ˜λŠ” λ‚΄λ…„ 4μ›” 이후가 될 κ°€λŠ₯성이 λ†’λ‹€λŠ” 전망이 λ‚˜μ˜¨λ‹€. 양도세 쀑과세 방침에도 λΆˆκ΅¬ν•˜κ³  λ‹€μ£Όνƒλ³΄μœ μžλ“€μ΄ 집을 내놓지 μ•Šμ„ 경우 (λ³΄μœ μ„Έ 인상) μΉ΄λ“œλ₯Ό κΊΌλ‚Ό κ°€λŠ₯성이 λ†’λ‹€κ³  λ³΄λŠ” 것이닀."  닀주택 νˆ¬κΈ°κ΅°μ— λŒ€ν•œ (μ’…λΆ€μ„Έ 인상)이 μ‹œκΈ‰ν•˜λ‹€.
          	μ˜ˆμ‹œ 3) 뢀동산 μ•ˆμ •λŒ€μ±…μ€ 2채이상 λ³΄μœ ν•˜λ©΄ λ³΄μœ μ„Έ 과세해야함 무쑰건 이유뢈문 κ΅­λ―Όλ“€ 90% 이상 μ΄μ œλ„μ—λŠ” μ°¬μ„±ν•  κ²ƒμž„ 
        
          (c) 아무 의미 없이 적은 λŒ“κΈ€ 
        
          	μ˜ˆμ‹œ 1) κ²½μ°° μ—¬μž
          	μ˜ˆμ‹œ 2) ν•˜νŠΈ?
        
      • ν•œ λŒ“κΈ€μ— 극단적인 두 가지 감정이 λŠκ»΄μ§€λŠ” λŒ“κΈ€ (λΆ„λ…Έ, 기쁨)

          μ˜ˆμ‹œ 1) 뭐든 잘됐으면 μ’‹κ² λ‹€. μ € μ—¬μžλ³΄λ‹€ 더 λ…Έλ ₯ν•˜λ©° μ‚΄κΈ°λ‚˜ν•˜λƒ μ•…ν”ŒλŸ¬λ“€μ•„ 
          μ˜ˆμ‹œ 2) λ°±λ‚  그런 μ†Œλ¦¬ 해봐야 μ†Œμš©μ—†μŠ΅λ””λ‹€. μ§€λ‚œ 2012λ…„ 우리 지역과 λ˜‘κ°™μ€ 일이 κ·Έμͺ½μ—μ„œ λ²Œμ–΄μ‘Œλ„€μš”. κ·Έλ•Œ μ‹œλŠ” μ œλŒ€λ‘œ λŒ€μ‘ λͺ»ν–ˆλ‹€λŠ” 것, κ·Έλž˜μ„œ μΈμž¬λΌλŠ” 것 μ‹œλ―Ό λ‹€ μ•„λŠ”λ° κ·Έλž˜μ„œ μ—„μ²­ μˆ˜ν•΄λ₯Ό μž…μ—ˆλŠ”λ° 법에 ν˜Έμ†Œν•΄ λ΄€μ§€λ§Œ λ²•μ›μ—μ„œλŠ” μ²œμž¬μ§€λ³€μ΄λΌκ³  κ²°λ‘  λ‚˜κ³  μ‹œλŠ” μˆ˜ν•΄λ₯Ό μ‹¬ν•˜κ²Œ λ‹Ήν•΄ κ³ ν†΅λ°›λŠ” μ‚¬λžŒμ—κ²Œ μ†Œμ†‘λΉ„μš©μ΄ λ°œμƒν–ˆμœΌλ‹ˆ λΉ„μš© 물어내라고 μ²œμ΄λ°±λ§Œμ› 인가 λ°›μ•„κ°”μŠ΅λ‹ˆλ‹€. 정말 μ•ˆνƒ€κΉŒμš΄ μΌμ΄μ§€λ§Œ 잘 이겨 λ‚˜κ°€μ‹œκΈΈ λ°”λžλ‹ˆλ‹€.
        
  • 감정사전

    • μ°Έκ³ λ¬Έν—Œ : 홍쒅선, μ •μ—°μ£Ό. (2009). κ°μ •λ™μ‚¬μ˜ λ²”μ£Ό κ·œμ •κ³Ό μœ ν˜• λΆ„λ₯˜. ν•œκ΅­μ–΄ν•™, 45(), 387-420.
    • 감정동사λ₯Ό Ekman 의 6가지 감정(β€˜κΈ°μ¨β€™, β€˜μŠ¬ν””β€™, β€˜ν˜μ˜€β€™, β€™λ†€λžŒβ€™, β€˜κ³΅ν¬β€™, β€˜λΆ„λ…Έβ€™) 으둜 λΆ„λ₯˜ν•˜μ—¬ 감성사전 ꡬ좕 6 emotion : happy, sad, disgust, angry, surprised, fear
    • [Code]

3. Text-CNN λͺ¨λΈ ꡬ좕

  • κΉ€μœ€ κ΅μˆ˜λ‹˜μ˜ 논문을 μ°Έκ³ ν•˜μ—¬ κ΅¬ν˜„

Text-CNN Parameter

- max_sequence_legnth: 20
- num_classes: 6, [happy, sad, disgust, angry, surprised, fear]
- vocab_size: 30000
- embedding_size: 300 (= dimension of word2vec) 
- filter_sizes: [3, 4, 5]
- num_filters: 100

ν•™μŠ΅ 곑선

  • epoch 50
  • νŠΉμ • μ‹œμ  μ΄ν›„λ‘œ val_acc λŠ” μΌμ •ν•˜κ³  val_loss 만 떨어지고 μžˆμœΌλ―€λ‘œ early stopping κ±Έμ–΄ μ˜€λ²„ν• 방지

Reference

About

🎭 λ‹€μŒ(Daum) λ‰΄μŠ€ ν”Œλž«νΌμ—μ„œ μˆ˜μ§‘ν•œ λŒ“κΈ€ 데이터에 λŒ€ν•œ 6가지 감정 뢄석

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages