뉴스 기반 실시간 트렌드 분석기입니다.
이를 위해 가장 필요한 단계는 데이터 수집입니다.
시작이 반이라는 말도 있듯이
뉴스 데이터가 안정적, 지속적으로 들어오지 않으면 키워드 분석이나 점수 산정도 모두 불가능해집니다.
그래서 첫 번째 글에서는 뉴스 데이터를 어떻게 수집할 것인지 고민을 해보려고 합니다.
뉴스 데이터를 가져오는 방법은 크게 두 가지가 있습니다.
RSS 피드를 사용하는 방식과 직접 웹 크롤링을 하는 방식입니다.
대부분의 언론사는 RSS 피드를 제공하고 있습니다.
구조화된 xml 형태로 데이터 값을 받아 올 수 있어 파싱이 쉽고 요청 속도도 빠릅니다.
하지만 단점이 있습니다:
RSS 피드에 제공되지 않는 본문이나 추가 정보를 크롤링 방식을 통해 얻을 수 있습니다.
따라서 기사 본문을 전부 끌어올 수 있고, 추가적인 메타 데이터도 수집할 수 있다는 장점이 있습니다.
하지만 사이트마다 구조가 다르고 차단 이슈도 존재합니다.
결국 RSS 피드만 사용하면 데이터는 안정적이지만,
본문이나 메타데이터가 없기 때문에 점수 산정을 할때 좀 더 정밀도가 낮은 방식으로 갈 수밖에 없을 것 같다는 생각이 듭니다.(메타데이터 없이 정밀도를 높일 방법을 생각해보는 것도 좋을 것 같습니다.)
반대로, 크롤링을 추가하면 더 정확한 점수 산정이 가능하지만
실시간성, 유지보수, 안정성 측면에서 부담이 커집니다.
시간과 리소스를 더 들여 크롤링까지 추가할 것인가,
아니면 RSS 피드만으로 점수 산정을 할 것인가.
이를 결정하기 위해, 우선 점수 산정 정책을 정의해보고
그 기준에 따라 RSS 피드만으로 충분한지, 크롤링이 필요한지 판단해보고자 합니다.
데이터 수집 방식에 따라 점수 산정 방식도 달라질 것입니다.
RSS 만 사용할지, 크롤링까지 포함할지는 기술 선택의 문제가 아니라 점수의 정밀도를 어디까지 끌어올릴 것이냐와 연결됩니다.
그래서 점수 정책을 두 가지 방향으로 나눠서 생각해봤습니다.
RSS는 기본적으로 제목, 링크, 발행시각, 짧은 설명 정도만 제공합니다. 본문이 거의 없는 수준이기에 텍스트 분석에 제한이 있고, 점수 계산도 단순해질 수밖에 없습니다.
✔ 사용할 수 있는 정보
✔ 가능한 점수 구성 요소
✔ 한계
크롤링을 사용하면 기사 본문 전체를 확보할 수 있어 RSS 피드만을 사용할 때보다 높은 정밀도의 점수 정책을 구성할 수 있습니다.
✔ 사용할 수 있는 정보
✔ 가능한 점수 구성 요소
고민 끝에 짧은 시간 동안 크롤링을 직접 구현해보고 판단하기로 했습니다.
RSS 피드만으로 점수 모델을 구성해보면 정밀도에 대한 아쉬움이 크고
반대로, 크롤링을 도입하면 점수 산정 부분에서는 좋지만 실시간 시스템에서 버틸 수 있는지 의문이 있기에,,
따라서 최대 이틀을 잡고 기본적인 크롤링을 구현한 뒤 실제 점수 산정의 정밀도가 얼마나 달라지는지 직접 비교해보기로 했습니다.
구현 과정은 추가적으로 포스팅할 예정입니다!