- Github: yoonkt200
Chapter02 텍스트 마이닝 첫걸음¶
- 이장의 핵심개념
- 웹 크롤링으로 데이터를 수집한다
- 키워드 추출의 방법을 알아본다.
- 키워드 간의 연관 관계를 분석한다.
- 텍스트 분석 결과를 시각화 한다.
2.1 웹 크롤링으로 기초 데이터 수집하기¶
이번 절에서는 '나무위키 최근 변경 페이지'의 텍스트 데이터르 웹 크롤링 Web Crawling 으로 수집한 다음, 데이터 내에서 등장한 키워드의 출현 빈도를 분석해 보겠다. 이를 통해 우리는 나무위키 페이지에서 현재 가장 '핫한'키워드가 무엇인지 분석할 수 있다. 웹 크롤링 혹은 웹 스크래핑 Web Scraping은 인터넷에 있는 웹페이지를 방문해서 페이지의 자료를 자동으로 수집하는 작업을 의미한다. 여기에선 파이썬으로 웹 크롤링을 진행하겠다.
대상 페이지의 구조 살펴보기¶
크롤링을 위한 첫 번째 단계는 인터넷 익스플로러, 크롬 등의 웹브라우저를 실행하여 크롤링의 대상이 될 페이지 구조를 살펴보는 것이다.
- 먼저 웹 브라우저의 '개발자 도구'를 실행한다. 단축키 Ctrl + Shift + l
- 리스트의 URL 정보를 수집
웹 크롤링 라이브러리 사용하기¶
파이썬에서는 BeautifulSoup 과 requests라는 라이브러리로 웹 크롤러를 만들 수 있다. requests는 특정 URL로부터 HTML 문서를 가져오는 작업을 수행하고, BeautifulSoup 모듈은 HTML 문서에서 데이터를 추출하는 작업을 수행한다. 이 모듈들을 사용하기에 앞서, 터미널(cmd) 혹은 아나콘다 프롬프트를 실행하여 아래의 세 가지 파이썬 모듈을 설치해야한다.
#!pip3 install lxml beautifulsoup4 requests
# !pip3 install lxml
# !pip3 install bs4
# !pip3 install html5lib
# -*- coding: utf-8 -*-
%matplotlib inline
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore")
import requests
from bs4 import BeautifulSoup
import re
import lxml
다음 코드에서는 requests.get()함수로 URL의 HTML 문서를 가져온 뒤, 이를 BeautifulSOup()클래스의 soup 객체로 변환한다. 그리고 find(), find_all() 함수를 사용하여 특정 HTML 태그 혹은 특정 HTML 클래스를 가진 데이터를 가져온다.
- 페이지 리스트 가져오기
# 크롤링할 사이트 주소를 정의한다
source_url = "https://namu.wiki/RecentChanges"
# 사이트의 HTML 구조에 기반하여 크롤링을 수행한다.
req = requests.get(source_url)
html = req.content
soup = BeautifulSoup(html, 'html.parser')
contents_table = soup.find(name="table")
table_body = contents_table.find(name="tbody")
table_rows = table_body.find_all(name="tr")
# a 태그의 href 속성을 리스트로 추출하여 크롤링할 페이지 리스트를 생성한다.
page_url_base = "https://namu.wiki"
page_urls = []
for index in range(0, len(table_rows)):
first_td = table_rows[index].find_all('td')[0]
td_url = first_td.find_all('a')
if len(td_url) > 0:
page_url = page_url_base + td_url[0].get('href')
page_urls.append(page_url)
# 중복 url을 제거한다.
page_urls = list(set(page_urls))
for page in page_urls[:5]:
print(page)
https://namu.wiki/w/%EB%A7%88%EA%B8%B0%EC%95%84%20%EB%A0%88%EC%BD%94%EB%93%9C%20%EB%A7%88%EB%B2%95%EC%86%8C%EB%85%80%20%EB%A7%88%EB%8F%84%EC%B9%B4%E2%98%86%EB%A7%88%EA%B8%B0%EC%B9%B4%20%EC%99%B8%EC%A0%84/%EB%A9%94%EB%AA%A8%EB%A6%AC%EC%95%84/2021%EB%85%84 https://namu.wiki/w/%ED%8B%80:%ED%94%84%EB%9E%91%EC%8A%A4%20%EC%99%95%EA%B5%AD%EC%9D%98%20%ED%96%89%EC%A0%95%20%EA%B5%AC%EC%97%AD%EA%B3%BC%20%EA%B5%B0%EA%B5%AC https://namu.wiki/w/%EC%98%A4%EC%85%80 https://namu.wiki/w/%EC%95%85%EB%8B%B9%EC%98%81%EC%95%A0%20%EA%B8%B8%EB%93%A4%EC%9D%B4%EA%B8%B0 https://namu.wiki/w/%EC%95%8C%EB%9E%AD%20%EB%93%A4%EB%A1%B1
위의 코드는 개발자 도구로 살펴본 HTML 구조에 기반하여 table -> tbody -> tr -> td -> a 태그 순의 HTML 계층 구조를 좁혀나가는 과정이다. 이과정을 통해 목표 태그에 도달했을 때, get(href) 함수로 태그의 속성 정보를 추출한다. get()함수는 해당 태그가 가지고 있는 특정한 속성을 추출한다.
텍스트 정보 수집하기¶
이전과 마찬가지로 개발자 도구의 마우스 포인터 모양 아이콘을 클릭한다. 그리고 문서의 '제목'부분, 문서의 '카테고리'부분, 그리고 '본문'부분을 클릭하여 HTML의 구조를 파악한다. 문서의 전체 내용은 'article'이라는 태그 안에 구성되어 있다. 그리고 제목은 'h1'태그, 카테고리 부분은 'ul' 태그 영역 안에 존재하며, 본문의 내용은 'wiki-pararaph'라는 클래스로 구성된 'div'태그 안에 위치하고 있다. 다음 코드는 최근 변경된 문서 중 한 페이지의 텍스트 정보를 크롤링한 것이다. 이전 단계와 다른 점은 get()함수 대신 text()함수를 사용하여 태그의 텍스트 정보만을 추출했다는 점이다.
- URL 페이지 정보를 기반으로 크롤링하기
# 하나의 최근 변경된 문서를 크롤링 한다.
req = requests.get(page_urls[0])
html = req.content
soup = BeautifulSoup(html, 'html.parser')
contents_table = soup.find(name="article")
title = contents_table.find_all('h1')[0]
category = contents_table.find_all('ul')[0]
content_paragraphs = contents_table.find_all(name="div", attrs={"class":"wiki-paragraph"})
content_corpus_list = []
# 크롤링한 문서 정보 출력
for paragraphs in content_paragraphs:
content_corpus_list.append(paragraphs.text)
content_corpus = "".join(content_corpus_list)
print(title.text)
print("\n")
print(category.text)
print("\n")
print(content_corpus)
마기아 레코드 마법소녀 마도카☆마기카 외전/메모리아/2021년 마기아 레코드 하위 문서 [ 펼치기ㆍ접기 ]마기☆레포ㆍ미러즈ㆍ시스템ㆍ아이템ㆍ정신강화ㆍ카미하마 시ㆍ평가가챠 ('17년ㆍ'18년ㆍ'19년ㆍ'20년ㆍ'21년)이벤트 ('17년ㆍ'18년ㆍ'19년ㆍ'20년ㆍ'21년ㆍ감정전ㆍ캠페인ㆍ특훈)메모리아 (★1ㆍ★2ㆍ★3ㆍ★4ㆍ'21년)애니메이션 (1기ㆍ2기ㆍ에피소드ㆍ엔드 카드ㆍ평가)등장인물 [ 펼치기ㆍ접기 ]★4토우카ㆍ모모코ㆍ카린ㆍ쥬리ㆍ시즈카ㆍ하구무ㆍ츠루노·펠리시아ㆍ쿄코ㆍ쿄코(수영복)ㆍ히미카ㆍ료코ㆍ엘리자ㆍ스즈네ㆍ츠바키ㆍ스루가ㆍ츠바사ㆍ나노하★3소문 츠루노ㆍ레이라ㆍ아이미ㆍ리카ㆍ세이라ㆍ메구루ㆍ란카ㆍ료우ㆍ카오루ㆍ라핀★2츠루노ㆍ마나카ㆍ아야메★4레나ㆍ아오ㆍ스나오ㆍ이로하(수영복)ㆍ야치요·미후유ㆍ소문 사나ㆍ레나짱ㆍ아마네 자매ㆍ레나·카에데ㆍ사야카ㆍ사야카(하레기)ㆍ코노하ㆍ마유ㆍ준ㆍ마요이★3아스카ㆍ나나카ㆍ메이유이ㆍ마리아ㆍ테마리ㆍ우미카ㆍ멜리사ㆍ치사토★2야치요ㆍ나츠키ㆍ아키라ㆍ세이카★4알리나ㆍ네무ㆍ치하루ㆍ시구레ㆍ알렉산드라ㆍ홀리 알리나ㆍ마미ㆍ홀리 마미ㆍ마미(수영복)ㆍ미토ㆍ츠무기ㆍ유우나ㆍ코노하·하즈키ㆍ마츠리ㆍ나데코★3카에데ㆍ모카ㆍ메루ㆍ치카ㆍ유마ㆍ하야테★2사나ㆍ히나노ㆍ카코ㆍ사쿠야ㆍ코노미★4카나기ㆍ히카루ㆍ모모코(시스터)ㆍ이로하짱ㆍ이로하·야치요ㆍ이로하·우이ㆍ마도카ㆍ마도카(하레기)ㆍ얼티밋 마도카ㆍ궁극 마도카 선배ㆍ호무라(수영복)ㆍ코코로ㆍ유키카ㆍ사유키ㆍ리코ㆍ만년 벚꽃ㆍ미츠네ㆍ만년 벚꽃(수영복)ㆍ타루토ㆍ파이널 타루토ㆍ시노부ㆍ페이트★3츠카사ㆍ마도카 선배ㆍ하즈키ㆍ마사라ㆍ호토리ㆍ오리코ㆍ하루카★2사사라ㆍ시즈쿠★1이로하★4미후유ㆍ우이ㆍ츠쿠요ㆍ미카게ㆍ작은 큐베ㆍ토우카·네무ㆍ카나기(뱀파이어)ㆍ호무라ㆍ호무라(안경)ㆍ나기사ㆍ나기사(밸런타인)ㆍ한나ㆍ렌ㆍ미쿠라ㆍ카나에ㆍ애슐리ㆍ이쿠미ㆍ루이ㆍ리카·렌ㆍ키리카ㆍ카즈미ㆍ리즈★3펠리시아짱ㆍ리아ㆍ아야카ㆍ리온ㆍ코르보ㆍ아리사ㆍ히타기★2펠리시아ㆍ카노코ㆍ에미리★1쿠로★4미타마ㆍ스다치ㆍ요즈루ㆍ리비아ㆍ미타마(하레기)NPC마녀ㆍ소문ㆍ감정마법소녀그룹마기우스의 날개ㆍ카미하마 마기아 유니온ㆍ토키메 일족ㆍPROMISED BLOOD(유나)ㆍ네오 마기우스(히메나)ㆍ푸엘라 케어ㆍ포클로어 오브 제로애니메이션오리지널쿠로에★4토우카ㆍ모모코ㆍ카린ㆍ쥬리ㆍ시즈카ㆍ하구무ㆍ츠루노·펠리시아ㆍ쿄코ㆍ쿄코(수영복)ㆍ히미카ㆍ료코ㆍ엘리자ㆍ스즈네ㆍ츠바키ㆍ스루가ㆍ츠바사ㆍ나노하★3소문 츠루노ㆍ레이라ㆍ아이미ㆍ리카ㆍ세이라ㆍ메구루ㆍ란카ㆍ료우ㆍ카오루ㆍ라핀★2츠루노ㆍ마나카ㆍ아야메★4레나ㆍ아오ㆍ스나오ㆍ이로하(수영복)ㆍ야치요·미후유ㆍ소문 사나ㆍ레나짱ㆍ아마네 자매ㆍ레나·카에데ㆍ사야카ㆍ사야카(하레기)ㆍ코노하ㆍ마유ㆍ준ㆍ마요이★3아스카ㆍ나나카ㆍ메이유이ㆍ마리아ㆍ테마리ㆍ우미카ㆍ멜리사ㆍ치사토★2야치요ㆍ나츠키ㆍ아키라ㆍ세이카★4알리나ㆍ네무ㆍ치하루ㆍ시구레ㆍ알렉산드라ㆍ홀리 알리나ㆍ마미ㆍ홀리 마미ㆍ마미(수영복)ㆍ미토ㆍ츠무기ㆍ유우나ㆍ코노하·하즈키ㆍ마츠리ㆍ나데코★3카에데ㆍ모카ㆍ메루ㆍ치카ㆍ유마ㆍ하야테★2사나ㆍ히나노ㆍ카코ㆍ사쿠야ㆍ코노미★4카나기ㆍ히카루ㆍ모모코(시스터)ㆍ이로하짱ㆍ이로하·야치요ㆍ이로하·우이ㆍ마도카ㆍ마도카(하레기)ㆍ얼티밋 마도카ㆍ궁극 마도카 선배ㆍ호무라(수영복)ㆍ코코로ㆍ유키카ㆍ사유키ㆍ리코ㆍ만년 벚꽃ㆍ미츠네ㆍ만년 벚꽃(수영복)ㆍ타루토ㆍ파이널 타루토ㆍ시노부ㆍ페이트★3츠카사ㆍ마도카 선배ㆍ하즈키ㆍ마사라ㆍ호토리ㆍ오리코ㆍ하루카★2사사라ㆍ시즈쿠★1이로하★4미후유ㆍ우이ㆍ츠쿠요ㆍ미카게ㆍ작은 큐베ㆍ토우카·네무ㆍ카나기(뱀파이어)ㆍ호무라ㆍ호무라(안경)ㆍ나기사ㆍ나기사(밸런타인)ㆍ한나ㆍ렌ㆍ미쿠라ㆍ카나에ㆍ애슐리ㆍ이쿠미ㆍ루이ㆍ리카·렌ㆍ키리카ㆍ카즈미ㆍ리즈★3펠리시아짱ㆍ리아ㆍ아야카ㆍ리온ㆍ코르보ㆍ아리사ㆍ히타기★2펠리시아ㆍ카노코ㆍ에미리★1쿠로★4미타마ㆍ스다치ㆍ요즈루ㆍ리비아ㆍ미타마(하레기)NPC마녀ㆍ소문ㆍ감정마법소녀그룹마기우스의 날개ㆍ카미하마 마기아 유니온ㆍ토키메 일족ㆍPROMISED BLOOD(유나)ㆍ네오 마기우스(히메나)ㆍ푸엘라 케어ㆍ포클로어 오브 제로애니메이션오리지널쿠로에현재 진행중인 이벤트 [ 펼치기ㆍ접기 ] 미타마의 특훈 - 아키노 카에데 편 (복각) 2021년 5월 10일 16:00 ~ 5월 24일 15:001. 개요2. 스킬 타입2.1. 각오하기 전에 바람이 분다2.2. 어느새 여기까지2.3. 소의 해는 감미로운 나의 해2.4. 더ㆍ그레이트ㆍ파더2.5. 그날, 검류관(야나기 검도장)에서2.6. 원수는 그 손으로 갚아2.7. 믿고 있기에 내린 결의2.8. 계획은 스위트 테이스트2.9. 약속을 가슴에 새기고2.10. 아이짱을 만나고 싶습니까?2.11. KAWAII는 무적!!2.12. 옷장과 상담한 뒤에2.13. Night Buzz Time2.14. Naked Heart2.15. 음색은 다정하게 녹아들어2.16. 수제 얼티밋 드레스2.17. 부드럽게 일상을 만들어2.18. 이건 그냥 산책이라3. 어빌리티 타입3.1. 무녀 자매의 춤3.2. 언제까지나 이대로3.3. 내숭 떠는 스쿨 타임3.4. 평소대로의 아침 광경3.5. 이제 돌이킬 수 없으니까3.6. 언제나 생각하고 있으니까3.7. 특별한 비터 테이스트3.8. 난관! 이미지 트레이닝3.9. 동경하던 땅에서 크게 활약을3.10. 착하지 착하지3.11. 시크릿 오브 석세스3.12. Never Forget3.13. 궁극 vs 지고3.14. 손을 흔드는 행복3.15. 꽃, 떨어져도 돌아오지 않는다.마기아 레코드 마법소녀 마도카☆마기카 외전에서 2021년에 추가된 메모리아을 정리한 문서.기본레벨최대레벨HP9222305ATK00DEF8422105기본 수치한계 돌파스킬명에스페란자 포스발동 효과공격력 UP [25%] & 확률로 크리티컬 [25%] & 방어력 UP [30%] (자신/3턴)공격력 UP [30%] & 확률로 크리티컬 [30%] & 방어력 UP [37.5%] (자신/3턴) 쿨다운12턴10턴최대레벨HP2048ATK0DEF2048한계 돌파스킬명딜리전스 라이즈발동 효과방어력 UP [22.5%] & MP 획득량 UP [12.5%] (자신/3턴)쿨다운6턴같이 나온 어빌멤 '언제까지나 이대로'와 멤이름과 일러스트에 보는대로 상황이 반대다.최대레벨HP2100ATK0DEF2100한계 돌파스킬명스턴 어택발동 효과공격력 UP [20%] (자신/3턴) & 기절 [37.5%] (적 1체/1턴)쿨다운7턴기본레벨최대레벨HP6701675ATK00DEF6101525기본 수치한계 돌파스킬명블래스트 라이즈발동 효과Blast 데미지 UP [25%] (자신/3턴)Blast 데미지 UP [30%] (자신/3턴) 쿨다운6턴5턴하늘에 떠있는 별을 쥔다. 그리고 자신이 모두를 능가하는 가장 빛나는 별이 된다바보가 계산해도 손에 닿지 않는 이상은, 눈 앞에 있는 화염을 손에 쥔다자신의 투지와 감정을 의지하며, 자신의 적을 수 없이 부숴나가면바라지 않더라도, 언젠가 뜨겁고 뜨겁게 불타는 태양이 될 수 있을 것이다기본레벨최대레벨HP9622405ATK00DEF8022005기본 수치한계 돌파스킬명아스트랄 라이즈발동 효과Accele MP 획득량 UP [20%] & 마기아 데미지 UP [17.5%] (자신/3턴)Accele MP 획득량 UP [22.5%] & 마기아 데미지 UP [20%] (자신/3턴) 쿨다운9턴8턴스승에게 항상 배우며, 인간으로서의 자세를 교육 받은 것절친과 경쟁하며, 부딪히며 서로를 이해해 나간 것지금에 와서는 이제 멀어져 버린 나날들아직 미숙했던 시절의 잊을 수 없는 소중한 추억해당 일러스트에 있는 인물은 츠바키의 마법소녀 스토리에서 언급된 야나기 요리코와 카스미 이치카다. 원작 스즈마기는 물론 본편 마기레코에서도 제대로 등장하지 않고 츠바키의 마법소녀 스토리에서 언급이나 과거 회상 등을 통해 나오기만 했는데 GAN이 '이미지만 그려두자' 라고 하면서 그린 것이라고 한다.최대레벨HP1935ATK0DEF2135한계 돌파스킬명딜리전스 라이즈발동 효과방어력 UP [22.5%] & MP 획득량 UP [12.5%] (자신/3턴)쿨다운6턴「나를 버린 츠바키랑 나한테서 츠바키를 빼앗아간 스즈네 쨩…서로를 소중히 생각하면서 서로 죽이려 드는 거는 어떤 기분이야?있지, 츠바키. 준비는 다 해줬으니까제─대로 스스로의 손으로 스스로의 원수를 갚아줘」최대레벨HP1838ATK0DEF2238한계 돌파스킬명믿고 있기에 내린 결의발동 효과공격력 UP [20%] & 크리티컬 [25%] (자신/1턴)쿨다운7턴「함께 있고 싶다」고 울며 매달려 오면 마음이 아파온다지금 당장이라도 안아주고 싶어진다그럼에도, 결의는 바꾸지 않는다소중한 아이들이 행복한 미래를 손에 넣을 수 있을 것을 믿고 있으니까최대레벨HP1820ATK0DEF2220한계 돌파스킬명오라 라이즈발동 효과공격력 UP [10%] & 데미지 컷 [10%] (자신/3턴)쿨다운8턴「초콜렛을 넘길 때, 단숨에 무드를 띄워줄 수 있는 스팟이 카미하마에는 잔뜩 있다.그 중에서도 가장 유명한 것은 츄오 구에 있는 전파탑. 밑에 있는 쇼핑몰에서 즐겁게 보낸 다음의전망대는 마무리에는 최고의 장소이며, 특히 밤까지 돌아다닐 수 없는 초등학생에겐 첫 도전에 추천하는 장소다」Bittersweet AI Memory 이벤트 기간한정 샵에서 파는 2021 발렌타인 티켓으로 교환가능한 멤인데 성능이 낮아서 필요없다면 지르지않는 것이 좋다.기본레벨최대레벨HP7211802ATK00DEF6011502기본 수치한계 돌파스킬명블룸 다운발동 효과공격력 DOWN [25%] & 방어력 DOWN [25%] (적 1체/1턴)공격력 DOWN [30%] & 방어력 DOWN [30%] (적 1체/1턴)쿨다운8턴7턴딱 미토멤의 하위 호환이다.최대레벨HP1530ATK0DEF1530한계 돌파스킬명풀 버스트발동 효과Accele MP 획득량 UP [15%] & Blast 데미지 UP [25%] (자신/1턴)쿨다운4턴최대레벨HP1538ATK0DEF1538한계 돌파스킬명풀 스윙 업 라이즈발동 효과Blast 데미지 UP [25%] & Charge 후 데미지 UP [10%] (자신/3턴)쿨다운9턴기본레벨최대레벨HP8012002ATK00DEF9612402기본 수치한계 돌파스킬명스나이핑 블래스트발동 효과Blast 데미지 UP [40%] (자신/1턴) & 방어력 DOWN [40%] (적 전체/1턴)Blast 데미지 UP [40%] (자신/1턴) & 방어력 DOWN [40%] (적 전체/1턴)쿨다운7턴6턴마을에 KAWAII가 잔뜩 넘친다이것도 저것도 KAWAII하니까, 이것도 저것도 가지고 싶지만...옷장은 이미 KAWAII로 한 가득!하지만, 오늘도 아주 약간 KAWAII를 가지고 돌아가자!북미판 전용멤 Kawaii Collection과 이름과 능력치, 스킬명은 바뀌었지만 발동 효과는 동일하게 나왔다.기본레벨최대레벨HP8862215ATK00DEF8062015기본 수치한계 돌파스킬명카우어 레지스트 마기아발동 효과마기아 데미지 UP [17.5%] (자신/1턴) & 상태 이상 내성 DOWN [17.5%] (적 전체/1턴)마기아 데미지 UP [20%] (자신/1턴) & 상태 이상 내성 DOWN [17.5%] (적 전체/1턴)쿨다운8턴7턴최대레벨HP1932ATK0DEF2132한계 돌파스킬명어트리션 번발동 효과화상 [100%] (적 1체) & 방어력 DOWN [30%] (적 1체/3턴)쿨다운6턴기본레벨최대레벨HP6741686ATK00DEF6141535기본 수치한계 돌파스킬명카운터렉트 어택발동 효과디버프 해제 & 공격력 UP [10%] (자신/3턴)디버프 해제 & 공격력 UP [15%] (자신/3턴)쿨다운9턴8턴시치미를 떼고 지나가는 바람도, 가끔씩 웅성이는 나무들도단 하나의 소리의 흔들림만으로 손을 마주잡고한 명의 소녀의 연주를 돋보이게 하는 연출가가 되어 가며사람도 모여들며 태어나는 것은 절대의 조화...여기에 있는 것은 평온 뿐최대레벨HP2035ATK 0DEF2035한계 돌파스킬명스마이트 라이즈 발동 효과공격력 UP [20%] & Charge 후 데미지 UP [12.5%] (자신/3턴)쿨다운8턴최대레벨HP1522ATK 0DEF1522한계 돌파스킬명레지스트 업 서클 발동 효과상태 이상 내성 UP [30%] (전체/1턴)쿨다운10턴기본레벨최대레벨HP8072018ATK00DEF9672418기본 수치한계 돌파스킬명메즈메리제 게이즈발동 효과현혹 [80%] (적 1체/1턴) & 상태 이상인 적에게 주는 데미지 UP [40%] (자신/1턴)현혹 [100%] (적 1체/1턴) & 상태 이상인 적에게 주는 데미지 UP [45%] (자신/1턴)쿨다운8턴7턴초기레벨최대레벨HP8092022ATK9292322DEF00기본 수치한계 돌파어빌리티명리제네레이션 오라효과공격력 UP [15%] & 데미지 컷 [10%] & HP 회복 [3%]공격력 UP [20%] & 데미지 컷 [15%] & HP 회복 [4%]최대레벨HP2050ATK2050DEF0한계 돌파어빌리티명팬텀 스피릿 효과저주 및 암흑 무효 [100%] & Blast 데미지 UP [20%]초기레벨최대레벨HP8462115ATK8462115DEF00기본 수치한계 돌파어빌리티명이그노르 스턴효과기절 무효 [70%] & 공격력 UP [20%]기절 무효 [100%] & 공격력 UP [25%]「우왓, 얌마 밥 먹는데 놀라게 하지마」「앗하하, 오늘도 교과서 두고 와버렸어. 항상 미안─」「하~아...어째서 여고생이란 것들은 이렇게나 기운이 없는 거냐...」마치 학교는 자신을 죽이는 교도소 같아서, 숨이 막혀 괴로워진다최대레벨HP1685ATK1385DEF0한계 돌파어빌리티명배틀 어택 어뎁트 효과공격력 UP [15%] & HP 자동 회복 [3%]「오늘은, 츠바키 대신에 마츠리가 묶어줄게」「...그래, 고마워」「앗, 잘 잤나요. 슬슬 학교에 갈 시간이랍니다」「후아암...알고 있어. 걱정 안 해도 지각 안 하니까」초기레벨최대레벨HP6601650ATK6301575DEF00기본 수치한계 돌파어빌리티명아스트랄 라이즈효과공격 시 구속 [15%] (1턴) & 데미지 업 상태 [10%]공격 시 구속 [15%] (1턴) & 데미지 업 상태 [15%]언제나 그 애는 소중한 것을 빼앗아가언제나 그 애는 중요한 순간을 방해해언제나 그 사람은 나를 골라주지 않아...!한번 생겨버린 증오는 소녀의 마음을 좀먹고, 광기로 내달리게 한다최대레벨HP2238ATK1838DEF0한계 돌파어빌리티명액셀 번 엣지 효과Accele MP 획득량 UP [20%] & 공격시 화상 [30%] (2턴)본래라면 있을 수 없는 해후, 알 수 없었을 미래의 모습하늘의 인도인가, 가까운 미래에 두고 가버릴 아이들에게전하지 못했던 마음을 전할 기회를 얻었다「설령 이 목숨이 다한다고 하더라도, 이 마음은 언제나 당신들과 함께 있습니다」최대레벨HP2212ATK1912DEF0한계 돌파어빌리티명에피소드 웨폰 어뎁트 효과데미지 UP 상태 [10%] & 에피소드 경험치 획득량 UP [20%]「그녀들이 손에 들고 있는 것은 카미하마에서도 손꼽히는 초콜렛 전문점이만들어낸 최고의 일품. 우선 처음으로 소개할 미나기 시에서 가까운 전문점에서는농후한 카카의 향기가 코를 빠져나가는 비터한 맛이 인기. 사실은 녹차에도 딱 맞아서일본풍을 좋아하는 사람에게도 맛 보여주고 싶은 일품이다」Bittersweet AI Memory 이벤트 기간한정 샵에서 파는 2021 발렌타인 티켓으로 교환가능한 멤으로 에피작이 필요하면 다른 에피경험치 보너스 멤과 같이 끼고다니는것이 좋다.초기레벨최대레벨HP8492122ATK8892222DEF00기본 수치한계 돌파어빌리티명웨폰 스트라이크 어뎁트효과크리티컬 [25%] & 데미지 UP [20%]크리티컬 [25%] & 데미지 UP [25%]「...다 그렸어! 아기 돼지 10마리의 대가족~!」「와...굉장해...! 모두 특징적이고, 귀여워...」「에헤헤...다음엔 뭘 그릴까?」(...나도 열심히 해서 잔뜩 그려야지...!)초기레벨최대레벨HP8432108ATK8832208DEF00기본 수치한계 돌파어빌리티명바인드 어택 어뎁트효과공격력 UP [20%] & 공격 시 확률로 구속 [15%] (1턴)공격력 UP [25%] & 공격 시 확률로 구속 [20%] (1턴]「염원하던, 동경하던 일본의 유학 왔습니DA!인생은 단 한 번 뿐...그렇다면 즐기는 편이 좋은 것이 뻔하JO이건 대디와의 약속이기도 하니까YO!자, 오늘도 KAWAII를 찾으러 가죠! 자, 쿠마노스케!」북미판 전용멤 Kawaii Collection과 이름과 능력치, 어빌리티명은 바뀌었지만 효과는 동일하게 나왔다.최대레벨HP2240ATK1940DEF0한계 돌파어빌리티명안티 헤이즈 효과반드시 암흑 & 현혹 & 안개 무효해당 일러스트에서 보이는 손은 애슐리 테일러의 아버지의 손이다. 본편 애슐리의 마법소녀 스토리 이후로는 돌아가신 상황이지만 이벤트 스토리에서 소문의 영향으로 딱 한 번 만나게 되는데 거기서 만난 모습이다.최대레벨HP1388ATK1688DEF0한계 돌파어빌리티명레지스트 슬래시 어뎁트 효과데미지 UP [15%] & 상태 이상 내성 UP [25%]최대레벨HP1830ATK2230DEF0한계 돌파어빌리티명Never Forget 효과Blast 데미지 컷 [10%] & Blast 데미지 UP [30%]초기레벨최대레벨HP8842210ATK8442110DEF00기본 수치한계 돌파어빌리티명풀 스윙 업슬래시효과Blast 데미지 UP [20%] & Charge 후 데미지 UP [10%] & 데미지 UP [15%]Blast 데미지 UP [20%] & Charge 후 데미지 UP [12.5%] & 데미지 UP [20%]궁극 마도카 선배와 지고 이로하짱의 대결을 옛날 괴수 영화 포스터로 패러디했으며 밑에 출연진(호무라, 우이, 토우카, 네무, 히나노, 시즈쿠)도 깨알같이 적혔다.초기레벨최대레벨HP8452112ATK8452112DEF00기본 수치한계 돌파어빌리티명솔리드 어뎁트효과방어력 UP [37.5%] & 상태 이상 내성 UP [30%]방어력 UP [45%] & 상태 이상 내성 UP [35%]「이렇게 파파에게 "어서 와" 라고 손을 흔드는 것은 기쁘짐나또 "다녀오세요" 라고 손을 흔들 때가 올 거라 생각하면 무서워요긴 여행에 무슨 일이 일어날지 알 수 없으니까. 그러니까 배웅할 때에는 언제나기도를 잔뜩 담아서, 무사히 돌아오기를 바라고 있어요」최대레벨HP2045ATK2045DEF0한계 돌파어빌리티명오라 어뎁트효과공격력 UP [15%] & 데미지 컷 [10%]
# -*- coding:utf-8 -*-
%matplotlib inline
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import requests
from bs4 import BeautifulSoup
import re
# 크롤링할 사이트 주소를 정의한다
source_url = "https://namu.wiki/RecentChanges"
# 사이트의 HTML 구조에 기반하여 크롤링을 수행한다.
req = requests.get(source_url)
html = req.content
soup = BeautifulSoup(html, 'html.parser')
contents_table = soup.find(name="table")
table_body = contents_table.find(name="tbody")
table_rows = table_body.find_all(name="tr")
# a태그의 href 속성을 리스트로 추출하여, 크로링 할 페이지 리스트를 생성하자.
page_url_base = "https://namu.wiki"
page_urls = []
for index in range(0, len(table_rows)):
first_td = table_rows[index].find_all('td')[0]
td_url = first_td.find_all('a')
if len(td_url) > 0:
page_url = page_url_base + td_url[0].get('href')
if 'png' not in page_url:
page_urls.append(page_url)
# 중복 url을 제거 하자
page_urls = list(set(page_urls))
이제 이 주소들에 다시 한번 접급하여 문서의 본문과 제목, 그리고 카테고리에 등장하는 텍스트 데이터를 가져와 보자.
- 나무위키 최근 변경 데이터 크롤링하기
# 크롤링한 데이터를 데이터 프레임으로 만들기 위해 준비합니다.
columns = ['title', 'category', 'content_text']
df = pd.DataFrame(columns=columns)
# 각 페이지별 '제목', '카테고리', '본문' 정보를 데이터 프레임으로 만듭니다.
for page_url in page_urls:
# 사이트의 html 구조에 기반하여 크롤링을 수행합니다.
req = requests.get(page_url)
html = req.content
soup = BeautifulSoup(html, 'html.parser')
contents_table = soup.find(name="article")
title = contents_table.find_all('h1')[0]
# 카테고리 정보가 없는 경우를 확인합니다.
if len(contents_table.find_all('ul')) > 0:
category = contents_table.find_all('ul')[0]
else:
category = None
content_paragraphs = contents_table.find_all(name="div", attrs={"class":"wiki-paragraph"})
content_corpus_list = []
# 페이지 내 제목 정보에서 개행 문자를 제거한 뒤 추출합니다. 만약 없는 경우, 빈 문자열로 대체합니다.
if title is not None:
row_title = title.text.replace("\n", " ")
else:
row_title = ""
# 페이지 내 본문 정보에서 개행 문자를 제거한 뒤 추출합니다. 만약 없는 경우, 빈 문자열로 대체합니다.
if content_paragraphs is not None:
for paragraphs in content_paragraphs:
if paragraphs is not None:
content_corpus_list.append(paragraphs.text.replace("\n", " "))
else:
content_corpus_list.append("")
else:
content_corpus_list.append("")
# 페이지 내 카테고리정보에서 “분류”라는 단어와 개행 문자를 제거한 뒤 추출합니다. 만약 없는 경우, 빈 문자열로 대체합니다.
if category is not None:
row_category = category.text.replace("\n", " ")
else:
row_category = ""
# 모든 정보를 하나의 데이터 프레임에 저장합니다.
row = [row_title, row_category, "".join(content_corpus_list)]
series = pd.Series(row, index=df.columns)
df = df.append(series, ignore_index=True)
df.head()
title | category | content_text | |
---|---|---|---|
0 | 마기아 레코드 마법소녀 마도카☆마기카 외전/메모리아/2021년 | 마기아 레코드 | 하위 문서 [ 펼치기ㆍ접기 ]마기☆레포ㆍ미러즈ㆍ시스템ㆍ아이템ㆍ정신강화ㆍ카미하마 시... |
1 | 악당영애 길들이기 | 웹소설/ㅇ노벨피아/작품2021년 소설퓨전 판타지 웹소설성인 판타지 소설책빙의물나무위... | 악당영애 길들이기장르판타지, 아카데미, 책빙의,악녀, 하렘, 떡타지작가미츄리출판사노... |
2 | 알랭 들롱 | 프랑스 남배우전직 배우일드프랑스 출신 인물복수국적자1935년 출생1957년 데뷔20... | 은(는) 여기로 연결됩니다. 만화 벨제바브의 등장인물에 대한 내용은 알랭들롱(... |
3 | 작곡가 | 직업작곡가 | 1. 개요2. 상세3. 대한민국 대중음악계에서 작곡가의 위치4. 서구권과 일본 대중... |
4 | 쿠키런: 킹덤/건물/꾸미기 | 쿠키런: 킹덤 | 상위 문서: 쿠키런: 킹덤/건물게임 요소쿠키(특별한 인연) · 보물 · 건물... |
위의 실행 결과는 모든 URL의 텍스트 데이터를 가져온 뒤, 이를 데이터 프레임의 형태로 변환한 것이다. 데이터에 등장하는 불필요한 문자인 '\n','분류'는 크롤링 과정에서 replace()함수로 제거 한다.
Step 2 추출: 키워드 정보 추출하기¶
다음은 수집한 텍스트 데이터에서 키워드 정보를 추출하는 단계이다. 이를 위해 텍스트 전처리 작업이 필요하다. 텍스트 전처리는 특수문자나 외국어를 제거하는 등의 과정을 포함한다. 그런데 이는 언어와 상황마다 조금씩 다를 수 있다. 예를 들어 스팸메일을 분류하는 텍스트 마이닝의 경우, 특수문자나 외국어가 분석의 중요한 힌트가 될 수 있기 때문에 이를 제거하지 않는 편이다. 반면, 키워드 분석처럼 '단어'를 추출하는 것이 목적이라면 특정 언어의 글자만을 추출하기도 한다.
파이썬에서는 're'라는 모듈을 통해 정규표현식을 사용할 수 있다. 정규표현식이란 특정한 규칙을 가진 문자열의 집합을 표현하는 형식이다. 만약 다음 코드와 같이 re.compile('[^ㄱㅡㅣ가ㅡ힣]+')이라는 코드로 한글에 대한 정규표현식을 정의하면 대상이 되는 텍스트 데이터에서 한글만 추출할 수 있게 된다.
- 텍스트 데이터 전처리하기
# 텍스트 정제 함수: 한글 이외의 문자는 전부 제거 한다.
def text_cleaning(text):
hangul = re.compile('[^ ㄱ-ㅣ 가-힣]+') #한글의 정규표현식을 나타낸다.
result = hangul.sub('',text)
return result
print(text_cleaning(df['content_text'][0]))
하위 문서 펼치기접기 마기레포미러즈시스템아이템정신강화카미하마 시평가가챠 년년년년년이벤트 년년년년년감정전캠페인특훈메모리아 년애니메이션 기기에피소드엔드 카드평가등장인물 펼치기접기 토우카모모코카린쥬리시즈카하구무츠루노펠리시아쿄코쿄코수영복히미카료코엘리자스즈네츠바키스루가츠바사나노하소문 츠루노레이라아이미리카세이라메구루란카료우카오루라핀츠루노마나카아야메레나아오스나오이로하수영복야치요미후유소문 사나레나짱아마네 자매레나카에데사야카사야카하레기코노하마유준마요이아스카나나카메이유이마리아테마리우미카멜리사치사토야치요나츠키아키라세이카알리나네무치하루시구레알렉산드라홀리 알리나마미홀리 마미마미수영복미토츠무기유우나코노하하즈키마츠리나데코카에데모카메루치카유마하야테사나히나노카코사쿠야코노미카나기히카루모모코시스터이로하짱이로하야치요이로하우이마도카마도카하레기얼티밋 마도카궁극 마도카 선배호무라수영복코코로유키카사유키리코만년 벚꽃미츠네만년 벚꽃수영복타루토파이널 타루토시노부페이트츠카사마도카 선배하즈키마사라호토리오리코하루카사사라시즈쿠이로하미후유우이츠쿠요미카게작은 큐베토우카네무카나기뱀파이어호무라호무라안경나기사나기사밸런타인한나렌미쿠라카나에애슐리이쿠미루이리카렌키리카카즈미리즈펠리시아짱리아아야카리온코르보아리사히타기펠리시아카노코에미리쿠로미타마스다치요즈루리비아미타마하레기마녀소문감정마법소녀그룹마기우스의 날개카미하마 마기아 유니온토키메 일족 유나네오 마기우스히메나푸엘라 케어포클로어 오브 제로애니메이션오리지널쿠로에토우카모모코카린쥬리시즈카하구무츠루노펠리시아쿄코쿄코수영복히미카료코엘리자스즈네츠바키스루가츠바사나노하소문 츠루노레이라아이미리카세이라메구루란카료우카오루라핀츠루노마나카아야메레나아오스나오이로하수영복야치요미후유소문 사나레나짱아마네 자매레나카에데사야카사야카하레기코노하마유준마요이아스카나나카메이유이마리아테마리우미카멜리사치사토야치요나츠키아키라세이카알리나네무치하루시구레알렉산드라홀리 알리나마미홀리 마미마미수영복미토츠무기유우나코노하하즈키마츠리나데코카에데모카메루치카유마하야테사나히나노카코사쿠야코노미카나기히카루모모코시스터이로하짱이로하야치요이로하우이마도카마도카하레기얼티밋 마도카궁극 마도카 선배호무라수영복코코로유키카사유키리코만년 벚꽃미츠네만년 벚꽃수영복타루토파이널 타루토시노부페이트츠카사마도카 선배하즈키마사라호토리오리코하루카사사라시즈쿠이로하미후유우이츠쿠요미카게작은 큐베토우카네무카나기뱀파이어호무라호무라안경나기사나기사밸런타인한나렌미쿠라카나에애슐리이쿠미루이리카렌키리카카즈미리즈펠리시아짱리아아야카리온코르보아리사히타기펠리시아카노코에미리쿠로미타마스다치요즈루리비아미타마하레기마녀소문감정마법소녀그룹마기우스의 날개카미하마 마기아 유니온토키메 일족 유나네오 마기우스히메나푸엘라 케어포클로어 오브 제로애니메이션오리지널쿠로에현재 진행중인 이벤트 펼치기접기 미타마의 특훈 아키노 카에데 편 복각 년 월 일 월 일 개요 스킬 타입 각오하기 전에 바람이 분다 어느새 여기까지 소의 해는 감미로운 나의 해 더그레이트파더 그날 검류관야나기 검도장에서 원수는 그 손으로 갚아 믿고 있기에 내린 결의 계획은 스위트 테이스트 약속을 가슴에 새기고 아이짱을 만나고 싶습니까 는 무적 옷장과 상담한 뒤에 음색은 다정하게 녹아들어 수제 얼티밋 드레스 부드럽게 일상을 만들어 이건 그냥 산책이라 어빌리티 타입 무녀 자매의 춤 언제까지나 이대로 내숭 떠는 스쿨 타임 평소대로의 아침 광경 이제 돌이킬 수 없으니까 언제나 생각하고 있으니까 특별한 비터 테이스트 난관 이미지 트레이닝 동경하던 땅에서 크게 활약을 착하지 착하지 시크릿 오브 석세스 궁극 지고 손을 흔드는 행복 꽃 떨어져도 돌아오지 않는다마기아 레코드 마법소녀 마도카마기카 외전에서 년에 추가된 메모리아을 정리한 문서기본레벨최대레벨기본 수치한계 돌파스킬명에스페란자 포스발동 효과공격력 확률로 크리티컬 방어력 자신턴공격력 확률로 크리티컬 방어력 자신턴 쿨다운턴턴최대레벨한계 돌파스킬명딜리전스 라이즈발동 효과방어력 획득량 자신턴쿨다운턴같이 나온 어빌멤 언제까지나 이대로와 멤이름과 일러스트에 보는대로 상황이 반대다최대레벨한계 돌파스킬명스턴 어택발동 효과공격력 자신턴 기절 적 체턴쿨다운턴기본레벨최대레벨기본 수치한계 돌파스킬명블래스트 라이즈발동 효과 데미지 자신턴 데미지 자신턴 쿨다운턴턴하늘에 떠있는 별을 쥔다 그리고 자신이 모두를 능가하는 가장 빛나는 별이 된다바보가 계산해도 손에 닿지 않는 이상은 눈 앞에 있는 화염을 손에 쥔다자신의 투지와 감정을 의지하며 자신의 적을 수 없이 부숴나가면바라지 않더라도 언젠가 뜨겁고 뜨겁게 불타는 태양이 될 수 있을 것이다기본레벨최대레벨기본 수치한계 돌파스킬명아스트랄 라이즈발동 효과 획득량 마기아 데미지 자신턴 획득량 마기아 데미지 자신턴 쿨다운턴턴스승에게 항상 배우며 인간으로서의 자세를 교육 받은 것절친과 경쟁하며 부딪히며 서로를 이해해 나간 것지금에 와서는 이제 멀어져 버린 나날들아직 미숙했던 시절의 잊을 수 없는 소중한 추억해당 일러스트에 있는 인물은 츠바키의 마법소녀 스토리에서 언급된 야나기 요리코와 카스미 이치카다 원작 스즈마기는 물론 본편 마기레코에서도 제대로 등장하지 않고 츠바키의 마법소녀 스토리에서 언급이나 과거 회상 등을 통해 나오기만 했는데 이 이미지만 그려두자 라고 하면서 그린 것이라고 한다최대레벨한계 돌파스킬명딜리전스 라이즈발동 효과방어력 획득량 자신턴쿨다운턴나를 버린 츠바키랑 나한테서 츠바키를 빼앗아간 스즈네 쨩서로를 소중히 생각하면서 서로 죽이려 드는 거는 어떤 기분이야있지 츠바키 준비는 다 해줬으니까제대로 스스로의 손으로 스스로의 원수를 갚아줘최대레벨한계 돌파스킬명믿고 있기에 내린 결의발동 효과공격력 크리티컬 자신턴쿨다운턴함께 있고 싶다고 울며 매달려 오면 마음이 아파온다지금 당장이라도 안아주고 싶어진다그럼에도 결의는 바꾸지 않는다소중한 아이들이 행복한 미래를 손에 넣을 수 있을 것을 믿고 있으니까최대레벨한계 돌파스킬명오라 라이즈발동 효과공격력 데미지 컷 자신턴쿨다운턴초콜렛을 넘길 때 단숨에 무드를 띄워줄 수 있는 스팟이 카미하마에는 잔뜩 있다그 중에서도 가장 유명한 것은 츄오 구에 있는 전파탑 밑에 있는 쇼핑몰에서 즐겁게 보낸 다음의전망대는 마무리에는 최고의 장소이며 특히 밤까지 돌아다닐 수 없는 초등학생에겐 첫 도전에 추천하는 장소다 이벤트 기간한정 샵에서 파는 발렌타인 티켓으로 교환가능한 멤인데 성능이 낮아서 필요없다면 지르지않는 것이 좋다기본레벨최대레벨기본 수치한계 돌파스킬명블룸 다운발동 효과공격력 방어력 적 체턴공격력 방어력 적 체턴쿨다운턴턴딱 미토멤의 하위 호환이다최대레벨한계 돌파스킬명풀 버스트발동 효과 획득량 데미지 자신턴쿨다운턴최대레벨한계 돌파스킬명풀 스윙 업 라이즈발동 효과 데미지 후 데미지 자신턴쿨다운턴기본레벨최대레벨기본 수치한계 돌파스킬명스나이핑 블래스트발동 효과 데미지 자신턴 방어력 적 전체턴 데미지 자신턴 방어력 적 전체턴쿨다운턴턴마을에 가 잔뜩 넘친다이것도 저것도 하니까 이것도 저것도 가지고 싶지만옷장은 이미 로 한 가득하지만 오늘도 아주 약간 를 가지고 돌아가자북미판 전용멤 과 이름과 능력치 스킬명은 바뀌었지만 발동 효과는 동일하게 나왔다기본레벨최대레벨기본 수치한계 돌파스킬명카우어 레지스트 마기아발동 효과마기아 데미지 자신턴 상태 이상 내성 적 전체턴마기아 데미지 자신턴 상태 이상 내성 적 전체턴쿨다운턴턴최대레벨한계 돌파스킬명어트리션 번발동 효과화상 적 체 방어력 적 체턴쿨다운턴기본레벨최대레벨기본 수치한계 돌파스킬명카운터렉트 어택발동 효과디버프 해제 공격력 자신턴디버프 해제 공격력 자신턴쿨다운턴턴시치미를 떼고 지나가는 바람도 가끔씩 웅성이는 나무들도단 하나의 소리의 흔들림만으로 손을 마주잡고한 명의 소녀의 연주를 돋보이게 하는 연출가가 되어 가며사람도 모여들며 태어나는 것은 절대의 조화여기에 있는 것은 평온 뿐최대레벨 한계 돌파스킬명스마이트 라이즈 발동 효과공격력 후 데미지 자신턴쿨다운턴최대레벨 한계 돌파스킬명레지스트 업 서클 발동 효과상태 이상 내성 전체턴쿨다운턴기본레벨최대레벨기본 수치한계 돌파스킬명메즈메리제 게이즈발동 효과현혹 적 체턴 상태 이상인 적에게 주는 데미지 자신턴현혹 적 체턴 상태 이상인 적에게 주는 데미지 자신턴쿨다운턴턴초기레벨최대레벨기본 수치한계 돌파어빌리티명리제네레이션 오라효과공격력 데미지 컷 회복 공격력 데미지 컷 회복 최대레벨한계 돌파어빌리티명팬텀 스피릿 효과저주 및 암흑 무효 데미지 초기레벨최대레벨기본 수치한계 돌파어빌리티명이그노르 스턴효과기절 무효 공격력 기절 무효 공격력 우왓 얌마 밥 먹는데 놀라게 하지마앗하하 오늘도 교과서 두고 와버렸어 항상 미안하아어째서 여고생이란 것들은 이렇게나 기운이 없는 거냐마치 학교는 자신을 죽이는 교도소 같아서 숨이 막혀 괴로워진다최대레벨한계 돌파어빌리티명배틀 어택 어뎁트 효과공격력 자동 회복 오늘은 츠바키 대신에 마츠리가 묶어줄게그래 고마워앗 잘 잤나요 슬슬 학교에 갈 시간이랍니다후아암알고 있어 걱정 안 해도 지각 안 하니까초기레벨최대레벨기본 수치한계 돌파어빌리티명아스트랄 라이즈효과공격 시 구속 턴 데미지 업 상태 공격 시 구속 턴 데미지 업 상태 언제나 그 애는 소중한 것을 빼앗아가언제나 그 애는 중요한 순간을 방해해언제나 그 사람은 나를 골라주지 않아한번 생겨버린 증오는 소녀의 마음을 좀먹고 광기로 내달리게 한다최대레벨한계 돌파어빌리티명액셀 번 엣지 효과 획득량 공격시 화상 턴본래라면 있을 수 없는 해후 알 수 없었을 미래의 모습하늘의 인도인가 가까운 미래에 두고 가버릴 아이들에게전하지 못했던 마음을 전할 기회를 얻었다설령 이 목숨이 다한다고 하더라도 이 마음은 언제나 당신들과 함께 있습니다최대레벨한계 돌파어빌리티명에피소드 웨폰 어뎁트 효과데미지 상태 에피소드 경험치 획득량 그녀들이 손에 들고 있는 것은 카미하마에서도 손꼽히는 초콜렛 전문점이만들어낸 최고의 일품 우선 처음으로 소개할 미나기 시에서 가까운 전문점에서는농후한 카카의 향기가 코를 빠져나가는 비터한 맛이 인기 사실은 녹차에도 딱 맞아서일본풍을 좋아하는 사람에게도 맛 보여주고 싶은 일품이다 이벤트 기간한정 샵에서 파는 발렌타인 티켓으로 교환가능한 멤으로 에피작이 필요하면 다른 에피경험치 보너스 멤과 같이 끼고다니는것이 좋다초기레벨최대레벨기본 수치한계 돌파어빌리티명웨폰 스트라이크 어뎁트효과크리티컬 데미지 크리티컬 데미지 다 그렸어 아기 돼지 마리의 대가족와굉장해 모두 특징적이고 귀여워에헤헤다음엔 뭘 그릴까나도 열심히 해서 잔뜩 그려야지초기레벨최대레벨기본 수치한계 돌파어빌리티명바인드 어택 어뎁트효과공격력 공격 시 확률로 구속 턴공격력 공격 시 확률로 구속 턴염원하던 동경하던 일본의 유학 왔습니인생은 단 한 번 뿐그렇다면 즐기는 편이 좋은 것이 뻔하이건 대디와의 약속이기도 하니까자 오늘도 를 찾으러 가죠 자 쿠마노스케북미판 전용멤 과 이름과 능력치 어빌리티명은 바뀌었지만 효과는 동일하게 나왔다최대레벨한계 돌파어빌리티명안티 헤이즈 효과반드시 암흑 현혹 안개 무효해당 일러스트에서 보이는 손은 애슐리 테일러의 아버지의 손이다 본편 애슐리의 마법소녀 스토리 이후로는 돌아가신 상황이지만 이벤트 스토리에서 소문의 영향으로 딱 한 번 만나게 되는데 거기서 만난 모습이다최대레벨한계 돌파어빌리티명레지스트 슬래시 어뎁트 효과데미지 상태 이상 내성 최대레벨한계 돌파어빌리티명 효과 데미지 컷 데미지 초기레벨최대레벨기본 수치한계 돌파어빌리티명풀 스윙 업슬래시효과 데미지 후 데미지 데미지 데미지 후 데미지 데미지 궁극 마도카 선배와 지고 이로하짱의 대결을 옛날 괴수 영화 포스터로 패러디했으며 밑에 출연진호무라 우이 토우카 네무 히나노 시즈쿠도 깨알같이 적혔다초기레벨최대레벨기본 수치한계 돌파어빌리티명솔리드 어뎁트효과방어력 상태 이상 내성 방어력 상태 이상 내성 이렇게 파파에게 어서 와 라고 손을 흔드는 것은 기쁘짐나또 다녀오세요 라고 손을 흔들 때가 올 거라 생각하면 무서워요긴 여행에 무슨 일이 일어날지 알 수 없으니까 그러니까 배웅할 때에는 언제나기도를 잔뜩 담아서 무사히 돌아오기를 바라고 있어요최대레벨한계 돌파어빌리티명오라 어뎁트효과공격력 데미지 컷
모든 데이터에 전처리를 적용하기 위해서는 apply() 함수를 사용한다. 다음 코드는 title,category,content_text 3개의 피처에 apply()함수를 적용한 것이다. 이를 head()함수로 출력하면 한글을 제외한 문자들이 제거된 것을 확인할 수 있다.
- 모든 데이터에 전처리 적용하기
# 각 피처마다 데이터 전처리를 적용한다.
df['title'] = df['title'].apply(lambda x: text_cleaning(x))
df['category'] = df['category'].apply(lambda x: text_cleaning(x))
df['content_text'] = df['content_text'].apply(lambda x: text_cleaning(x))
df.head()
title | category | content_text | |
---|---|---|---|
0 | 마기아 레코드 마법소녀 마도카마기카 외전메모리아년 | 마기아 레코드 | 하위 문서 펼치기접기 마기레포미러즈시스템아이템정신강화카미하마 시평가가챠 년년년년... |
1 | 악당영애 길들이기 | 웹소설ㅇ노벨피아작품년 소설퓨전 판타지 웹소설성인 판타지 소설책빙의물나무위키 웹소설 ... | 악당영애 길들이기장르판타지 아카데미 책빙의악녀 하렘 떡타지작가미츄리출판사노벨피아연재... |
2 | 알랭 들롱 | 프랑스 남배우전직 배우일드프랑스 출신 인물복수국적자년 출생년 데뷔년 은퇴 | 은는 여기로 연결됩니다 만화 벨제바브의 등장인물에 대한 내용은 알랭들롱벨제바브 ... |
3 | 작곡가 | 직업작곡가 | 개요 상세 대한민국 대중음악계에서 작곡가의 위치 서구권과 일본 대중음악계에서 작곡... |
4 | 쿠키런 킹덤건물꾸미기 | 쿠키런 킹덤 | 상위 문서 쿠키런 킹덤건물게임 요소쿠키특별한 인연 보물 건물랜드마크 꾸미... |
다음 과정은 키워드를 추출한 뒤, 빈도 분석을 수행하는 과정이다. 여기서 키워드를 추출한다는 것은 무엇을 의미 할까? 키워드 추출이란 좁은 의미에서는 명사, 혹은 형태소 단위의 문자열을 추출하는 것이다. 이를 수행 하기 위해 말뭉치라는 것을 만들어야 한다. 말뭉치는 말 그대로 텍스트 데이터의 뭉텅이를 의미한다. 이번 예제에서는 제목단위, 카테고리 단위, 본문 단위의 키워드를 분석하기 위해 제목 말뭉치, 카테고리 말뭉치, 본문 말뭉치 총 3개의 말뭉치를 생성한다. 다음 코드에서는 텍스트 피처를 tolist()로 추출한 뒤, join() 함수로 말뭉치를 생성해주었다. 실행 결과는 제목 말뭉치의 출력 결과이다.
- 말뭉치 만들기
# 각 피처마다 말뭉치를 생성한다.
title_corpus = "".join(df['title'].tolist())
category_corpus = "".join(df['category'].tolist())
content_corpus = "".join(df['content_text'].tolist())
print(title_corpus)
마기아 레코드 마법소녀 마도카마기카 외전메모리아년 악당영애 길들이기 알랭 들롱 작곡가 쿠키런 킹덤건물꾸미기 바이에른뮌헨 마이너 갤러리 건담 아르테미스 콘돔 미국인 제대 국회의원 선거선거구 획정 타워 메르세데스벤츠 블랙 메사게임 리그년 기믹 로자바 나인로드 오브 히어로즈 동남여객 변호사제인격 불멸의 게이머 주지유 스테인 재재논란 및 사건사고 주접 한강 의대생 실종 사건 조강옥 료마전등장인물 칼슘 파일전통적 플란데런 문장위키미디어 공용 로켓단 스갤문학 모범택시드라마등장인물 알부민 구로다 기요타카 천재캐릭터 을지대학교 버스트 안성 버스 이한도 김사랑 킹갓캐슬 한국프로농구 시즌 무화과맛 쿠키 더미 데이터 여자친구아이돌 모드 국가구 소련 고양동산고등학교 프란체스코 베첼리오 모데카이저 볼드모트 크몽 이투스 오월의 청춘 틀 참가팀 메르세데스 하남 버스 두분토론 알레비파 라이덴메탈기어 시리즈 파일 강태린 레이드배틀성 측천무후 괴물스위트홈 유재석수상 내역 파일플란데런 백국 문장 쌍검몬스터 헌터 라이즈 영구결번스포츠 한화 이글스 군산복합체 실버 채리엇 레퀴엠 호랑가시나무땅 시험 기관별 진도 차이 파일
- 출처: 이것이 데이터 분석이다 with 파이썬
'이것이 데이터분석 이다 with 파이썬' 카테고리의 다른 글
Chapter 5.2 구매 데이터 분석 (0) | 2021.05.07 |
---|---|
Chapter 5.1 중고나라 휴대폰 거래가격 예측 (0) | 2021.05.07 |
Chapter3.3_Movie (2) | 2021.05.03 |
Google Analytics 4 _ tistory 연계 방법 (0) | 2021.04.27 |
Chapter 3.1 프로야구 선수의 다음 해 연봉 예측하기 (0) | 2021.04.24 |