멀티 쓰레드를 사용한다고 싱글 쓰레드에 비해서 무조건 작업 속도가 빨라지지 않는다. 이유는 파이썬의 GIL(Global Interpreter Lock) 때문인데, 다른 블로그의 글을 인용하자면 CPython에서의 GIL은 Python 코드(bytecode)를 실행할 때에 여러 thread를 사용할 경우, 단 하나의 thread만이 Python object에 접근할 수 있도록 제한하는 mutex이다. 그리고 이 lock이 필요한 이유는 CPython이 메모리를 관리하는 방법이 thread-safeness하기 때문이다. 결국 같은 시간에 실행되는 쓰레드는 무조건 1개이며, 멀티 쓰레드는 GIL이 적용되지 않는 즉, CPU 동작이 아닌 I/O 동작이 많은 프로그램에 구현했을 때 가장 이상적이다. 그렇다면 왜 ..
def save_model(tokenize, epochs, min_alpha, corpus_list, model_name): # Mecab tagger = Mecab() # corpus 저장 리스트 tagged_corpus_list = [] # corpus 생성 (TaggedDocument 추가) for corpus in corpus_list: # 태그 tag = corpus[0] # 내용 word = corpus[1] # tokenize에 따라 다른 방법으로 Word Tokenize if tokenize == 'morphs': tagged_corpus_list.append(doc2vec.TaggedDocument(tags=[tag], words=tagger.morphs(word))) elif token..
def make_dataframe(txt_path): name = [] size = [] country = [] file_name = [] breeds = [] life = [] with open(txt_path, encoding='utf8') as txt: lines = txt.read().splitlines() for line in lines: split_line = line.split(' ') for i, j in enumerate(split_line): if i == 0: name.append(j) elif i == 1: size.append(j) elif i == 2: country.append(j) elif i == 3: file_name.append(j) elif i == 4: breeds...
a = "유해∙위험성".encode('utf-8') b = "유해·위험성".encode('utf-8') print(a) print(b) print(a == b) print(a in b) print(a is b) 문자열을 비교하다가 분명히 같은 문자열인데 비교하면 자꾸 False를 반환해서 UTF-8로 인코드하여 출력해보았다. 문자열에 포함된 가운뎃점은 각각 a는 텍스트 파일에서 추출하였고, b는 엑셀에서 추출하였다.
https://koshort.github.io/ Koshort Koshort은 한국어 NLP를 위한 high-level API 프로젝트입니다. koshort.github.io mecab을 윈도우에서도 간단하게 설치 가능하도록 도와주는 koshort의 pyeunjeon 라이브러리를 알게 되었다. www.microsoft.com/ko-kr/download/details.aspx?id=48145 Visual Studio 2015용 Visual C++ 재배포 가능 패키지 Visual C++ 재배포 가능 패키지는 Visual Studio 2015를 사용하여 빌드된 C++ 응용 프로그램을 실행하는 데 필요한 런타임 구성 요소를 설치합니다. www.microsoft.com 위 링크를 통해 Microsoft Visua..