간단한 문제부터 시작하겠습니다. 제가 350 자의 문장을 가지고 문장을 "좋은 기분"양동이 또는 "나쁜 기분"양동이에 넣고 싶다고합시다.기분별로 문장을 버리십시오.
문장을 버킷에 넣을 알고리즘을 설계하는 가장 좋은 방법은 무엇입니까?
간단한 문제부터 시작하겠습니다. 제가 350 자의 문장을 가지고 문장을 "좋은 기분"양동이 또는 "나쁜 기분"양동이에 넣고 싶다고합시다.기분별로 문장을 버리십시오.
문장을 버킷에 넣을 알고리즘을 설계하는 가장 좋은 방법은 무엇입니까?
기분별로 문장을 손으로 분류합니다. 그런 다음 이들을 순진한 Bayes 분류기에 공급합니다. SpamBayes과 같은 것을 시작점으로 사용하십시오.
간단하고 순진한 제안은 먼저 각 문장을 개별 단어로 분할하거나 정규 표현식을 사용하여 "양성"목록 (예 : "좋아요", "행복함", "수 있습니다" ","할 "등)과"부정적인 "목록 ("싫어하다 ","슬프다 ","할 수 없다 ","하지 않는다 "), 각 문장에서 더 널리 퍼진 운동 .
요구 사항 및 데이터 세트에 따라 적절할 수도 있고 Bayesian filtering과 같은 고급 기술을 조사 할 수도 있습니다.
"문제가 아니었다"고 말하면 문제가있는 것입니다. "나쁜"2 개의 단어가 있지만 그것은 정말로 긍정적 인 문장입니다.또한 "끔찍하게 잘못되었습니다"는 나쁜 문장이므로 짝수 = 양수를 수행 할 수 없습니다. – locoboy
나는 모든 경우를 매우 현명한 방법으로 다루겠다고 결코 말하지 않았다. 그것은 그의 데이터 세트에 달려 있으며, 얼마나 많은 시간을 그가 쓰고 싶어하는지에 달려있다. "완벽한 솔루션"에 시간과 노력을 투자 할 가치가 없을 수도 있습니다. –
단어는 물론 단어 쌍, 단어 조합 등을 고려하여 기본적인 아이디어를 만들 수 있습니다. 모든 n에 대해 모든 n 개의 튜플을 고려함으로써 모든 정보를 고려할 수 있습니다. 엄청난 양의 데이터가 없으면 일반적으로 n의 높은 값 (실제로는 쌍 또는 트리플을 넘어)에 대한 많은 정보를 제공하지 않으므로 낮은 값의 n에서 자릅니다. 그러나 Bayes 분류기에서 수행되는 작업과 정확히 동일하므로 작업을 저장하고 기존 작업을 저장하십시오. –
여러 문장의 기계 학습을 시도해보십시오. 기분의 지표로 웃음 등 일부 기능을 사용하십시오. 품질을 관찰하고 기능 세트를 추가/수정하십시오.
문장의 도메인과 필요한 정확도에 따라 매우 어려운 문제 일 수 있습니다. 정서 분석에 관한 많은 학술 논문이 있습니다. 좋은 시작은 here - 짧고 고전적인 종이 일 수 있습니다.
나는 점차 더 나은 분류로 이어질 것 취할 좋을 것 단계 :
손이 일부 문서를 분류하고, 준비가 만든 알고리즘을 훈련하는 데 사용할이. SVM (예 : LibSVM in WEKA 또는 SVMLight 사용)을 사용하는 것이 좋겠지 만 위에 제시된 바와 같이 Naive Bayes 또는 의사 결정 트리도 사용할 수 있습니다.
핸드는 더 많은 문서를 분류하고 unigram 기반 모델에서보다 정교한 모델로 이동합니다. bigram 또는 품사 기반. 이것은 TagHelper tools으로 매우 쉽게 수행 할 수 있습니다. 그러면이 기술을 사용하여 텍스트를 가져와 WEKA 준비 파일로 변환합니다. 이렇게하면 각 용어의 분위기에 일부 상황이 추가됩니다 (예 : "not"및 "bad"대 "bad not").
마지막으로 사용자 정의 규칙과 사전을 추가하여 도메인 특정 지식을 알고리즘에 추가 할 수 있습니다. 그것들은 동일한 분류 엔진이나 추가적인 분류 단계를위한 추가 기능으로 표현 될 수 있습니다.
이것은 Sentiment Analysis이며, 위키 백과 문서에는 사용 가능한 기술에 대한 설명이 잘 나와 있습니다. 한 가지 쉬운 방법은 Google Prediction API을 사용하고 긍정적, 부정적 및 중립적 인 감성 문장 세트로 교육하는 것입니다.
베이즈가 제대로 작동하지 않으면 http://en.wikipedia.org/wiki/C4.5_algorithm을 시도해 볼 수 있습니다. – ldog