파이썬으로 단어 구름을 만드는 방법-1000 개의 고대시를 단어 구름 분석

홈페이지 :  https://codeshellme.github.io

오늘은 파이썬을  사용하여 단어 구름 만드는  방법을 소개하겠습니다   .

워드 클라우드는 워드 클라우드라고도하는데, 텍스트에서 자주 나오는 단어를 세어 시각화하여 텍스트의 핵심 단어를 직관적으로 이해할 수 있도록합니다.

많은 사람들이 파이썬을 배우고 어디서부터 시작해야할지 모릅니다.
많은 사람들이 파이썬을 배우고 기본 문법을 습득 한 후 시작할 사례를 어디에서 찾을 지 모릅니다.
사례 연구를 수행 한 많은 사람들은 고급 지식을 배우는 방법을 모릅니다.
이 세 가지 유형의 사람들을 위해 비디오 자습서, 전자 책 및 코스 소스 코드를 무료로받을 수있는 좋은 학습 플랫폼을 제공 할 것입니다! ?? ¤
QQ 그룹 : 828010317

단어의 빈도가 높을수록 단어 표시 크기가 커집니다.

1. 워드 클라우드 모듈

wordcloud  는 워드 클라우드 생성기이며 Python  라이브러리 일뿐  만 아니라 명령 줄 도구 이기도합니다   . 공식 워드 클라우드 문서  및  샘플 라이브러리를 통해  사용 방법을 배울 수 있습니다  .

wordcloud를 사용하기 전에 먼저   설치해야합니다.

pip install wordcloud

2. WordCloud 클래스

WordCloud  클래스 는를 만드는 데 사용됩니다  词云对象 . 프로토 타입을 살펴 보겠습니다.

WordCloud(font_path=None, 
  width=400, height=200, 
  margin=2, ranks_only=None, 
  prefer_horizontal=0.9, 
  mask=None, scale=1, 
  color_func=None, max_words=200, 
  min_font_size=4, stopwords=None, 
  random_state=None, 
  background_color='black', 
  max_font_size=None, 
  font_step=1, mode='RGB', 
  relative_scaling='auto', 
  regexp=None, collocations=True, 
  colormap=None, normalize_plurals=True, 
  contour_width=0, contour_color='black', 
  repeat=False, include_numbers=False, 
  min_word_length=0, 
  collocation_threshold=30)

보시다시피  WordCloud  클래스에는 설정할 수있는 많은 매개 변수가 있습니다. 다음은 일반적으로 사용되는 매개 변수입니다.

  • font_path  : 글꼴 파일 .ttf 접미사에 글꼴 파일 경로를 설정합니다  .
    • 분석 된 텍스트가 중국어 인 경우 중국어 글꼴을 설정해야합니다. 그렇지 않으면 왜곡됩니다.
  • background_color  : 사진의 배경색을 설정합니다. 기본값은  검은 색  또는 흰색  등 으로 설정할 수 있습니다  .
  • 마스크  : 배경 이미지를 설정합니다.
  • max_words  : 최대 단어 수를 설정하며 기본값은 200입니다.
  • 불용어  : 불용어를 설정합니다.
  • max_font_size  : 최대 글꼴 크기를 설정합니다.
  • width  : 캔버스의 너비를 설정합니다. 기본값은 400입니다.
  • height  : 캔버스의 높이를 설정합니다. 기본값은 200입니다.
  • random_state  : 설정된 임의 상태 수, 즉 색상 수입니다.

생성 후에  词云对象 는  generate 방법을 사용하여 단어 구름을 생성하고  to_file 방법을 사용하여 단어 구름 이미지를 파일에 저장할 수 있습니다.

generate 메서드의 프로토 타입은 다음과 같습니다.

generate(text)

매개 변수  text 는  空格 분리 된 텍스트 문자열입니다. 분석이 중국어 인 경우 먼저  단어 분할에 jieba 를 사용해야  합니다  . 여기에서 참조 할 수  있습니다 .

단어 구름 이미지를 파일에 저장하는 것 외에도 Matplotlib  모듈을 사용 하여 단어 구름 이미지를 표시 할 수 있습니다  . 샘플 코드는 다음과 같습니다.

import matplotlib.pyplot as plt

plt.imshow(wordcloud)  # wordcloud 是词云对象
plt.axis("off")        # 用于关闭坐标轴
plt.show()

