반응형

파이썬 38

python study : Generator

제너레이터(Generator)는 파이썬의 시퀀스를 생성하는 객체이다. 제너레이터로 전체 시퀀스를 한번에 메모리에 생성하고 정렬할 필요 없이, 잠재적으로 아주 큰 시퀀스(예를 들면 range 등..)을 순회할 수 있다. def rangess(first = 0, last = 100, step = 1): number = 0 while number > rangers = rangess(1,20) >> rangers 이 개념에 대해서 보았을 때는 아무리 쳐도 의 말이 나와서 어떤 것을 저장한다는지 이해가 잘 되지 않았었는데.. 다시 보고 이해가 되지 않는 것들을 찾아보았다. 왜, 값을 리턴하지 않고 객체가 나오지..?라는 의문이 가시지를 않아 계속 찾아보고 있었는데, 때마침 제너레이터에 대해서 잘 정리해준 글을 올..

언어/Python 2020.03.28

python error: do_this( ) takes 1 positional argument but 15 were given

해당 에러는 파이썬에서 나타나는 전달된 인자 갯수와 관련된 에러타입이다 함수는 위치 인자를 1개 취하는데, 이 개수보다 많은 인자가 위치 인자로 전달되었거나, 특정하게 지정되지 않은 인자가 전달되지 않았을 때 나타나는 에러이다. 이 상황은 주로 2가지 상황에서 나타나는 것 같은데.. 첫번째는 class 함수에 self 가 들어가지 않았을 때 위 첫번재 에러의 경우에는 아직 코드로 구현을 하지 않아서 . 나중에 참고하기 위해 링크를 남겨둔다 https://stackoverflow.com/questions/23944657/typeerror-method-takes-1-positional-argument-but-2-were-given TypeError: method() takes 1 positional argu..

python error: The "freeze_support()" line can be omitted if the program is not going to be frozen to produce an executable.

위 에러는 multiprocessing 을 실행할 때, if __name__ == '__main__': 과 freeze_support( ) 를 사용하지 않고 실행했을 때 나타나는 에러이다. 우선 if __name__ == '__main__' 의 경우에는 이미 실행된 함수가 다른 객체에 할당되어 실행될때, 이전의 내용과 중복되어 실행되는 것을 막아주는 기능을 하는데 중복/반복을 막아 자원이 중복 사용되는 것을 막아주는 함수이다. 그리고 freeze_support( ) 의 경우에는 파이썬 multiprocessing 이 윈도우에서 실행될 경우, 자원이 부족할 경우를 대비해 파일 실행을 위한 자원을 추가해주는 역할을 하는 함수이다 그리고 효율 적인 자원 사용과 중복 방지를 위하여 if __name__ =='_..

Python IDE - VS code 단축키 정리 1

파이참만 쓰다가 여러가지로 불편한 점이 있어서 최근 VS 코드로 옮겼는데, 파이참에 익숙해져서 인지 여러므로 익숙해지는데 시간이 걸릴 것 같다. 자주 사용하는 단축키 우선 정리해두어야 겠다. 코드 실행 한꺼번에 실행하기 : Ctrl + F5( 디버깅의 기능도 있다) 한줄식 실행하기 : Ctrl + Enter (실행시키고 싶은 부분의 코드를 드래그한후 해당 키를 누르면 그 부분이 전체가 실행) 다른 파일로 옮기기 : Ctrl + F6 - 해당 코드를 실행시키면 다른 파일로 옮겨갈 수 있다 디버깅 : F10 - 디버깅은 시작파일로 등록된 파일만 계속 실행이 되기 때문에 이점이 좀 불편하다. - 파이참은.. 그냥 다 되었었는데.. 디버깅을 하려면 파일을 새로 만들고 그 파일을 바탕으로 계속 실행이 되므로 주의..

언어/Python 2020.03.17

Introducing python 참고 개념 : multiprocessing

싱글 머신에서 다수의 작업을 가능한 한 빠르게 처리하고 싶을 때, 이들을 독립적으로 만들어 처리하는 작업 멀티 프로세싱을 활용하면 복잡하고 시간이 걸리는 작업을 벼롣의 프로세스를 생성 후 병렬처리해서 보다 빠른 응답처리 속도를 기대할 수 있는 장점이 있다. 최근들어 대용량의 빅데이터 분석 및 예측 등의 머신 러닝을 지원하는 다양한 패키지에서 대부분 멀티 프로세싱을 활용하여 멀티코어의 CPU의 장점을 극대화하고 빠른 처리를 지원하고 있다. 하지만, 멀티프로세싱은 오버해드의 증가 및 메모리 사용률이 높아지는 단점도 있다. 대표적인 파이썬의 multiprocessing 라이브러리는 Pool 객체가 있다. 아래 링크들을 통해 자세한 내용을 이해할 수가 있다. 첫번째 링크는 multiprocessing 에 대한 ..

언어/Python 2020.03.17

