Word 2 Vec Word 2 Vec copus word

  • Slides: 18
Download presentation

Word 2 Vec 개요 - 소개 Word 2 Vec는 텍스트를 처리하는 인공 신경망이며 두

Word 2 Vec 개요 - 소개 Word 2 Vec는 텍스트를 처리하는 인공 신경망이며 두 개의 층으로 구성됨 말뭉치(copus)를 입력으로 받아 말뭉치의 단어를 벡터로 표현 단어의 의미와 맥락을 고려하여 단어를 백터로 표현(word embedding) 다양한 Text mining에서 활용됨 Word. Vector Model w(t) Distance SUM W(t-2) W(t-1) W(t+1) W(t+2) Analogy Mikolov et al. , NAACL HLT, 2013 빅데이터 SALTLUX, INC. 2 bagofwordsby. DF mincut COMMUNICATING KNOWLEDGE

Word 2 Vec 개요 - 작동방식 태그를 포함한 텀에 대한 word 2 vec 결과

Word 2 Vec 개요 - 작동방식 태그를 포함한 텀에 대한 word 2 vec 결과 (T-SNE, 강원대학교 이창기) SALTLUX, INC. 4 COMMUNICATING KNOWLEDGE

Word 2 Vec 개요 - 활용분야 다양한(대부분) 자연언어 처리, Text Mining에 활용 Clustering, Classification,

Word 2 Vec 개요 - 활용분야 다양한(대부분) 자연언어 처리, Text Mining에 활용 Clustering, Classification, Deep Learning … Why? SALTLUX, INC. 5 COMMUNICATING KNOWLEDGE

Word 2 Vec 개요 - 활용분야 The vast majority of NLP work regards words

Word 2 Vec 개요 - 활용분야 The vast majority of NLP work regards words as atomic symbols: hotel, conference, walk Regardless of whether it is rule-based NLP or statistical NLP In vector space terms, this is a vector with one 1 and a lot of zeroes [0 0 0 0 0 1 0 0] Dimensionality: 20 K (speech) – 50 K (PTB) – 500 K (big vocab) – 3 M (Google 1 T) We call this a “one hot” representation motel [0 0 0 0 0 1 0 0] AND hotel [0 0 0 0 1 0 0 0 0] =0 SALTLUX, INC. 6 COMMUNICATING KNOWLEDGE

Word 2 Vec 개요 - 활용분야 How does conventional IR try to solve this

Word 2 Vec 개요 - 활용분야 How does conventional IR try to solve this problem? Query expansion (synonyms) EXPAND(motel) [0 0 0 0 1 0 0 0 0] AND hotel [0 0 0 0 1 0 0 0 0] Softer methods like pseudo relevance feedback PRF(motel) [0 0 0. 1 0 0 0. 2 0 0 1 0 0. 4] AND hotel [0 0 0 0 1 0 0 0 0 ] Making representations for whole documents, which are denser motel [0 0 0 0 0 1 0 0] AND doc vec [0 0 1 0 3 0 0 2 0 0 1 1 0 0 5] 최순실씨 2. 3679073 2. 632001 3. 5156734 0. 55226576 3. 4697857 -2. 1642926 2. 927989 -4. 1372724 -1. 6123447 2. 7891035 -2. 3472703 0. 5674428 1. 1922252 -1. 8979987 0. 7648711 -0. 7449386 -7. 2843447 -1. 7873993 1. 0639863 -4. 857042 -1. 8869295 2. 1440618 5. 123189 -1. 8090113 1. 0752138 -2. 749245 -3. 8292565 -5. 88436 -1. 2087461 0. 5034514 -5. 228128 -0. 9116033 3. 812309 -0. 39532313 1. 295607 0. 6499959 1. 3257729 -1. 4748154 -0. 10462201 0. 93536484 1. 9455284 4. 2294636 -0. 5540258 3. 2995346 1. 4703122 1. 2497659 -4. 0628476 -0. 75684416 0. 44159144 -0. 23024745 SALTLUX, INC. <- 0. 8723704 -> 7 최순실 4. 860913 4. 4230447 3. 7708416 -0. 47461852 4. 9520507 -3. 9274774 3. 522294 -4. 107053 -1. 808494 1. 8394469 -1. 1913927 2. 162294 4. 39476 -0. 8487084 1. 2065386 2. 5240448 -8. 44772 -3. 0972748 -0. 7899851 4. 892561 -3. 5885262 2. 4392695 5. 7664785 -2. 6916096 1. 6089272 -2. 8984373 -4. 942049 -5. 92072 0. 39115202 1. 5130644 -3. 2906766 -3. 9956167 1. 6787117 1. 3006511 3. 8839638 -0. 58851856 2. 0160093 -1. 2463671 1. 1049408 3. 0348003 3. 2802122 2. 0437293 0. 44392177 3. 9946458 0. 0724155 -1. 2631557 -6. 2560782 -0. 2314903 -0. 6046538 1. 4748106 COMMUNICATING KNOWLEDGE

