본문 바로가기
728x90
반응형

전체 글190

비정형 데이터 - LSA / pLSA LSA LSA: Latent Sementic Analysis의 약자로 잠재 의미 분석이라는 뜻이다. 아래의 그림처럼 $X$라는 단어 문서 행렬을 SVD(특잇값분해)를 통해서 3개의 매트릭스 곱으로 나타내고, 차원수도 줄이게 되고 이러한 과정 중에 잠재된 의미를 찾는다는 것이다. SVD라는 것이 고급 선형대수학에 포함되어 있는 파트인데, 완벽하게 이해하기에는 기초 선형대수, 선형독립, 직교 등등 선행학습이 필요하다. 그러므로 어떤식의 알고리즘인지 완벽하진 않더라도 짚고 넘어가보도록 한다. SVD는 eigen value decomposition(고윳값분해) 처럼 행렬을 대각화하는 한 방법이다. 정방행렬만을 다뤘던 고윳값 분해와는 달리 이 SVD 특잇값 분해는 모든 $m$ x $n$ 행렬에 대해 적용이 가능하.. 2019. 12. 16.
비정형 데이터 - TF-IDF Bag-Of-Words (BOW) : 비정형 데이터를 정형화 하는 방법으로 쓰이는 전통적인 방법이라고 할 수 있다. 각 문서를 사전의 크기 만큼 벡터로 표현한다고 할 수 있다. 우선 바이너리 값으로 있고 없고를 기준으로 한 예시를 보겠다. 단순 바이너라 값으로 측정된 BOW 행렬은 문서의 특징을 제대로 구별하기 힘들다. 그리하여 단순한 바이너리 값이 아닌 가중치를 주게 되는데, 가장 자주 쓰이는 방법인 TF-IDF 가중치이다. 다음의 행렬속 값들이 변해가는 모습을 차례대로 보며 변화를 살펴본다. 이로써 TF-IDF 가중치로 값을 가지게 된 행렬이 해당 문서의 성격을 상대적으로 잘 나타낼 수 있다. 왜냐하면 TF-IDF가중치의 특징인 "유독 특정 단어가 특정 문서에 많이 나오더라"를 가중치에 녹여냈기 때문.. 2019. 12. 16.
비정형 데이터 - 전처리 본 장은 간단한 개념만 훑어 봅니다. 텍스트 분석을 하기 전에 분석하기 좋은 형태로 데이터를 정제시키는 작업을 전처리 작업 (preprocessing)이라고 합니다. 텍스트 전처리에는 크게 다음 4가지의 종류로 나뉩니다. 1. Tokenizing: 주어진 문서나 문장을 기본 단어 기준으로 나누는 작업이다. 일반적으로 영어는 띄어쓰기 경계로 나누기 좋은 반면에 한국어는 복합형태소로 기술되기 때문에 띄어쓰기 만으로는 완벽히 토크나이징을 하기 어렵다. 특히 전문용어, 신조어가 많이 포함된 문서에는 더욱 불리하다. WordNet이나 국립국어원 언어정보나눔터에서 "말뭉치(token, corpus)"를 다운받을 수 있다. 2. POS tagging: POS는 Part Of Speech의 약자로 주어진 단어열로부터 .. 2019. 12. 16.
비정형 데이터 - 소개 텍스트 마이닝 Task 1. 정보 검색(Information retrieval) - 검색 엔진, 데이터 베이스 2. 정보 추출(Extraction) 및 요약(Summarization) - 특정 주제 변화 확인(Topic Tracking) - 대표 문장 추출(뉴스, 이메일), 데이터 시각화(Visualization) 3. 문서 분류(Classification) 및 그룹핑(Grouping) - 주제 별 분류, 정의된 Category 없이 문서 그룹핑 => 지도학습 / 비지도학습 4. 오피니언 마이닝(Opinion mining) - 긍/부정 분석(Sentiments analysis), 주요 키워드 파악 5. 자연어 처리(Natural language processing) - 번역, 챗봇, 음성 인식 등 -> .. 2019. 12. 16.
스파크 병렬 처리 -이번장에서 배울 것 0.클러스터에서 RDD가 어떻게 분산되는지. -클러스터에 RDD는 그 데이터가 워커 노드들을 통해서 파티션 된다. 파티셔닝은 스파크에서 자동으로 행해지며, 얼마나 많이 파티션할지는 컨트롤이 가능하다. -싱글 파일들에 대한 파티셔닝 sc.textFile(‘myfile’, 3 ) 디폴트는 2이며, 파티션 개수가 많아진다는 것은 그만큼 더 병렬화 된다는 것. -여러 파일들에 대한 파티셔닝 sc.textFile(“mydir/*”) 각 파일은 적어도 하나 이상의 파티션을 갖는다. sc.wholeTextFiles(“mydir”) 작지만 많은 양의 파일들을 다룰 때. 키는 파일이름, 값은 파일 내용으로 pairRDD를 생성. 1.스파크가 병렬로 RDD 연산을 어떻게 수행하는지. -파티션에서 병렬.. 2019. 12. 15.
스파크 애플리케이션 작성 및 전개 -이번장에서 배울 것 0.스파크 애플리케이션 작성하는 방법. -WordCount.py 라는 애플리케이션을 사전에 만든다. import sys from pyspark import SparkContext if __name__ == "__main__": if len(sys.argv) > sys.stderr, “usage: WordCount ” exit(-1) sc = SparkContext() counts = sc.textFile(sys.argv[1]) \ .flatMap(lambda line: line.split()) \ .map(lambda word: (word,1)) \ .reduceByKey(lambda v1,v2: v1+v2) for pair in counts.take(5): p.. 2019. 12. 15.
Pair RDD와 함께 데이터 병합. -이번장에서 배울 것 0.일반 RDD로 부터 키-값 형태의 Pair RDD를 어떻게 생성하는지. -Pair RDD는 RDD의 특별한 형태이다. 각 원소들이 키-값 형태로 되어 있고, 키와 벨류는 어 떤 타입도 될 수 있다. -왜 Pair RDD를 사용하냐면, 바로 맵리듀스 알고리즘을 사용하기 위해서이다. 흔한 데이터 처리에 필요한 많은 추가적인 함수들이 이용가능하다. ex)sorting, joining, grouping, counting, etc. -Pair RDD를 만들기. 우선 map, flatMap/flatMapValues, keyBy와 같은 함수가 필요하다. 1.Pair RDD에 이용가능한 특별한 연산은 어떤게 있는지. 1.간단한 Pair RDD만들기. users= sc.textFile(file).. 2019. 12. 15.
RDD와 함께 스파크 활용하기. -이번장에서 배울 것 0.메모리에서 데이터 또는 파일로 RDD를 어떻게 생성할지 -RDD는 여러 타입이 될 수 있다. 1.단일 타입: integers, characters, booleans, etc. 2.시퀀스 타입: strings, lists, arrays, tuples, dicts, etc.(nested 데이터 타입 포함.) 3.Scala/Java Object(serializable인 경우) 4.Mixed Types -몇몇 RDD 타입은 추가적인 기능을 가지고 있다. -Pair RDDs: 키와 값을 쌍으로 가지는 형태 -Double RDDs: 숫자 데이터로 구성된 형태 -RDD를 시퀀스 타입의 데이터에서 바로 가져와본다. myData = [‘Alice’,’Carlos’,’Frank’,’Barbara’.. 2019. 12. 15.
스파크 기초 -이번장에서 배울 것 0.Spark Shell을 사용하는 방법 -pyspark와 spark-shell이 있다. 이들은 학습이나 데이터 탐색에 interactive(대화식)하다. 1.SparkContext 사용하는 방법 -sc라고 불리는 Spark Context를 사용합니다. 2.RDD의 주요 개념 -그들은 무엇인가? -RDD(Resilient Distributed Dataset) -Resilient는 메모리에서 데이터가 사라져도 다시 재생할 수 있다는 뜻, Distributed는 클러스터를 통하여 처리한다는 뜻, Dataset은 최초 데이터는 파일로 불러와지거나 프로그래밍으로 생성될 수 있다는 뜻이다. -RDD는 스파크에서 기본적인 데이터 단위이다. -대부분의 스파크 프로그래밍은 RDD의 수행으로 구성된.. 2019. 12. 15.
728x90
반응형