반응형

문제

python을 통한 gmail 보내기 테스트 중 아래와 같은 에러가 발생하였습니다.  2022년 5월 30일 부로 바뀐 구글 정책으로 인해 발생한 것 같습니다.

 

 

해결

1. 구글계정 접속

2. Google 계정관리(오른쪽 위 프로필 클릭)

3. 왼쪽 탭에 있는 보안 클릭

4. 2단계 인증 클릭 후 인증을 통한 활성화

5. 인증 후 다시 보안탭을 클릭 하면 아래 앱 비밀번호가 보입니다

 

6. 앱 비밀번호 클릭 후 앱 선택 기타 

7. Python 입력 후 생성

8. 생성 후 로그인 비밀번호 대신 기기용 앱 비밀번호 입력

9.메일이 정상적으로 보내지는 것을 확인할 수 있습니다.

반응형
반응형

문제

Colab에서 python을 통해 그래프(plot)를 그릴 경우, 한글깨짐 현상이 나타날 수 있습니다.

해결

#나눔 폰트 설치
!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf

#matplotlib font 설정
import matplotlib .pyplot as plt
plt.rc('font', family='NanumGothic')

 

위의 코드실행 후 다시 그래프를 그릴 경우 아래와 같이 한글이 잘 나타납니다.

혹시 깨짐현상이 다시 발생하는 경우 런타임 다시시작 클릭 후 실행하면 한글이 나타납니다

 

추가-다른글꼴사용

나눔고딕이 글씨체가 마음에 들지 않다면, 글꼴을 설정할 수 있습니다.

아래 코드를 입력하면 현재 코랩환경상에서 사용할 수 있는 font 목록을 불러올 수 있습니다. 

import matplotlib.font_manager as fm
sys_font=fm.findSystemFonts()
print(f"sys_font number: {len(sys_font)}")
sys_font

font 리스트에서 마음에 드는 글꼴을 선택하여 그래프를 그리면 됩니다.

#원하는 글꼴 설정
plt.rc('font', family='NanumMyeongjo') 
df_merge[df_merge['name']=='taegu'].groupby('datetime')['title'].count().plot()
plt.title('태구 Trend',fontsize=15)
plt.show()

반응형
반응형

Konlpy라이브러리를 처음 실행하다 보면 위와 같은 에러를 만날 수 있습니다.

 

예를들어 Okt를 통해 형태소분석 또는 명사추출을 진행할 때 아래와 같이 Okt.morph 또는 Okt.pos처럼 사용할 때 발생합니다.

 

from konlpy.tag import Okt
Okt.pos('오늘 배가 아파서 화장실을 갔어')


#TypeError Traceback (most recent call last)
#<ipython-input-138-573929ee924f> in <module>
#      1 from konlpy.tag import Okt
#----> 2 Okt.pos('오늘 배가 아파서 화장실을 갔어')

#TypeError: pos() missing 1 required positional argument: 'phrase'

 

해결 방법은 다음과 같습니다. Okt를 사용할때 가로를 넣어주면 됩니다. 

대부분 아래 두번째 방법을 많이 사용합니다.

반응형
반응형

tqdm 라이브러리는 반복문을 실행할 때 진행사항을 알려주는 유용한 라이브러리입니다.

아래와 같이 완료시간 및 진행시간, 진행횟수를 알려줍니다.

 

아래와 같이 에러가 발생할 경우

ipywidgwts 설치 후 커널을 재시작하게 되면 기능이 정상적으로 작동합니다.

반응형
반응형

최근 법률관련 데이터를 얻기 위해 공공데이터 포털을 이용했습니다.

https://www.data.go.kr/index.do

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

 

해당 데이터는 생활법률지식 정보였으며, 생활법률에 대한 Q&A데이터 였습니다.

아래 요청 주소 및 요청에 필요한 Parameter가 있습니다. 

 

API Parameter

코드

인증키의 경우 회원가입 후 특정 API에 대한 사용신청을 하게되면 얻을 수 있으며 약 1일 소요됩니다. requests.get을 통해 데이터를 얻었으며 beautifulsoup를 통해 xml로 파싱해줬습니다. 그 후 DataFrame으로 변형 후 합치는 코드입니다.

결과

반응형
반응형

python을 통해 pdf파일을 다운받는 중 제목과 같은 에러가 발생하였습니다.

 

에러 발생코드

import urllib
from random import randint

# a는 pdf주소가 저장된 list / b는 pdf문서 이름이 저장된 list
for i, n in enumerate(tqdm_notebook(a)):
	#random sleep
    sleep(randint(1,10))
    #주소를 통해 파일 다운로드
    urllib.request.urlretrieve(n, "{}.pdf".format(b[i]))

 

발생이유

https://file.download.com?file=1440047203387.pdf&path=001&downFile=파일다운12해보자.pdf

위와 같은 url에서 파일다운12해보자 부분을 encoding할 수 없어 발생하는 에러입니다.

 

해결

urllib라이브러리 quote_plus를 이용하여 urlencoding를 진행하면 됩니다.

url encoding

 

반응형
반응형

split는 strings objects를 input으로 받기 때문에 list가 들어오는 순간 에러를 발생합니다..

text = ['아버지 가방에 들어가신다']
text.split(" ")
#AttributeError: 'list' object has no attribute 'split'

 

 

리스트 안에 str값을 넣어줘야 split가 작동합니다.

text = ['아버지 가방에 들어가신다']
text[0].split(" ")
#['아버지', '가방에', '들어가신다']

 

 

output 값이 ['아버지', '가방에', '들어가신다'] 이렇게 나온 것을 볼 수 있습니다.

분리된 값이 리스트 안에 요소로 들어가 있습니다. 그렇다면 원상태로 되돌리려면 어떻게해야할까요?

#output 리스트 벗기기
text = ['아버지', '가방에', '들어가신다']
" ".join(text)
#'아버지 가방에 들어가신다'

 

반응형
반응형

저는 숫자 자체를 문자열로 취급하여 Word2vec를 돌리기 위해 리스트 안의 숫자들을 문자로 변경할 필요가 있었습니다.

리스트 안에 문자열 생성
a = ['1233113', '21424214', '14514214', '3213123']
a
# ['1233113', '21424214', '14514214', '3213123']


리스트 안에 문자를 숫자로 변경
a = list(map(int, a))
a
# [1233113, 21424214, 14514214, 3213123]


리스트 안에 숫자를 문자로 변경
a = list(map(str, a))
a
# ['1233113', '21424214', '14514214', '3213123']

 

반응형

+ Recent posts