심화 학습

Word Cloud

word cloud의 작동 방법 - 어떤 로직으로 시각화가 이루어지는 - 을 개인 위키에 기술하세요.

word cloud가 어떤 방식으로 단어들을 그려내는지 알아보고자한다.
wordcloud 모듈을 사용한 결과로 얻는 이미지의 특징을 바탕으로 어떻게 동작 하는지 예측해본다.
wordcloud github, docs를 확인하여 어떤 방식으로 동작하는지 확인한다.
wordcloud는 오픈소스로서 코드가 공개되어있다. 코드를 직접 확인하여 어떤 방식으로 동작하는지 확인한다.
wordcloud 모듈을 사용한 결과
- 수많은 단어들에 대하여 '단어'를 '키', '갯수'를 '값'으로 하는 딕셔너리를 전달 받아 이미지를 생성
- max_words = 200 으로 최대 200개의 단어를 이미지에 나타내었다.
- 글씨 폰트, 너비, 높이, 배경 등 여러 속성을 추가할 수 있었다.
- 많이 등장한 단어는 크게, 조금 등장한 단어는 작게 그려졌다.
- 단어들의 방향이 가로, 세로 방향으로 나타난다.
- 단어들은 겹쳐지지 않으면서도 빈 공간에 오밀조밀하게 들어가있다.
- 색상이 다양하다...
- 기타 등등
- 단어의 빈도수에 대해 크기가 달리지지만 빈도수에 절대적이지는 않고 상대적일 것으로 예상된다.
- max_words 값을 바탕으로 그릴 단어들을 선택할 것이다.
- 폰트, 너비, 높이, 배경 등 여러 속성이 색상을 찍을 때 사용될 것이다.
- 단어를 그릴 때 가로, 세로를 랜덤으로 결정할 것이다.
- 단어들을 그리기 위한 영역을 선택하고 이미 선택된 영역에는 그릴 수 없도록 되어있을 것이다.
- 단어들을 그리기 위한 좌표 연산이 분명 있을것이다.

def to_file(self, filename):
        """Export to image file.

        Parameters
        ----------
        filename : string
            Location to write to.

        Returns
        -------
        self
        """

        img = self.to_image()
        img.save(filename, optimize=True)
        return self
        

to_file() 메소드는 WordCloud 클래스의 메소드이다. 현재 객체에서 to_image() 메소드를 통해 반환된 img의 save()메소드를 수행한다. 이 결과 이미지 파일이 저장된다.

img에 저장되는 객체는 PIL(The Python Imaging Library)의 Image 객체이다. 이미지는 픽셀에 rgb(a)값이 저장되어있는 구조이므로 이와 관련된 구조로 생각된다.

WorldCloud.to_image()의 반환값을 알기 위해 해당 메소드로 거슬러 올라가보자.