reference
Sentiment Analysis를 위한 Optimizing
sentiment, 감정과 같은 작업의 경우 단어 빈도보다 발생이 더 중요하다
binary NB(Binary multinominal naive bayes)
각 문서 내의 단어 수를 1로 제한한다 (단어 빈도보다 단어의 존재 여부가 더 중요하므로)
Bernoulli Naive Bayes(특징의 존재 여부를 고려)와는 다르다.
Learning $P(c_j)$ 계산
$P(c_j)$은 $c_j$의 사전 확률을 나타내며,
훈련 데이터에서 클래스 $c_j$의 문서 수를 전체 문서 수로 나누어 계산할 수 있다.
$$P(c_j) = \frac{docs_j}{total docs}$$
$P(w_k∣c_j)$ 계산
$P(w_k∣c_j)$는 클래스 $c_j$가 주어졌을 때 단어 $w_k$의 조건부 확률
클래스 $c_j$의 문서에서 단어 $w_k$의 출현 횟수를 클래스 $c_j$의 문서에서 모든 단어의 출현 횟수로 나누어 계산할 수 있다.
$$P(w_k | c_j) = \frac{N_{k,c_j} + 1}{N_{c_j} + |V|}$$
Test Document
- document에서 모든 중복되는 단어를 제거
- NB를 계산
$$c_{NB} = \arg\max_{c_j \in C} P(c_j)\prod_{k \in positions} P(w_k | c_j)$$
Sentiment Classification
Negation 다루는 방법
Negation과 문장부호 사이의 모든 단어 앞에 “NOT_” 추가 (가장 간단한 방법)
“The movie is not great” → "The movie is not NOT_great”
Lexicons 기반 감정 분석
사전에 준비된 word lists를 사용하여 Sentiment 점수를 계산하는 방법
MPQA Subjectivity Cues Lexicon, The General Inquirer, Bing Liu Opinion Lexicon 등
Sentiment Classification에서는 word lists에서 발생하는 단어의 수를 계산하는 특징을 추가해,
모든 Positive 단어, Negative 단어의 특징을 계산한다.
1-2개의 특징만 사용하는 것은 모든 단어를 사용하는 것만큼 좋을 수는 없다.
하지만, training data가 test set을 대표하지 않거나 많이 없는 경우, lexicon features가 도움이 될 수 있다.
Bag of Words (BOW)
단어들의 순서는 전혀 고려하지 않고, 단어들의 출현 빈도(frequency)에만 집중하는 텍스트 데이터의 수치화 표현 방법
문서를 vector로 변환하여, 문서의 각 단어에 점수를 부여하는 식으로 Sentiment Classification을 진행한다.
- "hate" -> bad
- "love" -> good
하지만, "There’s nothing I don’t love about this movie" 라는 단어가 있을 때,
BOW는 해당 문장이 긍정적인 문장임에도 "nothing", "don't"와 같은 부정적인 단어가 포함되어 있기 때문에, 이 문장이 부정적인 것으로 판단한다.
결국, 어떠한 결정을 내리기 위해 서로 다른 feature를 결합해야하는 필요성이 나타난다.
Word2Vec
CBOW나 Skip-gram을 이용하면 단어의 문맥을 고려하여 단어의 벡터 표현을 학습한다.
CBOW (Continuous Bag-of-Words)
단어 임베딩을 빠르게 학습하는 데 사용되는 모델
주변 단어의 임베딩 합을 기반으로 타겟 단어를 예측한다.
Skip-gram
타겟 단어의 임베딩을 사용하여 주변 단어의 확률을 예측한다.
Sentiment Classifiers의 문제점
sentiment classifier는 편향된 데이터로 훈련될 수 있으며, 특정 인구 집단이나 문화적 배경에 대한 편견을 가질 수 있다.
이는 classifier의 성능에 부정적인 영향을 미칠 수 있다.
Model Cards
참고 : https://arxiv.org/abs/1810.03993
훈련된 기계 학습 모델과 함께 제공되는 짧은 문서로, 다양한 조건에서의 벤치마크 평가를 제공
인종, 지리적 위치, 성별, 피부 유형 등 다양한 문화적, 인구학적 등의 그룹과 교차 그룹에 걸쳐 모델의 성능을 평가
결국 Model Cards의 목적은 기계 학습 모델의 투명성을 높이고, 사용자가 모델을 올바르게 사용할 수 있도록 돕는 것이라 할 수 있다.
Probabilities to Sentences
Count-based Language Models
Jane went to the store . (high score)
store to Jane went the . (low score)
위와 같이 score를 주는 방법으로 문장의 확률을 계산할 수 있다.
$$P(\text{Jane went to the store}) = P(\text{Jane}) \times P(\text{went}|\text{Jane}) \times P(\text{to}|\text{Jane went}) \times P(\text{the}|\text{Jane went to}) \times P(\text{store}|\text{Jane went to the})$$
문제점
- 유사한 단어들 간의 연관성을 공유할 수 없다.
"good"과 "great"은 의미가 유사함에도 서로 독립적으로 취급된다. - long-distance dependencies를 처리하는데 어려움이 있다. 이는 문장에서 떨어져 있는 단어들 사이의 의미적 관계를 의미하며,
"I dropped my phone and it broke” 라는 문장에서 "dropped"와 “broke” 사이에는 의미적 관계 ("dropped"가 발생한 결과로 "broke"가 발생한다) 가 있음에도 Count-based Model에서는 쉽게 학습할 수 없다.
Count-based Language Models의 문제점 해결
Neural Language Models
CNN의 약점
short-distance의 feature extractors에 유용하다
문장에 대한 long-distance dependencies을 파악하기 어렵다
RNN의 약점
각 시간 단계에서 정보를 처리하므로 정보가 간접적으로 전달(long-distance dependencies 처리 어려움)되며,
각 시간 단계의 출력이 이전 시간 단계의 출력에 영향을 받기 때문에, 계산 과정이 복잡하여 학습이 어렵다.
각 시간 단계에서 정보를 처리하므로, 처리 속도 또한 느리다.
결론, Neural Language Models는 시간적인 정보와 공간적인 정보를 모두 처리할 수 있다.
'🤖 ai logbook' 카테고리의 다른 글
[NLP/자연어처리] seq2seq 인코더-디코더 및 어텐션 모델 (Seq2Seq Encoder-Decoder & Attention Model) (0) | 2023.07.04 |
---|---|
[NLP/자연어처리] 자연어 처리에서의 순환 신경망 (RNN in Natural Language Processing) (0) | 2023.07.01 |
[cs231n/Spring 2023] Lecture 4: Neural Networks and Backpropagation (0) | 2023.07.01 |
[NLP/자연어처리] 정보 검색 & 단어 임베딩(Information Retrieval & Word Embedding) (0) | 2023.07.01 |
[NLP/자연어처리] 언어 모델에서의 나이브베이즈 (Naive Bayes as a Language Model) (0) | 2023.06.28 |
[NLP/자연어처리] 언어 모델링(Language Modeling) (0) | 2023.06.28 |
[NLP/자연어처리] 단어 토큰화(Word Tokenization) (0) | 2023.06.27 |
[cs231n/Spring 2023] Lecture 3: Regularization and Optimization (0) | 2023.06.26 |