Python에서 Twitter에 대한 감정 분석 [닫기]


87

나는 Textual Sentiment Analysis ( http://en.wikipedia.org/wiki/Sentiment_analysis ) 의 오픈 소스 구현, 가급적 Python으로 구현을 찾고 있습니다. 내가 사용할 수있는 오픈 소스 구현에 익숙한 사람이 있습니까?

저는 트위터에서 "youtube"와 같은 검색어를 검색하고 "행복한"트윗과 "슬픈"트윗을 계산하는 애플리케이션을 작성 중입니다. 저는 Google의 appengine을 사용하고 있으므로 파이썬에 있습니다. 트위터에서 반환 된 검색 결과를 분류 할 수 있기를 원하며 파이썬으로이를 수행하고 싶습니다. 나는 지금까지 그러한 감정 분석기를 찾을 수 없었으며, 특히 파이썬에서는 찾을 수 없었다. 내가 사용할 수있는 오픈 소스 구현에 대해 잘 알고 있습니까? 바람직하게는 이것은 이미 파이썬으로되어 있지만 그렇지 않다면 파이썬으로 번역 할 수 있기를 바랍니다.

내가 분석하는 텍스트는 매우 짧고 트윗입니다. 이상적으로이 분류기는 이러한 짧은 텍스트에 최적화되어 있습니다.

BTW, 트위터는 검색에서 ":)"및 ":("연산자를 지원합니다.이 연산자는이 작업을 목표로하지만 안타깝게도 그들에 의해 제공되는 분류는 그다지 좋지 않아서 제가 직접 시도해 볼 수있을 것이라고 생각했습니다. .

감사!

BTW, 초기 데모가 여기에 있고 지금까지 내가 가지고있는 코드는 여기에 있으며 관심있는 개발자와 함께 오픈 소스로 만들고 싶습니다.

답변:


44

대부분의 이러한 종류의 응용 프로그램에서는 통계적 분류 작업을 위해 많은 자체 코드를 롤링해야합니다. Lucka가 제안했듯이 NLTK는 Python의 자연어 조작을위한 완벽한 도구입니다. 단, 목표가 라이선스의 비 상업적 특성을 방해하지 않는 한. 그러나 모델링을위한 다른 소프트웨어 패키지를 제안합니다. Python에 사용할 수있는 강력한 고급 기계 학습 모델을 많이 찾지 못 했으므로 쉽게 협력 할 수있는 독립 실행 형 바이너리를 제안 할 것입니다.

Python과 쉽게 인터페이스 할 수있는 The Toolkit for Advanced Discriminative Modeling에 관심 이있을 수 있습니다. 이것은 자연어 처리의 다양한 영역에서 분류 작업에 사용되었습니다. 또한 다양한 모델을 선택할 수 있습니다. Naive Bayes 분류기를 구현하는 데 이미 익숙한 경우 최대 엔트로피 분류로 시작하는 것이 좋습니다. 그렇지 않은 경우 기계 학습 작업으로 통계 분류에 대한 적절한 이해를 얻기 위해 그것을 조사하고 코딩하는 것이 좋습니다.

텍사스 대학교 오스틴 전산 언어학 그룹은 대부분의 프로젝트에서이 훌륭한 도구를 사용한 수업을 개최했습니다. Computational Linguistics II 에 대한 과정 페이지를 살펴보면 작동 방법과 이전에 제공 한 응용 프로그램에 대한 아이디어를 얻을 수 있습니다.

같은 맥락에서 작동하는 또 다른 훌륭한 도구는 Mallet 입니다. Mallet의 차이점은 의사 결정 트리와 같은 더 많은 문서와 더 많은 모델이 있으며 Java로되어있어 속도가 느려진다는 것입니다. Weka 는 그래픽 자료를 포함하는 하나의 큰 패키지에있는 다양한 기계 학습 모델의 전체 제품군이지만 실제로는 대부분 교육 목적을위한 것이며 실제로 프로덕션에 넣을 것이 아닙니다.

작업에 행운을 빕니다. 정말 어려운 부분은 아마도 모델이 학습 할 '시드 세트'를 분류하는 데 필요한 지식 엔지니어링의 양일 것입니다. 이진 분류 (행복 vs 슬픔)를 수행하는지 또는 전체 범위의 감정 (더 많은 것을 필요로 함)을 수행하는지에 따라 상당히 크기가 커야합니다. 테스트를 위해이 엔지니어링 된 데이터 중 일부를 유지하거나 10 배 또는 1 개 제거 테스트를 실행하여 실제로 예측을 잘 수행하고 있는지 확인하십시오. 그리고 무엇보다도 재미있게 보내십시오! 이것은 제 생각에 NLP와 AI의 가장 좋은 부분입니다.


감사. 저는 밤에만이 작업을하므로 시간이 좀 걸리 겠지만 준비가되면 업데이트를 게시하겠습니다
Ran

7
NLTK 코드는 nltk.org/faq에
amit

1
왜 Weka가 교육 목적을위한 것이라고 말합니까? pentaho BI 제품군의 일부가 아닙니까? 그리고 pentaho는 기업에 서비스를 제공합니다.
Swapnil

77

좋은 성과 있길 바래요.

감정은 엄청나게 맥락 적이며, 트윗 문화는 대부분의 트윗에 대한 맥락제공하지 않기 때문에 문제를 더욱 악화 시킵니다. 트위터의 요점은 매우 짧은 메시지에 의미있는 의사 소통을 담기 위해 엄청난 양의 공유 된 "실제 세계"컨텍스트를 활용할 수 있다는 것입니다.

그들은 비디오가 나쁜 말한다면, 그 평균 나쁜, 또는 않는 나쁜 ?

어느 날 언어학 교수가 그녀의 수업에서 강의를하고있었습니다. "영어에서는 이중 부정이 긍정을 형성합니다. 러시아어와 같은 일부 언어에서는 이중 부정이 여전히 부정입니다. 그러나 이중 긍정이 부정을 형성 할 수있는 언어는 없습니다."

방 뒤에서 "그래... 맞아"라는 목소리가 들려왔다.


4
유용한 답변이있어 기쁩니다. 그렇지 않으면 해당 견적에 대해 찬성해야 할 수도 있습니다. :-)
Ben Blank

