brunch

You can make anything
by writing

C.S.Lewis

by 무명 Jun 16. 2020

[개발/검색] 엘라스틱서치, 문서 핵심 키워드 추출

elasticsearch, gensim, 검색, 키워드 추출, 토픽 워드

[발단] 

1. 회사 서비스 일부 검색 시나리오에서 elasticsearch를 사용하고 있음. 

2. 특정 인덱스-도큐먼트-필드에 문서 요약 키워드를 추가해야 했음. 



[전개]

1. 생각한 방법은 두 가지 

1.1. es에서 쉽게 해결할 수 있는 방안이 있나? 

1.2. 스크립팅으로 해결하고(es 데이터 받아오고 -> 스크립팅 - > 다시 es 필드 업데이트)

2. 업데이트해야 하는 문서는 40만 건 정도 (크게 문제 안됨)

3. 일단 리서치해보자


[1. es에서 쉽게 해결할 수 있나?]

- significant terms aggregation 등의 키워드를 찾음

- 커뮤니티에서 추천해주긴 함. 

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-significantterms-aggregation.html#search-aggregations-bucket-significantterms-aggregation


https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-significantterms-aggregation.html


https://esbook.kimjmin.net/08-aggregations

근데 이게 맞는 건지, 효율적인지 잘 모르겠음. 


[2. 스크립팅으로 해결(파이썬에서 자연어 처리 후 es 업데이트)]

https://soyoung-new-challenge.tistory.com/44


https://excelsior-cjh.tistory.com/93


https://wikidocs.net/72820


https://radimrehurek.com/gensim/summarization/keywords.html


https://lovit.github.io/nlp/2019/04/30/textrank/

gensim을 왜 잊고 있었지~ 돌려보니 나쁘진 않음. 

https://radimrehurek.com/gensim/summarization/summariser.html

https://radimrehurek.com/gensim/summarization/keywords.html


[해결]

1. 일단 gensim의 결과가 나쁘지 않았고, 해당 검색 api는 만들어져 있어서(검색 결과에 추가 정보(주제 키워드)를 제공하고, 랜더링 하면 되는 것) 빠르게 es 필드들을 업데이트하고, 팀 내에서 결과를 확인해볼 수 있게끔 하는 게 좋다고 판단했다. 


[소회]

- 굳이 무거운 기술들에 매몰될 필요는 없는 것 같음. 제로 베이스에서 6~70%을 만드는 것은 요즘 세상에서 어렵지 않은 것 같음.

- 물론 최신 기술들(머신러닝 등)을 쓰면 80~90%을 달성할 수 있다. 그런데 오래 걸리고. ROI가 높은 것 같음. 먼저 6-70%을 빠르게 만들고, 고객과 시장에 맞게 대응을 하는 게 베스트 아닐까-하고 요즘은 생각 중.

- 70에서 8~90%을 가는 것이 의미가 있다고 하면 하이테크를 도입하는 것이고.. 그 8~90% 속에서 몇퍼 올리는 것이 중요하다면, 회사의 입장에서, 비즈니스 도메인 영역에서 의미 있는 영역이고 수치라면 그것에 매진하는 것이 맞지 않을까. 

- 여하튼 나는, 우리는 빠르게 시도해보고 확인하고 대처하는 것에 만족을 하고 있음. 

매거진의 이전글 [데이터/스터디] 하용호님 온라인 강의 #1
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari