Skip to content

HaEunMok/TIBigdataMiddleware

 
 

Repository files navigation

flask Architecture

app.py
    ----common
      ----esFunc.py
      ----cmm.py
      ----prs.py
    ----LDA.py
    ----SVM.py
    ----CNN.py
## app.py
* flask main app

## LDA.py
* 주제 분석 LDA 알고리즘

## common module
* 데이터 분석에 공통적으로 들어가는 기능을 담당하는 모듈
* 백엔드에 쿼리로 데이터 호출
* 데이터 전처리
* 데이터 분석 알고리즘 시간 측정
* 포함하는 모듈
### cmm.py : 데이터 호출과 전처리에 사용되는 global 변수 및 시간 담당 함수

### esFunc.py : elasticsearch quary functions module

### prs.py : 데이터 전처리(pre process) 기능

## prs.py
### data pre process function module
* function : loadData()
  * purpose : 
    * esFunc을 사용해서 쿼리를 보내 데이터를 호출
    * 서버에 연결 불가 혹은 서버 연결 옵션에 따라 저장되어 있는 sample data을 호출
    * 내용이 없는 문서를 걸러준다.
    * NOTICE :
      *  readtData에서 부르는 중간 함수이다.

* function : dataPrePrcs
  * purpose : 
    * okt을 사용해서 형태소 분석을 진행. 
* function : readyData
  * purpose : 데이터를 호출해서 부적절한 데이터를 거르고, 형태소 분석까지 완료해서 반환
  * input : int : 호출하고자 하는 문서의 수
  * output : 문서들의 (id list, title list, 형태소 분석 단어 list) tuple
  * NOTICE : id, title, 형태소 list는 동일한 index을 가지고 있다.



## esFunc.py
### elasticsearch quary functions module

* **function : genQuery(boolean, [int])**
  * prpose : es에 보낼 쿼리를 만든다.
  * input : 
    * file 있는 문서인지 없는 문서인지 선택
    * 요청할 size 선택 : [0,infin]
  * output : es 쿼리 body(object)

* **function : esCount(object)**
  * purpose : 주어진 쿼리 바디에 해당하는 문서의 개수의 카운트를 한다.
  * input : es 쿼리 body
  * output : 문서의 개수(int)

* **function : esQueryRaw(object)**
  * purpose : 전처리를 하지 않은 데이터 반환
  * input : es 쿼리 body object
  * output : json 형태의 데이터(object)

* **function : esQuery(object)**
  * purpose : 알고리즘에 맞게 수정할 수 있도록 기본적인 전처리만 끝낸 데이터 반환
  * input : es 쿼리 body object
  * output : json 형태의 데이터(object)

* **function : nkdbNoFile(int)**
  * purpose : es에 파일이 ***없는*** 문서를 요청한 수 만큼 문서 집단을 반환
  * input : 가지고 오려는 문서의 개수(int)
  * output : (문서 object array)
            [
              {"_id" : 문서1 고유 id, "post_title" : "문서1제목","contents" : "문서1내용"},
              {"_id" : 문서2 고유 id, "post_title" : "문서2제목","contents" : "문서2내용"},
              ...
            ]  

* **function : nkdbFile(int)**
  * purpose :es에 파일이 ***있는*** 문서를 요청한 수 만큼 문서 집단을 반환
  * input : 가지고 오려는 문서의 개수(int)
  * output : (문서 object array)
            [
              {"_id" : 문서1 고유 id, "post_title" : "문서1제목","contents" : "문서1내용"},
              {"_id" : 문서2 고유 id,"post_title" : "문서2제목","contents" : "문서2내용"},
              ...
            ]  

* **function : esGetDocs(int)**
  * purpose : 첨부 파일이 있든 없든, 종류에 상관 없이 요청한 수 만큼 문서 집단을 반환
  * input : 가지고 오려는 문서의 개수(int)
  * output : (문서 object array tuple)
            [
              {"_id" : 문서1 고유 id, "post_title" : "문서1제목","contents" : "문서1내용"},
              {"_id" : 문서2 고유 id,"post_title" : "문서2제목","contents" : "문서2내용"},
              ...
            ] 
  * NOTICE : 
    * 전체 요청 수를 반으로 나눠서 파일이 있는 문서와 없는 문서에 각각 요청한다. 
    * 첨부 파일이 있는 문서와 없는 문서의 수가 다르기 때문에, 
    * 만약 한쪽에서 수가 모자라면 부족한 부분을 다른 쪽에서 채운다. 
    * 만약 전체 DB에 있는 데이터보다 많은 양을 요청하면 DB에 저장되어 있는 수만 반환.
  
* **function : esGetDocsSave([int])**
  * purpose : 첨부 파일이 있든 없든, 종류에 상관 없이 요청한 수 만큼 문서 집단을 반환해서 저장
  * input : [optional : 가지고 오려는 문서의 개수(int)]
  * NOTICE : 
    * default = 20개의 문서를 가지고 옴. 
    * 저장되는 위치는 ./raw data sample/
    * 파일 이름 : rawData.json
    * optional을 선택하면 데이터 파일 이름이 rawDataX.json으로 자동으로 저장

* **function : esGetADoc([int])**
  * purpose : es에서 random을 선택된 문서를 1개를 가지고 온다.
  * input : [optional : 가지고 오려는 "후보" 문서의 수. default size = 500]
  * output : (문서 object array)
            [
              {"post_title" : "문서 제목","contents" : "문서 내용"}
            ]  

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 79.5%
  • Python 20.5%