혼자 울면서 한 프로젝트입니다...

1. Overview & IDEA - PPT Searching 2. Extracting with PPT 3. TF-IDF with PPT 4. Threading with PPT 5. Operating with PPT

Operating

여기까지 오면 거의 다했다. 이제 사람들이 사용할 수 있도록 어떤 문서군에서 추출하고 어떻게 운영할 껀지를 생각해 보면된다.

여기서 나에게 가장 큰문제는 인턴이었기 때문에 이회사의 구조를 잘 모른다는 것이다.

회사는 보안에 민감한 상황이었고(all time 민감) 내부에 서버가 있는데 http연결이 불가능하다는 이야기를 듣는다…

원래 생각은 서버를 하나 만들어 놓고 여기서 http 통신을 통해 문자열을 쿼리로 받아서 파일이름을 유사도가 가장 높은 순으로 보여주고 여기서 클릭하면 로컬로 다운 받는 운영을 생각했다.

하지만 이게 안되면 로컬에 배포를 하는 상황으로 운영을 해나가야하는데… 로컬 배포는 eletron으로 어떻게 한다고 해도 문서가 계속 추가 될텐데 가중치 업데이트는 어떻게 하나가 나의 관건이었다.

로컬에 한번 배포하게 되면 분명 들쭉 날쭉한 matrix를 가질 수 있기 때문이다.

Solution

문제를 조금 다시 정리해 보자

  1. 로컬에 배포를 하게 되면 추가되는 문서에 대해 가중치 업데이트가 되지 않는다.
  2. 업데이트를 지속적으로 하고 배포를 한다고 해도 시간이 너무 오래 걸린다.

나의 아이디어는 이거시다.

문서군 마다 matrix를 보관하는 게 아니라 ppt_name : string, TF matrix, IDF matrix를 가지고 있는 것이다.

이렇게 caching 하면 몇가지 이점이 있다.

  1. ppt에서 텍스트를 뽑아내데 시간이 많이 걸리는데 이걸 당연히 skip할 수 있다. (2번 문제 해결)
  2. matrix를 가지고 있으면 추가되는 키워드에 대해서 count만 정리해 주면된다.
    • 실제로 테스트 해볼 수 없었지만 이 부분은 사람들이 없는 새벽에 돌아가는 shell script로 해결하려는 backplan도 세워놨다.
  3. 배포를 할때 matrix 형태로 배포를 해야 할텐데 우선 계산을 해놓고 시간을 줄일 수 있는 방법이 있을 것이다. 지금 생각해보면 IDF를 계산하는데는 시간이 좀 더 들 수 도 있다.

이러한 아이디어를 가지고 내 나름대로 아키텍쳐를 구상했다.

Upload 시나리오

업로드 시나리오는 다음과 같다.

  1. 유저가 pptx를 서버에 저장한다.
  2. Upload Program에서 인증을 진행하고 로컬 TF-IDF를 업데이트 해놓는다.
    • 이 부분을 하는 이유는 유저로 하여금 키워드를 입력하게 하기 위해서다.
    • 프로그램으로 찾는다고 찾지만 실제 만든 사람이 생각하는 키워드가 다를 수 있기 때문에 해당 과정을 넣었다.
  3. 유저가 추천된 키워드를 선택하거나 다른 키워드를 넣고 ok
  4. 유저가 하루에 작업을 끝날 때까지 기다리기 위해 Queue에 넣어 놓고 대기한다.
  5. 새벽에 Batch프로그램을 통해서 TF-IDF를 업데이트해 놓는다.
  6. 물론 Matrix를 변경하는 것이기 때문에 유효성 검사를 진행한다. (어떻게 할지는 고민 x)
  7. 만약 유효성이 입증되는 Matrix라면 (유저가 터무니 없는 걸 넣어서 값이 많이 이상해 질 수 있다고 생각했다.) global DB를 업데이트 후
  8. 프로그램이 구동되면 local DB에 push해준다.

검색 시나리오

검색 시나리오는 다음과 같다.

  1. 유저가 Query를 날린다.
  2. TF-IDF Matrix가 cache되어있다면 바로 답을 한다.
  3. 없다면 BIG DATA PART를 뒤져서 최신의 Matrix로 업데이트하고 대답을 한다.

이렇게 구성을 하고 돌아온 한마디. 당연히 인턴이 할 수 없으니 와서 해라 이런 개념이 아니라 내부에 인력이 없고 이런거 할 줄 아는 사람도 없고 있어도 외주를 주는게 낫다 라는 대답이었다.

사실 만들면서 이런게 기술적으로 가능한지에 대한 PoC를 당연히 해보지 못했지만 그래도 무언가 컴퓨터 구조를 만들 수 있다는 생각에서 기분좋은 프로젝트 였던 것 같다.