쿠키란 서버에서 저장하지 않고 내 브라우저에 저장하는 정보들로 예전에는 아이디와 패스워드등을 쿠키에 저장하여 자동로그인을 해서 해킹을 쉽게 당하는 문제등이 있었다. 쿠키는 여전히 안 좋은 모습이 많아서 개인들은 허접한 사이트라면 어디까지 쿠키를 내리는지 확인하는 것도 좋을 것 같다. 개발자는 쿠키 정보를 수시로 봐야 될 수도 있고, 혹은 이 사이트가 쿠키 정보를 어디까지 내려서 개인정보를 위협하는지를 파악하기 위해서도 쿠키를 볼 수 있다. 본 포스팅은 크롬(Chrome) 기준으로 작성하였는데 대다수의 브라우저는 크롬과 동일한 엔진을 사용하기 때문에 쿠키 정보를 보는 것 역시 동일하다. 우선 브라우저(크롬)을 켜고 아무 사이트나 들어간 후, F12를 눌러서 개발자모드를 켠다. 더보기(>>) 버튼을 클릭하고..
엘라스틱서치(Elastic Search)에서 다양한 설정을 담는 config 파일은 {elasticsearch}/config 폴더에 있는 elasticsearch.yml 파일에 있다. 이 파일을 오픈하면 노드 및 샤드, 클러스터, 로그 위치, 접근 IP 등 다양한 설정을 할 수 있는데 당연히 엘라스틱서치를 운영할 계획이라면 필수 설정 정도는 알고 있어야 될 것이다. 다음의 옵션은 변경되어서 다른 방식 혹은 명칭이 바뀔수도 있고 삭제되었을 수도 있다. 엘라스틱버전에 따라 같은 속성값을 계속 유지하는 것이 아니기 때문에 매 버전에 따라 설정값이 변경되었는지 확인을 하는 것도 중요할 것이다. 설정 항목 cluster.name - 클러스터들은 같은 클러스터의 이름을 가진 경우 묶을 수 있는데 여기서 지정을 할 ..
EDA(Exploratory Data Analysis) 즉, 탐색적 데이터 분석을 제대로 하려면 파이썬의 numpy, pandas와 같은 라이브러리를 잘 활용해야 한다. 그 중에 pandas는 다양한 형태의 데이터를 매우 쉽게 확인할 수 있는 기능을 제공한다. 우선 이 포스팅을 진행하는데 사용한 데이터로 iris dataset을 활용했는데 header는 일단 직접 달았기 때문에 아래와 같이 파일을 다운로드 받아서 진행하면 유용할 것 같다. 데이터의 일부만 보여주자면 아래와 같이 생긴 녀석이다. sepal_length,sepal_width,petal_length,petal_width,class 1,5.1,3.5,1.4,0.2,Iris-setosa 2,4.9,3,1.4,0.2,Iris-setosa 3,4.7..
TF-IDF는 자연어처리에서 가장 기본적이고 가장 많이 활용하는 기술이라 할 수 있으며 그만큼 강력하며 쉽다. TF-IDF는 Term-Frequency와 Inverse Document Frequency의 약어로 되어 있으며, 문서에서 자주 등장하는 문서별 중요 단어에서 다른 문서에서 자주 등장하는 패널티를 빼는 역빈도를 구하여 최종 스코어를 구하게 된다. 이를 예로 들면, 편의점마다 많이 팔리는 물건을 조사하고 싶은데 단순히 매출로만 판단하게 되면 모든 편의점마다 담배가 1위로 올라설 것이다. 이렇게 다수가 나오는 패널티를 빼게 되면 결국 편의점마다 독특하게 등장하는 물건들이 있을 것이고, 이를 토대로 선호 물품과 해당 편의점 주변의 나이대 등을 간접적으로 알수도 있을 것이다. TF-IDF로 가장 많이 ..
티카(Tika)는 아파치 재단에서 운영하는 문서 필터링 프로젝트이다. 워드(Doc)나 PDF, PPT 등 문서형태의 파일에서 내용을 추출하는 프로젝트로 오래된 만큼 괜찮은 성능을 보여준다. 라이브러리 추가(maven) org.apache.tika tika-core 1.26 org.apache.tika tika-parsers 1.26 org.apache.poi openxml4j 1.0-beta org.apache.poi poi-ooxml 3.9 티카 라이브러리만 설치하면 에러가 발생하는데 아래의 2가지 openxml4j와 poi-ooxml을 설치하면 이 문제를 해결 할 수 있다. 샘플 예제 import org.apache.tika.metadata.Metadata; import org.apache.tika...
머신러닝(딥러닝 포함)의 작업에 대해서 아직 많은 사람들이 어떤 부분들이 중요한지 모르며, 간혹 자신의 역할이 매우 작은것이라 생각해서 업무를 비하하는 사람들이 많다. 특히, 데이터 전처리의 경우 "전처리"라는 명칭 때문에 자신의 작업은 사소하고, 마치 축구에서 수비수의 역할과 같다 생각해서 일을 그만두고 모델러로 전향하는 경우가 많은데 정말 잘못된 생각이라 말을 하고 싶다. 머신러닝의 작업 플로우 데이터 수집 (Data Acquisition) 데이터 수집 이전에 데이터 설계, 데이터의 분석 등이 전제되어야 하겠지만 그 부분을 배제하고 개발단으로 설명을 하자면 제일 먼저 데이터를 수집해야 될 것이다. 자연어처리(NLP)의 경우 말뭉치를 만든다던지, 분석을 위한 기본 데이터(Raw Data) 뿐만 아니라 ..
파이프라인 성능을 저해하는 파이프라인 해저드의 개요 파이프파인 해저드의 개념 - 파이프라인 프로세서에서 명령어 의존성(데이터, 컨트롤, 자원)을 발생 시킬 수 있는 문제 - 파이프라인의 성능을 저해하는 요인, CPI(명령어당 실행 클럭 수)가 1이 되는 것을 방해하는 요소 ※ CPI(Cycles Per Instruction) : CPU가 한 개의 명령어를 처리하는데 소요되는 평균 사이클 수 파이프라인 해저드의 3가지 종류 구조적 해저드 - 하드웨어가 여러 명령들의 수행을 지원하지 않기 때문에 발생, 자원충돌(Resource Conflicts) 데이터 해저드 - 명령의 값이 현재 파이프라인에서 수행 중인 이전 명령의 값에 종속 - RAW, WAR, WAW 해저드가 존재 제어 해저드 - 분기(jump나 br..
데이터 분석을 많이 하거나, 대용량의 텍스트를 저장하기에 상당히 유용한 객체로 StringBuffer가 있다. 값을 한번에 저장하는 방법은 String으로 선언된 변수에 한번에 값을 넣는 방법이겠지만, 사이즈가 좀 큰 문자열은 한번에 넣기가 쉽지가 않다. 예를 들어 csv를 만든다고 할 때 그때그때 bw.write로 파일을 내리는 것보다 StringBuffer에 일정만큼 저장한 후 한번에 bw.write에 값을 전달하는 것이 훨씬 속도면에서 유리하다. 그러나 StringBuffer에서 데이터를 새로 담을 때, 아무 생각없이 new StringBuffer()로 계속된 초기화를 한적이 있는데 우연찮게 찾아본 문서를 보고 이 부분에 대해서 좀 더 고민할 필요가 있을 것 같아 포스팅을 공유해보고자 한다. new..
Word2Vec로 구현할 수 있는 서비스는 무궁무진하다. 분류, 연관키워드와 같은 직접적인 서비스를 구현할 수도 있으며 최종 서비스를 위한 전처리 과정에서도 활용될 수 있다. 참고로 이 포스팅은 이전에 작성한 Word2Vec #2, 기본적인 모델 구현(생성)하기에서 만든 모델을 기반으로 설명이 이어진다. Word2Vec Source Code from gensim.models import Word2Vec model_okt = Word2Vec.load('word2vec_okt.model') 코모란 버전과 Okt 버전 모두 모델을 만들었지만, 이번 포스팅에서는 Okt 버전만 사용해보도록 한다. # 단어 벡터 확인 print('영웅 : ', model_okt.wv['영웅']) 벡터가 잘 뽑혔는지 확인하기 위해서..
우선 워드투벡터(Word2Vec)를 구현하기에 앞서 이 포스팅에 사용된 예제는 네이버 영화 리뷰 데이터이다. 네이버 영화 리뷰 데이터는 직접 github에 들어가서 데이터를 다운로드 받아서 특정 폴더에 저장한 후 사용하는 방법과 파이썬을 실행 하는것과 동시에 다운로드를 받는 2가지 방법이 존재한다. 여기서는 github에 있는 데이터를 파이썬을 실행할 때 접근하여 가져오는 방식을 사용하도록 한다. 네이버 영화 리뷰 데이터 e9t/nsmc Naver sentiment movie corpus. Contribute to e9t/nsmc development by creating an account on GitHub. github.com 위 링크에 들어가면 네이버 영화 리뷰에 대한 자세한 설명이 있으며, 샘플로..
Word2Vec를 이해하기 전에 우선 희소 표현과 분산 표현에 대한 이해를 하지 못했다면 아래의 포스팅을 보고 표현들의 개념을 익히길 권장한다. 희소 표현과 분산 표현, 차원의 저주 희소 표현과 분산 표현, 차원의 저주 희소 표현(Sparse Representation) 희소 표현(Sparse Representation)이란 데이터가 희소(부족)한 형태를 띄는 것을 말한다. 즉 대부분의 값이 0인 경우를 뜻하며, 원핫 인코딩(One Hot Encoding)이 대표적인 예.. needjarvis.tistory.com 워드투벡 혹은 워드투벡터는 분산 표현을 만들기 위해서 가장 많이 활용하는 강력하고 범용적인 단어 임베딩(Word Embedding) 모델이다. 구글(Google)에서 2013년에 발표했으며, ..
예전에 뮤직카우에 관련된 포스팅을 쓴적이 있다. 당시 "우와~ 이런 노래도 올라왔네?" 라는 생각도 있었지만 솔직히 뮤직카우는 한계점이 있다 내 나름 판단을 한적이 있었다. 물론 마음에 든 노래를 매수하면서, 나도 음악 저작권을 가진 사람인가? 나름 뿌듯해하며 좋아하면서 당시 실험삼아 산 몇개의 곡 이후로 뮤직카우는 한계점을 느끼게 잊고 있었다. 당시에 내가 느낀 후기는 아래 작성한 포스팅을 보면 될 것 같다. needjarvis.tistory.com/558 뮤직카우(musicow), 음악저작권 사기 인터넷 서핑을 하던 차에 저작권으로 재테크를 하자는 광고를 몇번 정도 봤었지만 그냥 무시하고 넘기고 있었다가 오늘 새벽 나도 모르게 궁금해서 클릭하여 사이트에 들어가게 되었다. 들어간 needjarvis.t..