python error L “TypeError: __str__ returned non-string” but still prints to output?

__str__ 는 특수 메서드 중 하나입니다. class Element(): def __init__(self, name, symbol, number): self.name = name self.symbol = symbol self.number = number def __str__(self): print("name:{0} symbole:{1} number:{2}".format(self.name, self.symbol, self.number)) 특수 메서드는 print 가 아닌 return 으로 값을 받아줘야 에러없이 출력이 되는데 위 에어는 print( ) 로 값을 받아서 생긴 에러였네요 print( ) --> return 으로 해야합니다. class Element(): def __init__(self, n..

python error : __init__() missing 1 required positional argument:

아... 너무 쪽팔리는 에러를 만났네여.. 함수를 만들어 놓고도.. 안에 값을 넣지 않아서.. 저런 에러를 만나고 30분을 고민햇다니..!!!으!!! 일단 에러를 낸것이니 기록! class Thing(): def __init__(self, example): self.example = example thin = Thing(#이 부분이 문제였음) 위에 class 를 만들어주고 이를 thin 이라는 객체에 담아주었는데 __init__ 라는 초기화 함수를 써주었는데요. 처음에는 이해가 안되었지만, 이 에러를 풀고 원인을 공부하는 과정에서 이 함수를 왜 쓰는지 짐작을 할 수 있게 된 것 같네요 __init__ 는 초기화 함수라고 해서 객체를 만들때마다 클래스를 초기화해서 새것처럼 사용할 수 있게 만들어줍니다.. ..

RASA 오픈소스 를 통해 간단한 챗봇 구축하고 훈련하기 04

두번째 포스트까지는 기본 챗봇을 만들 수 있는 방법을 알려드렸습니다. 이번 포스트는 두번째 포스트를 기반으로 챗봇을 조금이나마 한단계 업그레이드 할 수 있는 단계로 반드시, 따라하지 않으셔도 됩니다. 챗봇에서는 slot filling(슬롯 채우기)라는 기능이 있습니다. 슬롯 채우기는 몇개의 정보를 알아내어야 챗봇이 답을 줄 수 있을 때, 그 몇개의 정보(slot)들을 다 채워 넣는 것(filling)으로 모든 슬롯이 다 채워질때까지 질문을 하는 것입니다 챗봇은 슬롯에 필요한 정보들을 다 채우면 사용자가 원하는 정보를 출력해 줄수 있습니다. rasa 에는 3가지 정도의 슬롯 필링이 있다고 알고 있는데요 오늘은 그 중 하나인 action.py 파일을 활용하여 슬롯 채우기를 실행 할 수 있는 방법을 하려고 합..

RASA 오픈소스 를 통해 간단한 챗봇 구축하고 훈련하기 03

저번 포스트까지는 기본 챗봇을 만들 수 있는 방법을 알려드렸습니다. 이번 포스트는 저번 포스트를 기반으로 챗봇을 조금이나마 한단계 업그레이드 할 수 있는 단계로 반드시, 따라하지 않으셔도 됩니다. Response Selector NLU component 는 사람들끼리 간단하게 할 수 있는 일상 대화와 자주 물어보는 간단한 FAQ 관련 메시지들을 처리하기 위해 사용되는 RASA 챗봇의 요소 중 하나인데요. 이 기능을 사용하면 챗봇과 유저간에 일어날 수 있는 수많은일상적인 대화들과 FAQ 들을 처리하기 위한 스토리들과 인텐트들을 다 만들지 않고 간편하게 해결할 수 있어서 괜찮은 기능이라고 생각해요. 유저들은 챗봇에게 이런 저런 질문이나 시시콜콜한 이야기등을 하는데요. 라사 챗봇은 그렇게 들어오는 인텐트들을 ..

RASA 오픈소스 를 통해 간단한 챗봇 구축하고 훈련하기 02

이번에는 간단하게 자신이 원하는 챗봇을 만들어보겠습니다. 일단 저의 경우에는 챗봇을 구축하면서 RASA 오픈 소스를 이해하는 것에 방점을 두었기 때문에 빠르게 챗봇에 대한 뼈대를 구축하고자 했습니다 우선, RASA 를 통해 어떻게 챗봇을 만드는지 과정을 간단하게 설명해드리겠습니다. 간단하게 개인적으로 유튜브에 업로드 해놓은 동영상을 참고해주시기 부탁드릴게요 (채널홍보가 아니며, 추후에 저도 접근이 쉬운 플랫폼인 유튜브 채널을 선택하게 되었어요!) https://youtu.be/-eeshd7p0FQ 챗봇을 만드는 법에 대해서 제가 직접 간단하게 촬영해본 영상입니다 ^^ㅎㅎ 먼저, stories.md 파일을 열어서 만들고 싶은 스토리를 설정을 해주세요! 챗봇의 경우에는 '내가 어떻게 이야기를 진행시킬 것인가..

반응형