본문 바로가기

텍스트

[자연어 처리] RNN 텍스트 분류 모델, 어떠한 활성화 함수 & 손실 함수를 사용하는게 좋을까요? - RNN으로 텍스트 분류 모델을 만들 때, 어떠한 활성화 함수와 손실 함수를 사용하는 게 좋을까요? RNN 구조를 이용한 텍스트 분류 문제는 모든 time step(시점 수 = 던어 수)에 대해 입력을 받고, 최종 출력 층에서 활성화 함수를 통해 하나의 답을 고르는 문제인데요, 이때 출력층에서 두 개의 선택지 중에서 답을 고르는 건지, 세 개 이상의 선택지에서 답을 고르는 건지에 따라 이진 분류 또는 다중 클래스 분류로 나누어집니다. 만약, 여기서 이진 분류의 문제로 해결을 하고 싶다면 활성화 함수는 Sigmoid 함수를, 손실 함수는 binary_crossentropy를 사용하는 것이 적절합니다. 반면, 다중 클래스 문제이 경우 활성화 함수를 Softmax, 손실함수를 categorical_cross.. 더보기
[웹크롤링] 'title', 'src', 'href' 속성에 있는 텍스트 크롤링하기 웹 크롤링을 하다 보면, 'title', 'src', 'href' 속성에 있는 텍스트 또는 url을 크롤링해야 할 수 있는데요, 태그 이름 또는 클래스 이름으로 찾는 방법은 쉽지만 title, src, href과 같은 속성으로 텍스트를 추출하는 방법을 잘 모를 수 있습니다. 따라서 코드를 살펴보면서 크롤링하는 방법에 대해서 알아볼건데요, 예시로 아래 이미지처럼 네이버 뉴스 기사에서 '서울경제'라는 이미지가 있는 태그에서 '서울경제'라는 텍스트를 추출해보겠습니다. 오른쪽 태그를 더 자세히 보면, 라는 상위 태그 아래 태그에 'title'속성에 '서울경제'라는 텍스트가 적혀있는 것을 확인할 수 있습니다. 이제 이 텍스트를 크롤링하는 코드에 대해서 살펴보도록 하겠습니다. url = https://news.na.. 더보기
[웹크롤링] 검색창에 입력된 텍스트 지우는 방법 - clear() 만약 검색창이 있는 페이지 또는 쇼핑몰 사이트에서 원하는 검색어를 입력한 뒤, 해당 페이지를 크롤링할 때, 검색창에 텍스트를 입력해야 합니다. 하지만 여러 키워드로 검색을 할 때, 기존의 키워드를 지워야 하는데요, 이때 검색창에서 텍스트를 지우는 방법에 대해서 알아보도록 하겠습니다. 예시로, 네이버 홈페이지에 '여행'이라는 검색어를 입력하는 코드를 작성해보겠습니다. (selenium과 크롬 드라이버를 사용한다는 가정하에 설명드리겠습니다.) from bs4 import BeautifulSoup from selenium import webdriver import time path = "c:/temp/chromedriver_240/chromedriver.exe" #chomedriver의 경로 driver = .. 더보기
[웹크롤링] 이모티콘, 텍스트나 이미지로 변경해서 크롤링 하는 방법 웹 크롤링을 할 때, 이모티콘의 경우 텍스트로 인식이 되지 않아서 오류가 발생하기도 하는데요, 이러한 경우엔 이모티콘을 다른 글자나 이미지로 변경해서 저장하도록 하는 코드를 작성해야 합니다. 그렇다면 아이콘이나 이모티콘을 글자로 변경하는 코드에 대해서 알아보도록 하겠습니다. - 이모티콘, 텍스트나 이미지로 변경하기 먼저 코드부터 보도록 하겠습니다. bmp_map = dict.fromkeys(range0x1000,sys.maxunicode + 1), 0xfffd) try : title = li.find('div',textcontents) except AttributeError : print(title.replace("\n","") else : title2 = title1.transiate(bmp_map)... 더보기
[웹크롤링] 텍스트 입력 시 글자가 생략되거나 오타가 나는 문제, 해결 방법은? 크롤링할 때, 예를 들어 검색창에 지정된 텍스트를 입력하도록 할 때, 입력 속도가 너무 빨라서 그런지 중간에 오타가 나거나 글자가 생략되는 경우가 있을 수 있습니다. 예를 들어, 아래는 네이버 검색창에 "안녕하세요! 디노랩스 블로그입니다. 언제든지 방문해주세요:D" 라는 텍스트를 작성하는 코드인데요, from bs4 import BeautifulSoup from selenium import webdriver import time path = "c:/temp/chromedriver_240/chromedriver.exe" ###chomedriver의 경로 위치 driver = webdriver.Chrome(path) driver.get("http://naver.com") time.sleep(2) # 2초기달.. 더보기
[웹크롤링] 크롤링한 데이터 메모장(텍스트 파일)에 저장하는 방법 크롤링한 데이터를 메모장과 같은 텍스트 파일에 저장하려면 sys library를 이용하면 되는데요, sys library에서 표준 출력 방향을 모니터가 아닌 다른 변수로 지정해주는 기능을 제공합니다. 즉, 모니터에 출력되는 것이 아니라 텍스트 파일에 저장해주고, 이를 다시 되돌려주기 위해 sys library를 사용하는 것입니다. 따라서 텍스트를 저장하기 전 다음과 같이 코드를 입력해 주어야 합니다. import sys orig_stdout = sys.stdout f = open(f_name, 'a', encoding='UTF-8') #f_name = 파일경로+파일이름.txt로 설정 필요 sys.stdout = f 두 번째 코드는 표준 출력 방향을 모니터가 아닌 다른 변수로 지정한다는 코드고, 세 번째 .. 더보기
[웹크롤링] 네이버 검색창에 검색어 입력하는 방법 (selenium) 네이버 홈페이지는 크롤링할 때 자주 사용되는 페이지 중 하나인데요, 네이버 홈페이지의 검색창에 원하는 텍스트를 입력한 뒤, 검색버튼을 누르는 코드에 대해서 살펴보도록 하겠습니다. 먼저, 네이버 홈페이지를 여는 코드를 작성하도록 하겠습니다. from bs4 import BeautifulSoup from selenium import webdriver import time path = "c:/temp/chromedriver_240/chromedriver.exe" #사용자 크롬드라이버경로 입력 driver = webdriver.Chrome(path) driver.get("http://naver.com") time.sleep(2) # 2초기달리기 필요한 라이브러리를 import 한 뒤, path 변수에 크롬드라이.. 더보기
[웹크롤링] 원하는 태그 찾기 + 텍스트 추출 - find 웹 크롤링을 할 때, 가장 많이 사용하는 함수 중 하나가 바로 find() 함수인데요, 아래 코드를 보면서 find() 함수에 대해 살펴보도록 하겠습니다. 1. find() : 태그 찾기 먼저, 아래와 같은 html이 있다고 가정해보겠습니다. html1=''' hello! ''' 위 html에서 만약 'hello!' 라는 텍스트를 찾고 싶을 때, 이 텍스트가 있는 태그를 알아야 하는데요, 해당 텍스트는 태그에 있는 것을 알 수 있습니다. 이제 이 텍스트를 찾기 위해 find() 함수를 사용하면 되는데요, find 함수 안에 해당 태그 명을 입력하면 됩니다. soup = BeautifulSoup(html1, 'html.parser') #html.parser는 html 분석 도구 soup.find('div'.. 더보기
[웹크롤링] 크롤링해서 얻은 텍스트, 앞 뒤 공백 제거하려면? - strip 크롤링을 하면 주로 텍스트를 추출하게 되는데요, 이때 추출한 텍스트 앞, 뒤로 공백이 같이 추출될 수 있습니다. 이러한 경우 공백을 제거한 뒤 저장하는 것이 나중에 분석 및 처리를 위해서도 좋은데요, 어떻게 하면 앞, 뒤 공백을 제거할 수 있는지 살펴보도록 하겠습니다. - strip() : 문자열 앞 뒤 공백 제거하기 먼저, 다음과 같이 뉴스 기사 제목을 크롤링해서 저장한 리스트가 있다고 가정해보겠습니다. news = [' KBS \'절반 억대연봉\' 사과에…나경원 "수신료인상 반대" ', ' SK하이닉스 성과급 불만에 최태원 "작년 연봉 전부 반납" 선언', " 안철수-금태섭 채널 열렸다…野 '계단식 단일화론' 급물살(종합)" , '與, 법관탄핵안 161명 공동발의…4일 국회통과 유력(종합) ', ' .. 더보기
[데이터분석] matplotlib 그래프 : x축 텍스트 회전하는 방법 - rotation matplotlib 라이브러리는 그래프를 쉽고 간편하게 그릴 수 있도록 도와주는 라이브러리입니다. matplotlib에서는 그래프를 다양하게 그릴 수 있도록 여러 모듈을 제공하는데요, 그중 x축 텍스트를 회전하는 방법에 대해서 살펴보도록 하겠습니다. 먼저, 아래와 같이 간단한 그래프를 그려보도록 하겠습니다. import matplotlib.pyplot as plt import numpy as np x = np.arange(8) item = ['ice coffee', 'hot tea', 'ice ade', 'hot milk', 'ice water', 'ice coke', 'oil', 'smoothie'] values = [2000, 4000, 5000, 2000, 4500, 3000, 5000, 6000].. 더보기