elasticsearch, gensim, 검색, 키워드 추출, 토픽 워드
[발단]
1. 회사 서비스 일부 검색 시나리오에서 elasticsearch를 사용하고 있음.
2. 특정 인덱스-도큐먼트-필드에 문서 요약 키워드를 추가해야 했음.
[전개]
1. 생각한 방법은 두 가지
1.1. es에서 쉽게 해결할 수 있는 방안이 있나?
1.2. 스크립팅으로 해결하고(es 데이터 받아오고 -> 스크립팅 - > 다시 es 필드 업데이트)
2. 업데이트해야 하는 문서는 40만 건 정도 (크게 문제 안됨)
3. 일단 리서치해보자
[1. es에서 쉽게 해결할 수 있나?]
- significant terms aggregation 등의 키워드를 찾음
- 커뮤니티에서 추천해주긴 함.
https://esbook.kimjmin.net/08-aggregations
근데 이게 맞는 건지, 효율적인지 잘 모르겠음.
[2. 스크립팅으로 해결(파이썬에서 자연어 처리 후 es 업데이트)]
https://soyoung-new-challenge.tistory.com/44
https://excelsior-cjh.tistory.com/93
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% 속에서 몇퍼 올리는 것이 중요하다면, 회사의 입장에서, 비즈니스 도메인 영역에서 의미 있는 영역이고 수치라면 그것에 매진하는 것이 맞지 않을까.
- 여하튼 나는, 우리는 빠르게 시도해보고 확인하고 대처하는 것에 만족을 하고 있음.