이번 시간에는 워드 클라우드를 그려보고자 합니다.
워드 클라우드는 빈출된 단어들을 시각적으로 보여주면서 대중 혹은 다수의 의견의 분포를
직관적으로 가늠할 수 있다는 장점이 있습니다.
이 장점에 맞추어 워드 클라우드에 등장하는 단어들은 명사와 형용사로 제한됩니다.
왜냐하면 부사나 조사 등등은 특정한 의미를 담고 있지 않기 때문입니다.
---------------------------------------------------
우선 워드 클라우드로 표현하기 위한 텍스트 파일을 구해 봅시다.
크롤링 시간에 만들었던 다음 영화 네티즌 댓글 죽은 시인의 사회 파일을 저는 사용하도록 하겠습니다.
우선 필요한 라이브러리를 가져와봅시다.
1 2 3 4 5 6 7 8 | from konlpy.tag import Twitter file = open(data1.txt, 'r') lines = file.readlines() file.close() | cs |
그리고 사용하고자 하는 텍스트 파일을 읽기('r') 상태로 가져와서 리스트 형태로 lines에 저장해둡니다.
준비 끝!
그럼 해당 파일의 텍스트를 모두 가져온 것입니다.
다음 과정으로 데이터 전처리를 해보도록 하겠습니다.
앞서 이야기 했듯이 워드 클라우드를 그리기 위한 낱말은 명사와 형용사로 한정되기 때문에,
텍스트에서 명사와 형용사만 뽑아내야 합니다.
일단 텍스트 문서 내에 있는 모든 말을 형태소 단위로 쪼개어 보도록 하겠습니다.
1 2 3 4 5 6 7 | twitter = Twitter() sentences_tag = [] for sentence in lines: sentences_tag.append(twitter.pos(sentence)) print(sentences_tag) | cs |
twitter.pos()는 형태소를 분석해주는 함수입니다.
대략
('걸음', 'Noun'), ('으로', 'Josa'), ('자기', 'Noun'), ('길', 'Noun'), ('을', 'Josa'), ('가거', 'Verb'), ('라', 'Eomi')
이런게 좌르륵 뜹니다.
첫번째 원소가 낱말이고 두번째 원소가 형태소를 알려주는 정보입니다.
우리가 찾고 싶은 명사는 'Noun' 이고 형용사는 'Adjective'입니다.
이것들만 이제 추려봅시다.
1 2 3 4 5 6 7 8 | noun_adj_list=[] for sentence in sentences_tag : for word, tag in sentence : if tag in ['Noun', 'Adjective'] : noun_adj_list.append(word) print(noun_adj_list) | cs |
이중 포문입니다.
리스트 하나하나를 가져온 다음 (ex. ('걸음', 'Noun') )
첫번째 원소를 word로, 두번째 원소를 tag로 할당합니다.
tag가 Noun, Adjective 중 하나라면 word를 noun_adj_list에 넣습니다.
그리고 프린트 해보면
['오', '캡틴', '마이', '캡틴', '현재', '자신', '걸음', '자기', '길', '바보', '같은', '사람', '무어', '간', '다시', '봐', '그때', '그', '감동', '똑', '같네', '삶', '때', '삶', '대해', '말라', '이', '영화', '불편했', '보수', '이', '영화', '감동', '진보', '숙취', '몸', '시원한', '해장국', '몸', '마음', '가벼운', '요즘', '변화', '두렵', '기도', '꼭', '필요하기', '것', '같다', '다만', '것', '어른', '우리', '성년', '날', '그', '어른', '걸작', '영화', '있는', '사람', '영화', '좀', '사람', '이', '영화', '그냥', '모', '그냥', '예뻐', '눈물', '이난', '년대', '영화', '캐릭터', '극본', '연기', '모두', '조화', '건', '아마', '처음', '최고', '진정', '교육자', '존', '키팅', '마지막', '장면', '학생', '책상', '위', '오', '나', '선장', '키팅', '선생님', '때', '여운', '이루', '없다', '가장', '명작', '명연기', '로빈윌리엄스', '영화', '용도', '좋', '배우', '잘생겼', '공감', '교육', '현실', '캡틴', '너', '자신', '어떤', '틀', '구애', '너', '자유', '자', '위해', '저항', '하라', '너', '길', '가라', '스스로', '자각', '이', '사회', '변화', '그것', '배움', '길이', '정의', '위해', '불의', '타협', '정의', '일', '그것', '바로', '지식인', '가야', '길이', '이제', '세상', '그때', '지금', '현재', '교육', '항상', '불만족', '참된', '스승', '현재', '완전', '확', '무슨', '말', '더', '필요', '하리', '점', '중간', '닐', '전', '고뇌', '때', '유목민족', '몽골인', '늑대', '로부터', '양떼', '위해', '고안', '용감하다', '뜻', '몽골', '노래', '음악', '흐미', '예술', '제발', '내', '영화', '제일', '감동', '영화', '정말', '좋', '다시', '보고', '다시', '봐', '정말', '최고다', '내', '인생', '영화', '넘버', '원', '몇', '번', '봐', '감동', '영원한', '캡틴', '로빈', '월', '리암', '명작', '가치', '시대', '초월', '너무', '좋', '재', '개봉', '정말', '오랜만', '당시', '감동', '여윤', '이상', '교사', '교단', '모습', '언젠간', '모든', '교육자', '저런', '모습', '있기', '사실', '예전', '영화', '촌스런', '부분', '많았', '캡틴', '마이', '캡틴', '이', '대사', '처음', '울', '마지막', '감명', '깊게', '본영', '영화관', '집', '알', '있지', '있었', '것', '다시', '현재', '우리나라', '모습', '아닐', '학생', '진정', '교육', '무엇', '어떤', '교사', '이', '영화', '보고', '고등학교', '때', '남자', '로서', '처음', '보고', '눈물', '영화', '오', '캡틴', '마이', '캡틴', '그냥', '너무', '멋있고', '인생', '영화', '너무', '좋', '이제', '없는', '로빈', '윌리암스', '명작', '한국', '이런', '영화', '기대하는', '어리석', '다시', '봐', '변함', '없는', '감동', '이', '작품', '브라운관', '아닌', '스크린', '다시', '볼', '수', '있는', '건', '행운', '스크린', '더', '감동', '전통', '명예', '규율', '최고', '학교', '교훈', '대한', '저항', '퇴임', '은사', '표', '신뢰', '경의', '우뚝', '선', '포퍼', '먼', '스', '인상', '평생', '소장', '영화', '임', '영화', '보고', '처음', '펑펑', '기억', '음악', '아름답', '영상', '아름답', '스토리', '너무나', '훌륭한', '그런', '영화']
이렇게 나오네요.
생각보다.. 워드 클라우드를 그리기에는 적은 어휘량 인거 같습니다.
그래도 끝까지 해봅시다.
'통계 및 데이터 처리 > python' 카테고리의 다른 글
konlpy : 텍스트 분석하기 (0) | 2017.08.21 |
---|---|
pandas 테이블 합치기 (0) | 2017.08.10 |
file io (0) | 2017.08.10 |
pandas 데이터 테이블 다루기 (0) | 2017.08.09 |
pandas datatable 생성 (0) | 2017.08.09 |