4-1 Sentiment 코딩 연습을 위한 Imdb 다운로드

in #kr6 years ago

머신 러닝을 Sentiment 분석에 응용해 보자. 지금이야 말로 인터넷 소셜 미디어 시대이기 때문에 사람들의 견해, 검토, 추천사항들이 비즈니스나 정치에 있어서 가치가 넘치는 소스가 되었기에 대단히 효율적으로 그러한 데이터들을 수집하여 분석해 보도록 하자. 이러한 분야는 Natural Language Propcessing 즉 약어로 NLP 분야의 한 분과인 샌티멘트 분석(Sentiment analysis)이라고 칭한다. Sentiment 란 심리, 감정, 정서 내지는 여론이라고 보면 될 것이다. 특히 콘텐츠를 생산한 작가의 자세 내지는 의중 즉 그것들의 양극방향으로의 쏠림에 근거한 문서들을 머신 러닝 알고리듬을 사용하여 분류해보기로 한다.

여타의 머신러닝 처럼 다음과 같이 단계별로 Sentiment 분석을 진행하자.

텍스트형 데이터 준비하고 텍스트 문서로부터 특징 벡터 추출 수립
긍정 또는 부정적인 영화 리뷰 의견 분류가 가능한 머신 러닝 모델ㅇ의 학습
Out of core 학습법 즉 컴퓨터의 메인 메모리 용량을 초과하는 대규모 텍스트 데이터세트에 대한 외부 메모리 알고리듬을 사용한 작업
카테고리 분류작업을 위해 수집된 문서들의 추론에 따른 토픽화

그러한 목적 달성을 위해서 긍정적이거나 혹은 부정적인 50,000개의 영화 리뷰로 이루어진 IMDB 즉 Internet Movie Database를 사용하여 긍적적인 면에서 부정적인 영역에 걸쳐 식별이 가능한 예측 용 코드 즉 predictor를 작성해 보기로 한다. 여기서는 필요한 IMDB는 스태포드대학 서버 주소에서 다운 받을 수 있다.
http://ai.stanford.edu/~amaas/data/sentiment/

noname01.png

윈도우즈 10에서 Sentiment 분석을 위한 폴더를 준비하여 Imdb 파일인 Large Movie Review Dataset v1.0 을 다운로드 받아 압축 해제를 위한 파이선 파일 extract.py를 아나콘다에서 실행시키면 다음과 같이 압축 해제된 폴더가 생성된다.
noname02.png

압축해제를 위한 실행 파일은 다음과 같이 2줄의 명령이면 충분하다. 각각의 명령을 셸(Shell)에서 실행해도 된다.
import tarfile
with tarfile.open('aclImdb_v1.tar.gz', 'r:gz') as tar:tar.extractall()
실행 완료 후 위 그림에서처럼 ‘aclImdb’ 폴더가 생성되었음을 확인하자.
그럼에도 불구하고 이어지는 코딩에서 ‘aclImdb’ 디렉토리를 읽어 들이는데 에러가 발생할 수도 있는데 정확한 원인은 알 수 없으나 이 디렉토리 명에서 3번째 철자를 정확하게 숫자 ‘1’로 다시 바꾸는 작업을 하도록 한다. 겉보기는 숫자 “1‘로 보이는 것이 사실이나 자신의 스파이더 편집기에서 ’1‘ 로 인식할 수 있도록 재입력하여 확인해 두도록 하자.

‘aclImdb’ 디렉토리에 포함되어 있는 폴더 train 과 test에는 neg 폴더와 pos 폴더에 각각 12500개의 텍스트 파일들이 들어 있다. pso 폴더와 neg폴더로 분리되어 있다는 저은 이들이 각각 class를 “1”과 “0” 으로 분류(classification)할 수 있다는 의미이다. 어떤 내용이 들어 있는지 텍스트 파일 내용에서 긍정적인지(positive) 또는 부정적인지(negative)를 판단할 수 있는 단어들의 유무를 살펴보자.
noname03.png

noname04.png

Sort:  

짱짱맨 호출에 응답하였습니다.

카테고리 분류작업을 위해 수집된 문서들의 추론에 따른 토픽화 를 배우고 싶어요. 머신러닝으로 스팀잇 글을 분류하고 싶었는데, 머신러닝에 대한 이해력이 부족해서 공부하다가 말았네요. ㅎㅎ
좋은 자료 공유해주셔서 감사합니다.

"Python Machine Learning "Sebastian Raschka 저서 8장 Applying Machine Learning to Sentiment Analysis 에서 나오는 내용들입니다. 그 책을 검토해 보니 전문 연구가들을 위해 참고문헌 출처를 세밀하게 밝혀 두었습니다. 아울러 코드 전헤를 오픈소스로 제공합니다. 단 좋은 책이긴 한데 읽어 보기는 괴로운 책입니다.
제 역할은 코드기 돌아가도록 손질하여 소개 하는 선 정도 입니다.

Congratulations @codingart! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You published more than 500 posts. Your next target is to reach 550 posts.
You received more than 10000 upvotes. Your next target is to reach 15000 upvotes.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

Are you a DrugWars early adopter? Benvenuto in famiglia!
Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63657.90
ETH 2656.15
USDT 1.00
SBD 2.84