Word 2 Vec Demo (Preprocess, Training, Prediction) Sftp 1. 224. 169. 125 saltlux/솔트룩스!@#$ /home/saltlux/WV

Word 2 Vec Demo (Preprocess, Training, Prediction) Sftp 1. 224. 169. 125 saltlux/솔트룩스!@#$ /home/saltlux/WV -DEEP/WV_DTR. zip SALTLUX, INC. 8 COMMUNICATING KNOWLEDGE

Word 2 Vec - Big. O & Discovery 3. 0 시멘틱 검색 결과 반환

Word 2 Vec - Big. O & Discovery 3. 0 시멘틱 검색 결과 반환 특성 추출 Query. Vector 시멘틱 분석/색인 특성 추출 Word. Vector Model Document Vector Word. Vector. List Vector색인 2. 392354 1. 2070528 1. 1378559 -3. 0868638 0. 66213584 -6. 223769 2. 5290065 2. 2247105 0. 34349295 -4. 547037 -0. 7411172 LG -3. 12 -4. 3 … 엘지 4. 231 0. 54… 유플러스 -3. 33 4. 5… 단말 -2. 32 0. 054… 국제전화 6. 432… N dimension Vectors per terms SALTLUX, INC. 유사도 계산 2. 292354 1. 1070528 1. 0378559 -2. 0868638 0. 64213584 -5. 223769 2. 5280065 2. 2347105 0. 34249295 -4. 546037 -0. 7401172 엘지 4. 231 0. 54 0. 323 0. 232 -0. 232 764… 유플러스 -3. 33 4. 532 -0. 032 -1. 32 … 검색 요청 색인 요청 Word. Vector. List N dimension Vector by Sum terms Vectors 9 COMMUNICATING KNOWLEDGE

Word 2 Vec – Big. O & Discovery 3. 0 API : com. saltlux.

Word 2 Vec – Big. O & Discovery 3. 0 API : com. saltlux. dor. api. IN 2 Deep. Topic. Rank public List<Simple. Entry<String, Float>> get. Topic. Rank(String Index. Name, String Term. Field, String Term. Value, String Score. Field, int Max) public List<Simple. Entry<String, Float>> get. Topic. Rank(String Index. Name, String Term. Field, String Term. Value, String Score. Field, int Max, float min. Score) Index. Name : Word 2 Vec에 의해서 생성된 색인명 Term. Field : Word 2 Vec에 의해서 생성된 텀이 색인된 필드명(default TERM) Term. Value : 질의 텀 (형태소 분석을 통하지 않고 완전일치로 검색) Score. Field : Word 2 Vec에 의해서 생성된 텀의 Vector값이 색인된 필드명(default WEIGHT) Max : 반환할 최대 개수 (최대 개수 이하로 검색될 경우 최대 값 보다 작을 수 있음) min. Score : 검색 시 최소한의 유사도 점수 (0~1)사이의 값 IN 2 Deep. Topic. Rank runner = new IN 2 Deep. Topic. Rank(); runner. set. Server("127. 0. 0. 1", 10000); List<Simple. Entry<String, Float>> Result = runner. get. Topic. Rank(“WV-NEWS_201703”, "TERM", "미국 뉴욕 SIM 프랑 스", "WEIGHT", 10); for(Entry<String, Float> kw : Result) { System. out. println(kw. get. Key() + "t" + kw. get. Value()); } SALTLUX, INC. 12 COMMUNICATING KNOWLEDGE

Word 2 Vec – Big. O & Discovery 3. 0 public String get. Topic.

