본문 바로가기
728x90

Study (Data Science)121

벡터화 발전과정 2 - soynlp (비지도학습 한국어 형태소 분석기) Soynlp - 품사 태깅, 형태소 분석 등을 지원하는 한국어 형태소 분석기. - 비지도 학습으로 데이터에 자주 등장하는 단어들을 형태소로 분석함. - 내부에 단어사전 같은 단어 점수표를 만들어 동작하며 . 이 점수는 응집 확률(cohesion probability) 과 브랜칭 엔트로피(branching entropy) 를 활용함. - 학습은 txt string (말뭉치, 진짜뭉치)을 DoublespaceLineCorpus로 띄어쓰기 두개 기준으로 떼어내 문서단위로 구분하고, 이를 WordExtractor로 단어를 추출하여 .train 시키면, 단어점수표가 만들어짐. 단어점수표 구조 응집 확률 (cohesion probability) 내부 문자열(subword)가 "얼마나 응집"하여 "자주" 등장하는가의.. 2023. 2. 20.
cGAN / Pix2pix GAN의 목적 1. Pg -> Pdata (만들어낸 이미지의 분포가 실제 이미지의 분포로 수렴하면 성공) 2. D(G(z)) -> 1/2 (Generator가 만들어낸 결과(G(z))를 Discriminator가 판별했을 때, 1이 진짜, 0이 가까이지만 잘 모르겠어서 1/2로 판별해내면 성공. 첨에는 0으로 잘 가려내겠지만 나중에는 1인가? 하다가 결국 그 평균인 1/2에 수렴해야함) D(x) : x는 진짜에서 뽑아온 분포니, D가 판별했을 때 진짜이도록, 즉 1이 되도록 D(G(z)) : G(z) output 자체가 가짜니 D입장에서는 ; D가 판별했을 때 가짜이도록, 즉 0이 되도록 G입장에서는 ; D가 판별했을 때 진짜이도록, 즉 1이 되도록 결국, log 1 + log 0.5 가 될 것임. lo.. 2023. 2. 18.
벡터화 발전과정 (BoW/DTM/TF-IDF/SVD/LSA/LDA/토픽모델링) 벡터화 분산표현이 대중화되기 전에 쓰이던 방법 단어의 의미! 를 부여하기 위한 인간의 노력들. 크게 빈도 / 분포 를 이용한 두가지 방법으로 나뉨 단어 빈도를 이용한 벡터화 1. BoW (Bag of Words) 문서 내 단어들을 다 쪼개서 >> 하나의 가방에 넣고 순서 무시하고 흔들어버림 >> 단어별 빈도수에 따라 정렬 >> 단어 분포를 보고 문서의 특성을 파악 Keras로는 tokenizer.word_counts를 딕셔너리로 만들면 BoW. sklearn로는 CountVectorizer.fit_transform(sentence).toarray() 로 BoW 만듬. Bow에는 단어별 빈도수까지 들어있기 때문에 단순 단어 색인인 fit_on_texts로 만든 word_index와는 다름. 한계 : 어순에.. 2023. 2. 18.
Keras Tokenizer 와 SentencePiece 비교 이해 Keras vs SentencePiece 1. fit_on_texts() : keras.preprocessing.text.Tokenizer에 내장된 함수로, 사전을 만들기 위한 준비작업 Sentencepiece : 파일을 불러올 때 SentencePieceTrainer.Train("--input 파일명 --model_prefix=korean_spm --vocab_size= 보카사이즈") 이렇게 불러오면, prefix 단위로 토큰화, idx 매길 준비를 한다. 불러올 때 이미 토큰화를 내재적으로 하기때문에, 다른 두개와 달리 토큰화된 문장 list가 아니라 온전한 원문 문장 list를 매개변수로 전달함. 2. texts_to_sequences() : word to 숫자 Sentencepiece : Enco.. 2023. 2. 15.
전처리, 분산표현, 임베딩, 토큰화 자연어 (Natural) : 인류의 언어. 200가지의 언어 중 40가지 정도가 문자를 가짐. 문맥 의존 언어 (context sensitive language) parsing이 어려움. 문맥, 현실세계의 이해를 필요로 할 때가 많아 단순 파싱이 되지 않음. 착한 영희 친구를 parsing 하여 다 떨어뜨리면, 영희가 착한건가 친구가 착한건가.. She drove down the street in her car. 그녀는 그녀의 차를 타고 길을 운전한건가, 차안에 있는 길을 운전한건가. 인공어 (Artificial) : 프로그래밍 언어. C언어, 파스칼 등등. 문맥 자유 언어 (context free language) parsing이 너무 잘됨. 문맥이 자유로우니 그냥 나누면 끝. 1. 전처리 자연어의 N.. 2023. 2. 14.
OCR (광학문자인식)과 딥러닝 OCR(Optical Character Recognition, 광학 문자 인식) 1) Detection - 인식 2) Recognition - 해독 1. Detection Object Detection(객체 인식) 방법이 사용됨 Regression(회귀) 방식 : 기준으로 하는 박스 대비 문자의 박스가 얼마나 차이가 나는지를 학습 Segmentation(세그멘테이션) : 픽셀 단위로 해당 픽셀이 문자를 표현하는지를 분류하는 문제(pixel-wise classification) 객체 : 물체에 따라 크기가 일정하고, 물체간 거리가 충분히 확부된다. 문자 : 문자는 영역과 배치가 자유롭고, 검출하기 위한 설정이 필요, 글자간 거리가 촘촘함. (박스가 겹침) 논문근거 기술분류 Regression-based :.. 2023. 1. 31.
비지도학습 / K-means, DBSCAN / PCA, T-SNE 비지도학습 지도학습과 달리 training data로 정답(label)이 없는 데이터가 주어지는 학습방법. 주어진 데이터가 어떻게 구성되어 있는지 스스로 알아내는 방법 지도학습이 회귀, 분류라면, 비지도학습은 분류! 종류 군집화 (clustering) : K-means, DBSCAN (주로 Classification) 차원축소 (dimensionality reduction) :PCA(Principal Component Analysis), T-SNE 생성모델 (generative model) 군집화 (clustering) 1. K-means 정답 label 도 없고, 분류기준이 되는 클래스나 카테고리도 없는 데이터를 가까운, 유사한 것들끼리 묶어주는 것. 묶을 기준이 없기 때문에 k개의 기준점을 중심으로 .. 2023. 1. 30.
Chatbot 챗봇의 종류 1.대화형 챗봇 NLP처리를 기본으로 한 챗봇으로 질문을 분석하여 답변을 주는 프로세스를 가진다. 비용, 전문성, 개발소요시간 모두 최상으로 소요된다. 2. 트리형 챗봇 인공지능은 아니며, 질문을 받으면 그 다음 단계로 넘어갈 버튼을 제시한다. 자주하는 질문에 쓰기 좋으며, 챗봇1세대의 방식이다. 비용은 매우 낮고, 전문성은 낮은 정도, 시간은 보통으로 소요된다. 3. 추천현 챗봇 인공지능일수도 있고, 아닐수도 있다. 질문을 받으면 추천하는 답변을 여러개 제시한다. 만약 1개만 제시한다면 대화형 챗봇이 된다. 비용과 전문성은 보통이고, 시간은 많이 소요되는 편이다. 4. 시나리오형 챗봇 제공할 서비스나 결과물이 정해져 있을 때 많이 사용한다. 고객에게 받아야할 정보를 단계적으로 받을 수 있어.. 2023. 1. 27.
추천시스템 - ALS ALS(Alternating Least Squares) 알고리즘 설명 사용자 또는 상품 측면의 벡터가 주어져 있을 때 최소제곱해(Least Squares) 도출 이전 스텝에서 설명한 Matrix Factorization 모델을 implicit 패키지를 사용하여 학습해 봅시다. implicit 패키지는 이전 스텝에서 설명한 암묵적(implicit) dataset을 사용하는 다양한 모델을 굉장히 빠르게 학습할 수 있는 패키지입니다. 이 패키지에 구현된 als(AlternatingLeastSquares) 모델을 사용하겠습니다. Matrix Factorization에서 쪼개진 두 Feature Matrix를 한꺼번에 훈련하는 것은 잘 수렴하지 않기 때문에, 한쪽을 고정시키고 다른 쪽을 학습하는 방식을 번갈아 수.. 2023. 1. 26.
Ex12_ NLP / 뉴스 요약봇 1. 데이터 전처리 null값 제거 : .nunique()로 null 확인 후, .dropna로 제거 중복 제거 : drop_duplicates()로 제거 텍스트 정규화와 stopwords 제거 정규화사전, 불용어사전(NLTK) 를 불러오거나 만들어주거나 한 후에 preprocess_sentence라고 함수를 만드는데 text 컬럼은 정규화와 불용어 모두 처리하고, clean_text=[ ]에 담고 headlines 컬럼은 자연스러운 문맥을 위해 정규화만 하고, clean_healines =[ ] 에 담아둠. 2. train, test 나누기 최대길이 정하기 길이분포를 구하여 그래프로도 한번 보고 적당한 text_max_len, headlines_max_len을 임의로 잡는데, 잡을 때 평균보다는 약간 .. 2023. 1. 25.
728x90