请生成wikipedia“足球”文本的word cloud。(1分)
这时请生成这样的。
-如果文字是一个字,就删除
-使用Okt()形态素分析仪(名词提取)
-抽取频率排在前20位的名词
pip install konlpy
#爬取维基百科足球的信息并写入文件
import requests
from bs4 import BeautifulSoup
url = "https://ko.wikipedia.org/wiki/%EC%B6%95%EA%B5%AC"
response = requests.get(url)
html_doc = response.text
soup = BeautifulSoup(html_doc, 'html.parser')
soup
soup.get_text()
soup.find_all('p') #查找p标签
p_list = soup.find_all('p')
len(p_list)
for each_p in p_list: #打印每个list的文本
print(each_p.text)
soccer_text = ''
for each_p in p_list:
soccer_text += each_p.text
soccer_text
# 파일로 축구 문서를 다운로드함.
with open("soccer.txt", "w") as f:
f.write(soccer_text)
#从英文文本创建词云
# open으로 txt파일을 열고 read()를 이용하여 읽는다.
with open("soccer.txt") as f:
text = f.read()
#print(text)
word_list = text.split()
word_list
#下载停用词
import nltk
nltk.download('punkt') #分句的模块
nltk.download('stopwords')
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
import matplotlib.pyplot as plt
stop_words = set(stopwords.words('english'))
text = text.lower()
word_tokens = word_tokenize(text)
# converts the words in word_tokens to lower case and then checks whether
#they are present in stop_words or not
word_list = []
for w in word_tokens:
if w not in stop_words and w.isalpha():
word_list.append(w)
print(word_list)
from wordcloud import WordCloud, STOPWORDS
from konlpy.tag import Twitter
from collections import Counter
# 가장 많이 나온 단어부터 40개를 저장한다.
counts = Counter(word_list)
word_freq = counts.most_common(20)
word_freq
wc = WordCloud(width=800, height=800, scale=2.0, max_font_size=250, background_color="white",
# font_path='/content/NanumGothicBold.ttf',
font_path='/content/NanumSquareNeo-Variable.ttf',
random_state=42)
zq = wc.generate_from_frequencies(dict_frequent_tuple)
plt.figure()
plt.imshow(zq)
cloud.to_file('test.jpg')
# WordCloud를 생성한다.
# wc = WordCloud(background_color="white", max_font_size=60)
# cloud = wc.generate_from_frequencies(dict(word_freq))
# plt.figure()
# plt.imshow(cloud)
# # 생성된 WordCloud를 test.jpg로 보낸다.
##下载一个ttf字体文件吧,韩语搞不来
#请下载并安装所需的字体文件(.ttf)并写入文件位置和名称
# font='/content/DroidSansFallback 2400.ttf'
# word_cloud = WordCloud(font_path=font, background_color='black',max_font_size=400, mask=mask,colormap='prism').generate_from_frequencies(dict(tags))

心形图片
要先现在一个心形透明的背景图片
下载中文.tff文件的字体就可以用词云可视化出来了
from konlpy.tag import Okt
from wordcloud import WordCloud
from collections import Counter
# text 파일 읽어오기
#※※주소불러올때 \를 //로 바꾸어주기※※
blog_text = open('soccer.txt','rt', encoding='UTF-8').read()
#print(blog_text)
# csv 파일일때
# import pandas as pd
# blog_text = pd.read_csv('csv파일.csv',encoding='utf-8')
# blog_text = blog_text['형태소분석할 컬럼명']
# Okt 함수를 이용해 형태소 분석
okt = Okt()
line =[]
line = okt.pos(blog_text)
n_adj =[]
# 명사 또는 형용사인 단어만 n_adj에 넣어주기
for word, tag in line:
if tag in ['Noun','Adjective']:
n_adj.append(word)
# 명사 또는 형용사인 단어 및 2글자 이상인 단어 선택 시
# n_adj = [word for word, tag in line if tag in ['Noun','Adjective'] and len(word) > 1]
#제외할 단어 추가
stop_words = "상암맛집 입니다 있어서 입니다." #추가할 때 띄어쓰기로 추가해주기
stop_words = set(stop_words.split(' '))
n_adj = [word for word in n_adj if not word in stop_words]
print(n_adj)
#print(line)
#print(n_adj)
#가장 많이 나온 단어 100개 저장
counts = Counter(n_adj)
tags = counts.most_common(100)
# 이미지 추가(워드크라우드 모양 설정)
import numpy as np
from PIL import Image
mask = Image.new("RGBA",(2555,2275), (255,255,255)) #(2555,2575)는 사진 크기, (255,255,255)는 색을의미
image = Image.open('/content/下载.jpg').convert("RGBA")
x,y = image.size
mask.paste(image,(0,0,x,y),image)
mask = np.array(mask)
###WordCloud(워드크라우드) 만들기###
#폰트지정
#请下载并安装所需的字体文件(.ttf)并写入文件位置和名称
font='/content/NanumSquareNeo-Variable.ttf'
word_cloud = WordCloud(font_path=font, background_color='black',max_font_size=400, mask=mask,colormap='prism').generate_from_frequencies(dict(tags))
# 사이즈 설정 및 화면에 출력
import matplotlib.pyplot as plt
plt.figure(figsize=(10,8))
plt.imshow(word_cloud)
plt.axis('off')
#워드클라우드 사진으로 저장
#cloud.to_file('상암맛집_wc.png')
#또는
plt.savefig('상암맛집.png', bbox_inches='tight')
plt.show()
该代码段首先从韩语维基百科抓取足球页面的文本,然后使用Konlpy进行名词提取和停用词移除,生成频率最高的20个名词的词云图。词云图使用了NanumSquareNeo-Variable.ttf字体,并结合Python的WordCloud库进行可视化。
4527

被折叠的 条评论
为什么被折叠?