2
나는 인용 "예, 예"라고 생각 - 시드니 모겐 베서에서
스콧 와인 스타 인

19

귀하의 제안에 감사드립니다. 정말 유용했습니다! 결국 여기 에서 빌린 Naive Bayesian 분류기를 사용하게 되었습니다 . 좋은 / 나쁜 키워드 목록을 제공하는 것으로 시작한 다음 사용자 피드백을 사용하여 "학습"기능을 추가했습니다. 꽤 잘 작동하는 것으로 밝혀졌습니다.

블로그 게시물 에서와 같이 내 작업의 전체 세부 사항 .

다시 한 번, 귀하의 도움이 매우 유용했기 때문에 감사합니다!


1
블로그 게시물 링크가 더 이상 작동하지 않습니다. 업데이트 할 수 있습니까?
Petrutiu Mihai 2014

안녕하세요 @PetrutiuMihai 실제로 그 블로그가 삭제되었습니다. 그러나 그것은 꽤 오래된 것입니다. 오늘 현재로서는 연구의 앞 부분이 아니기 때문에 많은 것을 놓치지 않을 것입니다. (
Ran

14

감정으로 표시된 단어 목록을 구성했습니다. 여기에서 액세스 할 수 있습니다.

http://www2.compute.dtu.dk/pubdb/views/edoc_download.php/6010/zip/imm6010.zip

내 블로그에서 짧은 Python 프로그램을 찾을 수 있습니다.

http://finnaarupnielsen.wordpress.com/2011/06/20/simplest-sentiment-analysis-in-python-with-af/

이 게시물은 Twitter뿐만 아니라 단일 문장으로 단어 목록을 사용하는 방법을 보여줍니다.

단어 목록 접근 방식에는 한계가 있습니다. "새로운 ANEW : 마이크로 블로그의 감정 분석을위한 단어 목록 평가"기사에서 내 단어 목록의 한계에 대한 조사를 찾을 수 있습니다. 그 기사는 내 홈페이지에서 볼 수 있습니다.

unicode(s, 'utf-8')코드에 a 가 누락되어 있음을 유의하십시오 (교육적인 이유로).


"Posterous Spaces는 더 이상 사용할 수 없습니다."어딘가에 파이썬 코드를 게시 할 수 있습니까?
andilabs

1
주목 해 주셔서 감사합니다. 이제 포스트 링크를 블로그를 이동 한 Wordpress 링크로 변경했습니다.
Finn Årup Nielsen 2013-08-30

감정을 표현한 실험에 대해 말씀해 주시겠습니까? 정밀함, 분류의 회상이 무엇인지 의미합니다.
andilabs

1
여기에 몇 가지 평가에 대한 링크가 있습니다. neuro.compute.dtu.dk/wiki/AFINN#Evaluation 정밀도, 재현율 및 분류 측면에서 성능을 직접 평가하지 않았습니다. 내가 한 것은 Mislove의 Amazon Mechanical Turk 트윗 레이블과 순위 상관 관계였습니다.
Finn Årup Nielsen

10

많은 연구 논문에서 정서 분석의 좋은 출발점은 형용사 (예 : 긍정적 인 형용사 또는 부정적인 형용사)를 살펴 보는 것입니다. 짧은 텍스트 블록의 경우 이것은 거의 유일한 옵션입니다 ... 전체 문서 또는 문장 수준 분석을 보는 논문이 있지만 트윗은 매우 짧습니다 ... 따라서 가장 좋은 방법은 이러한 연구 논문 중 하나를 찾아서 긍정적 / 부정적인 형용사 데이터 세트를 가져 오는 것입니다.

지금까지 언급 한 바와 같이 감정은 도메인에 따라 다르며 범용 데이터 세트로 높은 수준의 정확성을 얻는 것이 어려울 수 있습니다.

행운을 빕니다.


젠장, 내가 당신을 선점하려고 했어요.
Dana the Sane

4

나는 당신이 원하는 것을 찾기가 어려울 것이라고 생각합니다. 내가 아는 가장 가까운 것은 LingPipe 입니다. LingPipe 는 일부 감정 분석 기능 을 가지고 있으며 제한된 종류의 오픈 소스 라이선스로 사용할 수 있지만 Java로 작성되었습니다.

또한 감정 분석 시스템은 일반적으로 평균 트윗과 크게 다른 제품 / 영화 리뷰 데이터에 대한 시스템 교육을 통해 개발됩니다. 동일한 주제에 대한 여러 문장이있는 텍스트에 최적화 될 것입니다. 피츠버그 대학에서 제공하는 것과 같은 감정 용어 사전을 기반으로 규칙 기반 시스템을 스스로 생각해내는 것이 더 나을 것이라고 생각합니다 .

정말 아름다운 인터페이스 (및 twitrratr ) 로 유사한 아이디어를 구현하려면 We Feel Fine 을 확인하십시오 .




1

나는 우연히 자연 언어 툴킷 얼마 전에. 아마 시작점으로 사용할 수 있습니다. 또한 많은 모듈과 애드온이 있으므로 이미 비슷한 것이있을 수 있습니다.


0

다소 이상한 생각 : Twitter API를 사용하여 많은 트윗을 다운로드 한 다음 이모티콘을 사용하여 해당 집합의 하위 집합을 분류 할 수 있습니다. ":)", ":]", ": D"등에 대한 긍정적 인 그룹 하나 및 ":("등이 포함 된 다른 제외 그룹)

조잡한 분류가 있으면 빈도 또는 ngram 분석 또는 해당 라인을 따라 더 많은 단서를 검색 할 수 있습니다.

어리석은 것처럼 보일 수 있지만 이에 대한 진지한 연구가 수행되었습니다 ( "감정 분석"및 이모티콘 검색). 볼만한 가치가 있습니다.



0

Twitter Sentiment Analyis를 처음부터 코딩하는 데 관심이있는 사람들을 위해 GitHub에 Python 코드 가 포함 된 Coursera 과정 " 데이터 과학 "이 있습니다 (과제 1- 링크의 일부로 ). 감정은 AFINN-111의 일부입니다 .

예를 들어 여기에서 작동하는 솔루션을 찾을 수 있습니다 . AFINN-111 감정 목록 외에도 pos / neg 점수가있는 트윗의 용어 빈도를 기반으로 동적 용어 목록을 작성하는 간단한 구현이 있습니다 ( 여기 참조 ).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.