파워 파이썬/미니 프로젝트
어린왕자의 단어 분석
상선약수64
2025. 2. 28. 22:55
반응형
1. 텍스트 마이닝(Text Mining), 텍스트 분석(text analytics)은 텍스트에서 고품질 정보를 추출하는 프로세스입니다.
- 텍스트의 리소스에는 웹사이트, 서적, 이메일, 리뷰 그리고 뉴스 등이 비정형 데이터가 포함될 수 있습니다.
- 텍스트 분석에는 정보 검색, 단어 빈도 분포를 연구하기 위한 어휘 분석, 패턴 인식, 태깅/주석, 정보 추출, 링크 및 연관 분석을 포함한 데이터 마이닝 기술, 시각화 및 예측 분석을 포함하고 있습니다.
2. 빈도가 많이 단어 분석
- 문학과 영화에 관심이 있는 사람들은 텍스트 데이터를 분석하는 경험을 할 수 있습니다. 어린왕자 책에 일부분을 발췌하여 가장 많이 나오는 단어가 무엇인지 알아보는 실습입니다.
- 주요 라이브러리는 collections 입니다. 많이 나오는 단어를 matplotlib 라이브러리를 import 하여 시각화해 보는 코드입니다.
from collections import Counter import matplotlib.pyplot as plt # 어린왕자 책에서 일부 문장 (샘플 데이터) text = """Come and play with me," proposed the little prince. "I am so unhappy." "I cannot play with you," the fox said. "I am not tamed." "Ah! Please excuse me," said the little prince. But after some thought, he added: "What does that mean—'tame'?" "It is an act too often neglected," said the fox. "It means to establish ties." "To establish ties?" "Just that," said the fox. "To me, you are still nothing more than a little boy who is just like a hundred thousand other little boys. And I have no need of you. And you, on your part, have no need of me. To you, I am nothing more than a fox like a hundred thousand other foxes. But if you tame me, then we shall need each other. To me, you will be unique in all the world. To you, I shall be unique in all the world...""" # 단어 개수 세기 words = text.lower().split() filtered_words = [word for word in words if len(word) > 2] word_counts = Counter(filtered_words) # 상위 5개 단어 시각화 top_words = word_counts.most_common(5) words, counts = zip(*top_words) plt.bar(words, counts) plt.title("The Little Prince Word Analysis") plt.show() |
어린왕자(The Little Prince) 소설의 명대사를 적어보았습니다.
- "잘못 생각하고 있어. 나는 내가 소유한 것들이 아니라, 내가 돌보고 있는 것들 뿐이야"
- "세상에서 가장 어려운 일은 사람이 사람의 마음을 얻는 일이다"
- "사막이 아름다운 건 어디엔가 오아시스를 감추고 있기 때문이야."
- "다른 사람에게는 결코 열어주지 않는 문을 당신에게만 열어주는 사람이 있다면 그 사람이야 말고 당신의 진정한 친구이다."
- "너의 장미꽃이 그토록 소중하게 된 것은 네가 그 꽃을 위해 공들인 시간 때문이야."
- "조금 좋아하는 것은 절대 사랑일 수 없다. 너무 쉽게 사랑한다고 하지 마. 사랑한다는 말은 진실을 위해 아껴야 해."
- "만약 네가 오후 4시에 온다면, 나는 3시부터 행복해질 것이다."
- "어른들은 누구나 처음에는 어린이였다. 하지만 그것을 기억하는 어른은 별로 없다."
- "내가 좋아하는 사람이 나를 좋아해 주는 건 기적이야"
- "가장 중요한 건 눈에 보이지 않아"
- "누군가에게 길들여진다는 것은 눈물을 흘릴 일이 생긴다는 것인지도 모른다."
- "넌 네가 길들인 것에 대해 언제까지나 책임을 져야 하는 거야."
3. 확장할 수 있는 내용
- 설문조사 응답 : 응답자의 자유로운 의견이나 서술형 답변을 텍스트 분석하여 응답에 대한 인사이트를 얻을 수 있습니다.
- 제품리뷰 : 온라인 쇼핑몰에서 판매되는 제품에 대한 리뷰를 분석하거나, 리뷰에 빈번히 등장하는 단어를 추출하고 워드 클라우드 및 감성분석을 수행할 수 있습니다.
- 좋아하는 소설 및 뉴스에서 가장 나오는 단어를 찾아 워드클라우드 및 감성분성을 수행할 수 있습니다.
텍스트 분석은 텍스트에서 의미있는 정보를 추출하는 텍스트 마이닝을 통해 이루어집니다. 텍스트 마이닝은 자연어 처리, 정보 검색, 웹 크롤링 등으로 데이터를 수집하고 감성분석, 토픽모델링, 문서군집화와 분류, 워드 클라우드 등 다양한 분석을 할 수 있습니다. 향후 중급 및 고급 역량이 되면 도전해 보시면 재미있고 의미 있는 인사이트를 도출할 수 있습니다.
4. 워드클라우드
- 위키피디어에서 검색한 텍스트를 워드클라우드로 작성하려고 합니다. 위키피디아(https://en.wikipedia.org/wiki/Main_Page) 에서 "Computational thinking"을 검색하였고, 그 결과는 아래와 같습니다.
- 워드클라우드는 텍스트에 대해서 각 단어의 출현빈도와 중요성을 찾아내어 단어의 크기와 색상을 조절하여 텍스트 데이터 시각화하는 기술입니다. 위키피디아에서 "Computational thinking"을 찾아 해당하는 페이지를 읽어와서 워드 클라우드로 시각화한 결과와 프로그램입니다. 주석문을 잘 참조하여 확인해 보세요.
import wikipedia from wordcloud import WordCloud import matplotlib.pyplot as plt wiki = wikipedia.page('Computational Thinking') text = wiki.content #위키피디아에서 텍스트 컨텐츠를 추출 #가로 800, 세로 500 픽셀 크기로 생성 #generate() 함수는 텍스트 데이터를 인자로 사용하여 wordcloud 변수가 참조함 wordcloud = WordCloud(width = 800, height = 500).generate(text) #워드 클라우드로 이미지를 생성함 plt.figure(figsize=(40, 30)) plt.imshow(wordcloud) plt.show() |