3. 간단한 예

다음은 wordcloud 사용 방법을 보여주는 간단한 예   입니다.

먼저 생성  词云对象 :

from wordcloud import WordCloud
wc = WordCloud()

단어 구름 생성 :

text = "Python is a programming language, it is easy to use."
wc.generate(text)

단어 구름 객체의  words_ 속성은 각 단어의 (정규화 된) 가중치를 저장하며 가중치 범위는  (0, 1] 입니다.

words_ 속성은 사전 유형 및 그것이 저장 키의 최대 개수  max_words 이며  WordCloud , 클래스의 파라미터.

다음과 같이 :

>>> wc.words_
{'Python': 1.0, 'programming': 1.0, 'language': 1.0, 'easy': 1.0, 'use': 1.0}
# 示例中的这些单词出现的频率都相等(均为 1),
# 所以它们的权重都是 1。

Matplotlib를 사용  하여  단어 구름 이미지 표시합니다.

import matplotlib.pyplot as plt

plt.imshow(wc) 
plt.axis("off")
plt.show()

단어 구름 이미지는 다음과 같습니다.

4. 고대시의 단어 구름 분석 수행

나는 한   경우 준비 여기에 1000 고대시의 단어 구름 분석이다.

코드 디렉토리는 다음과 같습니다.

wordcloud / 
├── SimHei.ttf 
├── gushi.txt 
└── gushi_wordcloud.py

그들 중 :

  • SimHei.ttf  : 단어 구름 분석에서 중국어 왜곡 문자를 방지하기위한 글꼴 파일입니다.
  • gushi.txt  :이 파일에는 1000 개의 고대 시가 포함되어 있습니다   .
  • gushi_wordcloud.py  :  단어 구름 분석 코드  입니다.

또한 쉽게 볼 수 있도록 여기에 코드를 넣었습니다.

#!/usr/bin/env python
# coding=utf-8

import os
import sys
import jieba
from wordcloud import WordCloud

if sys.version.startswith('2.'):
    reload(sys)
    sys.setdefaultencoding('utf-8')

# 去掉一些作者的名字
STOPWORDS = [
        u'李白', u'杜甫', u'辛弃疾', u'李清照', u'苏轼',
        u'李商隐', u'王维', u'白居易', u'李煜', u'杜牧',
        ]

def load_file(file_path):
    if sys.version.startswith('2.'):
        with open(file_path) as f:
            lines = f.readlines()
    else:
        with open(file_path, encoding='utf-8') as f:
            lines = f.readlines()

    content = ''

    for line in lines:
        line = line.encode('unicode-escape').decode('unicode-escape')
        line = line.strip().rstrip('\n')

        content += line

    words = jieba.cut(content)

    l = []
    for w in words:
        # 如果词的长度小于 2,则舍去
        if len(w) < 2: continue

        l.append(w)

    return ' '.join(l)


if __name__ == '__main__':
    file_path = './gushi.txt'
    content = load_file(file_path)

    wc = WordCloud(
            font_path="./SimHei.ttf",
            stopwords=STOPWORDS,
            width=2000, height=1200)

    wc.generate(content)
    wc.to_file("wordcloud.jpg")

그들 중 :

  • STOPWORDS 불용어 목록은 일부 저자의 이름입니다.
  • load_file 이 방법은 jieba  단어 분할 을 사용하는 텍스트를로드하는 데 사용됩니다  .

마지막으로 단어 구름 이미지는 wordcloud.jpg 다음과 같이 파일에 저장  됩니다.

단어 구름 개체의 words_ 속성 에서 각 단어의 가중치를 볼 수도  있습니다. 여기에 상위 10 개를 나열합니다.

( 'Ming Moon', 1.0) 
( 'Today', 0.9130434782608695) 
( 'I do n't know', 0.8405797101449275) 
( 'Where', 0.8260869565217391) 
( 'No See', 0.8115942028985508) 
( 'Spring Breeze', 0.7536231884057971) 
( 'Nobody', 0.7536231884057971) 
( '불가능', 0.7536231884057971) 
( 'Wanli', 0.7536231884057971) 
( 'Modern', 0.6666666666666666)

(이 섹션의 끝.)

추천

출처blog.csdn.net/Python_sn/article/details/111266392