Word 2 Vec – Big. O & Discovery 3. 0 public String get. Topic. Cluster(String Index. Name, String Term. Field, String Term. Value, String Score. Field, int Max, int cluster. Size) { public String get. Topic. Cluster(String Index. Name, String Term. Field, String Term. Value, String Score. Field, int Max, float min. Score, int cluster. Size) { Index. Name : Word 2 Vec에 의해서 생성된 색인명 Term. Field : Word 2 Vec에 의해서 생성된 텀이 색인된 필드명(default TERM) Term. Value : 질의 텀 (형태소 분석을 통하지 않고 완전일치로 검색) Score. Field : Word 2 Vec에 의해서 생성된 텀의 Vector값이 색인된 필드명(default WEIGHT) Max : 반환할 최대 개수 (최대 개수 이하로 검색될 경우 최대 값 보다 작을 수 있음) min. Score : 검색 시 최소한의 유사도 점수 (0~1)사이의 값 cluster. Size : 클러스터링시 최대 클러스터 개수(default 7) IN 2 Deep. Topic. Rank runner = new IN 2 Deep. Topic. Rank(); runner. set. Server("127. 0. 0. 1", 10000); String json. Str = runner. get. Topic. Cluster("NEWS_WORDTOVEC", "TERM", "애플 아이폰", "WEIGHT", 100, 7); System. out. println(json. Str); SALTLUX, INC. 13 COMMUNICATING KNOWLEDGE

Word 2 Vec – Big. O & Discovery 3. 0 public float[] get. Term.

Word 2 Vec – Big. O & Discovery 3. 0 public float[] get. Term. Score(String Index. Name, String Term. Field, String Term. Value, String Score. Field) public float[] get. Term. Score(String Index. Name, String Term. Field, String Term. Value, String Score. Field, boolean Use. Normal) Index. Name : Word 2 Vec에 의해서 생성된 색인명 Term. Field : Word 2 Vec에 의해서 생성된 텀이 색인된 필드명(default TERM) Term. Value : 질의 텀 (형태소 분석을 통하지 않고 완전일치로 검색) Score. Field : Word 2 Vec에 의해서 생성된 텀의 Vector값이 색인된 필드명(default WEIGHT) Use. Normal : 해당하는 텀의 Vector를 반환할때 값에 대한 노멀라이징을 수행할지 여부 IN 2 Deep. Topic. Rank runner = new IN 2 Deep. Topic. Rank(); runner. set. Server("127. 0. 0. 1", 10000); float[] score = runner. get. Term. Score("NEWS_WORDTOVEC", "TERM", "베터리", "WEIGHT"); if(score == null) { System. out. println(runner. get. Last. Error. Message()); } else { for(int i = 0 ; i < score. length; i++) { System. out. println(score[i]); } } SALTLUX, INC. 14 COMMUNICATING KNOWLEDGE

Word 2 Vec – Big. O & Discovery 3. 0 API : com. saltlux.

Word 2 Vec – Big. O & Discovery 3. 0 API : com. saltlux. dor. api. common. query. IN 2 Deep. Query public IN 2 Deep. Query(String Field, float[] Value, float boost) Field : Document. Vector 필드 명 Value : 해당 쿼리에 대한 Vector값 Boost : 해당 쿼리를 사용하여 검색된 문서에 대한 가중치값 IN 2 Std. Searcher searcher = new IN 2 Std. Searcher(); searcher. set. Server("127. 0. 0. 1", 10001); searcher. add. Index("NEWS"); IN 2 Deep. Topic. Rank tk = new IN 2 Deep. Topic. Rank(); tk. set. Server("127. 0. 0. 1", 10001); float[] Weight = tk. get. Term. Score("NEWS_WORDTOVEC", "TERM", "박근혜 세월호", "WEIGHT"); searcher. set. Query(new IN 2 Deep. Query("TITLE_SCORE", Weight, 10 f)); searcher. add. Return. Field(new String[]{"TITLE", "[REAL_SCORE]"}); searcher. set. Return. Position. Count(0, 10); boolean flag = searcher. search. Document(); System. out. println("총 검색 문서수 : " + searcher. get. Total. Document. Count()); for(int i = 0 ; i < searcher. get. Document. Count(); i++) { String title= searcher. get. Value. In. Document(i, "TITLE"); String score = searcher. get. Value. In. Document(i, "[REAL_SCORE]"); System. out. println(score + "t" + title); } SALTLUX, INC. 15 COMMUNICATING KNOWLEDGE

Word 2 Vec – Big. O & Discovery 3. 0 API : com. saltlux.

Word 2 Vec – Big. O & Discovery 3. 0 API : com. saltlux. dor. api. IN 2 Std. Field. Updater public public void set. Index(String Index. Name) void set. Key(String Key. Field, String Key. Value) void set. Update. Data(String Field. Name, long Value) void set. Update. Data(String Field. Name, byte[] Value) boolean update() 업데이트 방식은 2가지를 지원하고 있음, 데이터가 색인시 지정한 방식과 동일한 방식을 사용해야 함. public void set. Update. Data(String long형인 것과, byte[]형태인 것으로 IN 2 Std. Indexer의 아래 API를 사용하여 색인 field. Name, long field. Value) field. Name, byte[] field. Value) Word 2 Vec 모델이 생로 생성되었을 경우 set. Update. Data(String field. Name, byte[] field. Value)를 사용하여 Document. Vector값을 업데이트 SALTLUX, INC. 16 COMMUNICATING KNOWLEDGE

Word 2 Vec – Q & A SALTLUX, INC. 18 COMMUNICATING KNOWLEDGE

Word 2 Vec – Q & A SALTLUX, INC. 18 COMMUNICATING KNOWLEDGE