2012-01-08 5 views
6

현재 NLTK의 Naive Bayes 분류자를 사용하여 짹짹을 분류하려고합니다. 저는 '$'접두어 (예 : $ AAPL)를 사용하여 특정 주식 기호와 관련된 트윗을 분류합니다. 나는이 블로그 포스트에서 나의 파이썬 스크립트를 기초로 삼았다 : Twitter Sentiment Analysis using Python and NLTK. 지금까지 합리적으로 좋은 결과를 얻었습니다. 그러나 개선의 여지는 많이 있습니다.분류 자 ​​기능 선택 NLTK

내 단어 기능 선택 방법에서 가장 유익한 단어를 선택하기 위해 tf-idf 알고리즘을 구현하기로 결정했습니다. 그러나 이것을 한 후에 나는 결과가 그렇게 인상적이지 않다고 느꼈다.

그런 다음이 블로그에서 기술을 구현했습니다 : Text Classification Sentiment Analysis Eliminate Low Information Features. 결과는 tf-idf 알고리즘으로 얻은 결과와 매우 유사하여 분류기의 '가장 유용한 정보'목록을 더 철저하게 검사 할 수있었습니다. 그때 나는 더 큰 문제가 있음을 깨달았습니다.

짹짹과 실제 언어는 같은 문법과 문구를 사용하지 않습니다. 일반 텍스트에서 tf-idf 또는 불용어를 사용하여 많은 기사와 동사를 선택할 수 있습니다. 그러나 트위터 코퍼스에서는 'the', 'and', 'is'등과 같이 매우 유익하지 않은 단어가 텍스트를 올바르게 분류하는 데 중요한 단어만큼이나 많이 발생합니다. 나는 3 문자 미만의 모든 단어를 제거 할 수는 없습니다. 왜냐하면 어떤 정보가없는 특징은 그보다 크고 유익한 특징은 더 작기 때문입니다.

내가 할 수 있으면 목록을 자주 업데이트해야하므로 불용어를 사용하지 않아도됩니다. 그러나 그것이 나의 유일한 선택이라면, 나는 그것과 함께 가야만 할 것 같아요.

내 질문을 요약하면, 누구든지 하는 방법을 알고 있습니까 트위터 특정 소스에서 가장 유익한 단어를 얻을?

편집 : 나는 세 그룹으로 분류하려고합니다 : 긍정적, 부정적, 중립. 또한, TF-IDF의 경우, 저 스코어 또는 높은 점수의 단어 만 잘라야합니까? 각각의 경우 텍스트 내용의 어휘 중 몇 퍼센트를 기능 선택 프로세스에서 제외시킬 것입니까?

+0

트윗의 코퍼스는 얼마나 큽니까? 어떤 종류의 점수를 받고 있습니까? 또한 Naive Bayes와 다른 분류자를 사용하거나 단어 (예 : 작성자) 이외의 다른 기능을 사용하는 것을 고려 했습니까? –

+0

다른 기능의 사용을 고려하지 않았습니다. 작성자가 너무 다양합니다. 내 코퍼스는 당분간 수 백개의 트윗 일뿐입니다. 점수는 내 테스트 코퍼스의 크기에 따라 (항상 커짐) 0에서 0.3까지 다양합니다. – elliottbolzan

+0

점수에 의해, 나는 당신이 측정하고있는 정확도/F1/의미를 의미했습니다. 더 큰 코퍼스가있는 경우 더 나은 결과를 얻을 수 있습니다. idf가 훨씬 정확해질 수 있습니다. –

답변

3

블로그 포스트는 링크는 show_most_informative_features 방법을 설명 할 수 있지만, NaiveBayesClassifiermost_informative_features 방법을 가지고 그 반환 기능보다는 그들을 인쇄. "the", "and"와 같은 교육 세트 기능을 기반으로 컷오프를 간단하게 설정할 수 있으며 중요하지 않은 다른 기능은 정보 성 측면에서 목록 맨 아래에있게됩니다.

이 접근법은 초과 적용을받을 수 있습니다 (일부 기능은 테스트 세트보다 교육 세트에서 더 중요 할 수 있음). 그러나 이는 교육 세트를 기반으로 기능을 필터링하는 모든 사항에 해당됩니다.

+0

show_most_informative_features 메소드를 의미합니까? 그렇다면 당신의 솔루션은 작동하지만 그게 정확히 제 문제입니다. 분류기의 표준에 따라 'the'가 매우 유익하다는 사실이 밝혀졌습니다. 실제로, 나는 분석하고있는 짹짹에서 그렇게 많이 나타나지 않습니다! – elliottbolzan

+0

"show_most_informative_features"가 아닌 "most_informative_features"를 의미합니다. 차이점은 show_most_informative_features는 알고리즘을 쓸모 없게 만듭니다 (알고리즘에는 쓸모가 없습니다). most_informative_features가 반환합니다 (위에서 링크 된 API 참조). 유익한 것으로 보이는 "the"에 관해서는, 그것은 내가 설명하는 과핑 (overfitting) 인 것처럼 보일 것입니다. 그러나 NLTK가 정보 성이 아닌 "정보 성"을 정량화하는 데 사용하는 잘못된 메트릭과 관련 될 수도 있습니다. 중요한 질문 : 몇 개의 분류가 있습니까? –

+0

약 200 개의 트윗 만 분류했습니다. NLTK의 정보 획득 방법이 나쁘기 때문에 블로그 게시판에 나온 정보를 사용하여 도움을 받았다면 어떻게해야합니까? – elliottbolzan

관련 문제