어떤 콘텐츠에서 어떤 키워드가 추출되었는지 모니터링하기가 쉽니 않다.
TFIDF를 이용하는데에 Pik, Category, Link를 같은 방식으로 계산하고 있다.
→ 길이를 고려한다든지(BM25)에 관련된 고려사항이 존재하지 않는다.
추출된 명사에 대한 inverted index를 만든다.

어떤 명사가 어떤 콘텐츠와 연관되어있는지 알 수 있다.
위의 내용을 바탕으로 콘텐츠의 키워드를 추출한 테이블을 새롭게 만든다.
추출된 키워드에 대한 모니터링도 중요하지만, 벡터와를 위해서 추출된 키워드의 TFIDF 점수까지 JSON으로 저장을 하는 것도 좋은 방법이라고 반단하였다.
→ 모델이 갱신되면서 개선될 수 있는 OOV 문제에 대해서 유연한 대처가 가능할 것으로 보임(기존의 방식은 모델이 바뀌면 다시 키워드를 추출하고 임베딩을 했어야 했다.)

어떤 컨텐츠가 어떤 키워드에 대해서 어떤 점수를 얻었는지 알 수 있다.
임베딩 과정을 모델에 따른 사상과정이라고 생각한다면 키워드를 미리 벡터화 시키지 않고 보관을 해놓는 것도 매우 적절한 대책이 될것이라고 판단하였다.
속도: line_profiler를 통해서 속도 측정 및 병렬, 분산 작업 활성화
pandas에서 병렬성을 제공하는 Dask와 Swifter를 사용하여 병렬화된 작업을 적극 활용할 수 있다. Dask의 경우 성능면에서는 우수하지만 코어의 수를 정하고 몇가지 발생하는 옵션의 수로 인해서 간단하게 한줄로 pandas를 사용하는 것처럼 사용할 수 있는 Swifter를 사용하였다.
메모리: memory_profiler를 베이스로 메모리 사용량 측정
피큐레잇의 프로젝트에서 배치작업에서 속도가 매우 중요한 부분을 차지하지는 않는다. 따라서 되도록 메모리에 집중하되 병렬성을 최대한 활용하여 개선을 하도록 해보자
기존의 방식
일단 loop와 .iloc와 같은 방식은 Series 객체의 빈번한 생성과, 역참조에 의해서 속도측면에서 매우매우 좋지 않은 선택이다. apply를 사용하여 이러한 속도저하를 해결해보자

pandas raw=True를 사용하여 Series 객체의 생성을 최소한으로 하여 메모리를 줄이자.

apply와 옵션을 사용하여 loop를 줄이고 메모리를 아껴보자