알고리즘 진행상황
기존의 나이브 베이즈의 성능으로는 평균 정확도 0.85의 성능을 보임 문장의 전처리나 다른 방식을 사용해 전체 평균 정확도 0.9까지 높이는 걸로 목표
기존에 있던 카테고리말고도 추가 카테고리를 넣어서 데이터의 양을 늘렸다.

마찬가지로 같은 코드로 돌렸더니 아래와 같은 정확도가 나왔음
Counter vectorizer사용

Tfidf 의 방식을 적용해보았더니 아래와 같은 정확도로 나왔다.

Tfidf를 본 결과 아예 구분을 못하는 경우(ruby)도 존재하여 일단은 CountVectorize 를 사용하기로 했다
c++ 이랑 c#에서 엄청 낮은 정확도로 인해 전체 정확도가 많이 떨어져있는데(c# 0.07, c++ 0.14) 아마도 csv를 불러올때 특수문자를 빼서 #, ++ 같은 기호가 사라진걸로 추측되어 특수문자 + 숫자를 빼서 그런걸로 보임
여전히 특수문자 처리를 해도 수치가 나아지지 않아 데이터를 직접 확인

대부분의 데이터가 우리가 원하는 코드와 관련없는 것으로 판단
애초에 크롤링 할때 c언어로 크롤링을 해야된다고 판단되어 다시 크롤링(아래의 사진은 크롤링해서 만든 dataframe이다)


전체 갯수는 줄어들었지만 그래도 충분한 양이라 판단되어 진행
결과는 아래와 같이 나왔다.
전체 평균이 약 0.77로 나왔다.
성능을 끌어 올려서 목표치는 0.9가 아닌 0.85로 수치 재조정
알고리즘 성능 개선 konlpy에 있는 kkma를 통해 문장에서 명사, 외국어 명사를 추출 & 토큰화 시켜 성능을 끌어올림.
기존에 쓰던 MultinomialNB 대신에 ComplementNB를 사용해보았다
https://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.ComplementNB.html#sklearn.naive_bayes.ComplementNB
Rennie, J. D., Shih, L., Teevan, J., & Karger, D. R. (2003). Tackling the poor assumptions of naive bayes text classifiers. In ICML (Vol. 3, pp. 616-623). https://people.csail.mit.edu/jrennie/papers/icml03-nb.pdf
기존의 나이브 베이즈 경우에는 feature들이 독립적이여서 다른 분류 결과에 영향을 미치지 않는다는 상당한 나이브한 조약이 걸려있다.
위 논문에서는 주어진 클래스를 제외한 나머지 클래스에서 tfidf를 통해 가중치를 만들어 확률을 보정하는 방식을 추가
결과는 아래와 같이 나왔다. 84.6%





