Korean Institute of Information Technology
[ Article ]
The Journal of Korean Institute of Information Technology - Vol. 20, No. 8, pp.1-6
ISSN: 1598-8619 (Print) 2093-7571 (Online)
Print publication date 31 Aug 2022
Received 11 Jul 2022 Revised 08 Aug 2022 Accepted 11 Aug 2022
DOI: https://doi.org/10.14801/jkiit.2022.20.8.1

텍스트 마이닝과 LOD 기법을 활용한 뉴스 추천 시스템

김다희* ; 윤소영* ; 채승연* ; 유석종**
*숙명여자대학교 소프트웨어학부
**숙명여자대학교 소프트웨어학부 교수
A News Recommendation System using Text Mining and LOD Techniques
Da-Hui Kim* ; So-Yeong Yun* ; Seung-Yeon Chae* ; Seok-Jong Yu**

Correspondence to: Seok-Jong Yu Dept. of Computer Science, Sookmyung Women’s University, Korea Tel.: +82-2-710-9831, Email: sjyu@sookmyung.ac.kr

초록

오늘날 현대인들은 기하급수적으로 늘어나는 정보 홍수 속에서 중요한 뉴스 기사를 판별하는 과정없이 그대로 방치되고 있다. 본 연구에서는 이러한 문제를 개선하고자 텍스트 마이닝과 LOD 기법을 활용하여 유용한 기사를 선별하는 뉴스 추천 시스템을 제안하였다. 포털 사이트 네이버의 뉴스 기사를 크롤링하여 분석 데이터를 수집하고, 자연어 처리를 위해 기사 본문에 대해 전처리를 수행한다. K-means 군집화를 통해 중복 기사를 제거하고, TF-IDF 모델과 TextRank 알고리즘을 이용해 각 기사별 중요 키워드를 추출한다. 최종적으로 선별된 기사에 대해 사용자가 원하는 LOD 인터페이스를 통하여 요약 기사 읽기 기능을 제공한다. 본 연구의 후속 연구로 사용자의 행위 분석에 기반한 능동적인 LOD 자동화 기법 연구의 필요성을 제안한다.

Abstract

People live without having enough time to identify meaningful articles from explosively increasing information. Hence, in this paper, we propose a news filtering system using the Text-mining and LOD(Level of Detail) technique. The data for analysis is collected by crawling Naver news articles. For natural language processing, preprocessing is performed on the body of the news articles. Using the following TF-IDF model and TextRank algorithm, we extract the top 5 keywords in the final score for each article. In addition, TF-IDF values are calculated for news articles, and duplicated articles are removed through K-means clustering. Therefore, users are provided with articles selected according to their importance and can read articles with a required summary level. And we expect this system helps people use the information more efficiently.

Keywords:

text mining, recommender systems, level of detail, textrank

Ⅰ. 서 론

현대인들은 기하급수적으로 늘어나는 정보 홍수 속에 그대로 노출되어 살아가고 있다. 뉴스 기사는 매 순간 생산되고 즉시 소비되는 정보의 특성이 있으며 자극적인 제목의 수많은 중복 뉴스가 쉴새 없이 생산되고 있다. 이러한 환경에서 사용자들이 뉴스 기사의 유용성을 적절히 판단하여 의사 결정에 반영하는 것은 쉽지 않다. 또한, 현대인들은 과거와 달리 다양한 콘텐츠 소비 성향을 보인다. 2021년 언론수용자 조사에서 20, 30대는 고연령층에 비해 디지털 플랫폼에서 뉴스를 이용하는 비율이 현저하게 높았고, 인터넷 포털/검색엔진·온라인 동영상 플랫폼·SNS·메신저 서비스를 언론으로 인식하는 정도도 높았다[1]. 또한, 밀레니얼 세대(1980년대 중반~1999년)를 대상으로 진행한 포커스 그룹 인터뷰 결과에 따르면 20대 참여자들은 텍스트 위주의 전통적 형식을 갖춘 뉴스보다 한 주의 이슈 정리, 카드뉴스와 같은 핵심만 요약했거나 쉽게 풀어 정리한 뉴스를 선호한 것으로 나타났다[2].

본 논문에서는 이러한 현대인의 특성들을 고려하여 이용자의 효율적인 정보 획득을 돕는 시스템을 개발하고자 지리정보시스템의 LOD(Level of Detail) 개념을 적용하였다. 구글 맵 등 지리정보시스템에서는 사용자의 요청에 따라 정보의 수준을 단계별로 조절하여 제공한다. 이러한 개념을 뉴스 추천 시스템에 적용하여 내용의 중요도에 따라 뉴스 기사를 선별하며 기사를 읽는데 소요되는 시간을 조절할 수 있다. 레벨이 낮을수록 많은 수의 자세한 기사가 노출되며, 반대로 레벨이 높을수록 더 간략하게 적은 수의 기사에 노출된다. 특히 가장 높은 레벨에서는 키워드만으로 전체 기사 트렌드를 확인할 수 있다.

유사한 서비스로 포털 사이트 네이버는 ‘랭킹 뉴스’를 제공한다. 랭킹 뉴스의 경우 네이버 콘텐츠 제휴 언론사의 전체 기사를 기반으로 하는 것이 아닌, 언론사별로 집계한 순위 결과이다. 또한, 각 언론사가 직접 선정한 뉴스만을 이용하기 때문에 이용자들이 전체 언론사 기사에 대한 순위를 파악하기 어렵다는 한계점을 가진다. 또한, 기존 요약 서비스는 기사 본문에 대한 3줄 요약 기능만을 제공하고 있으며 다양한 사용자의 요구를 반영하지 못하고 있다. 본 연구에서는 중요도와 시간 개념을 반영하여 방대한 뉴스 기사를 필터링하고 사용자 요구에 맞추어 뉴스의 양을 조절할 수 있다.

본 논문의 구성은 다음과 같다. 2장은 관련 연구로 본 논문에서 제안하는 시스템의 핵심이 될 텍스트 마이닝, LOD 및 TextRank 개념에 대해 서술한다. 3장에서는 본 논문에서 제안하는 뉴스 추천 시스템에 대해 자세하게 기술한다. 4장에서는 시스템 구현 결과와 정성적 성능 비교에 대해 논한다. 마지막으로 5장에서는 결론과 본 연구의 한계점 및 향후 과제를 기술한다.


Ⅱ. 관련 연구

2.1 텍스트마이닝

텍스트마이닝(Text mining)이란 구조화되지 않은 문서 형태 데이터로부터 유용한 정보를 추출하고 가공하기 위한 데이터 분석기법이다. 이때 문서 데이터에는 웹 사이트, 책, 이메일, 후기, 뉴스 기사 등이 포함된다. 데이터 처리 기술로는 자연어 처리 기술과 문서처리 기술이 적용되며, 문서 분류, 문서 요약, 키워드 추출, 특성 추출 등의 데이터마이닝 기법이 사용된다[3].

2.2 LOD

LOD은 그래픽스 분야에서 대량의 폴리곤 데이터의 퀄리티와 처리 성능을 함께 보장하기 위하여 단계에 따라 정보량을 조절하는 렌더링 기법을 의미한다. 이 개념은 주로 3D 그래픽 게임, 지리정보시스템, 3D 도시 모델링에 사용되며,정적 LOD와 동적 LOD 방식이 존재한다.

정적 LOD는 특정 객체에 여러 모델을 동시에 제공하고 요청에 따른 모델을 제공한다. 이미 정밀도가 고정되어있어 연산 속도가 빠르나 추가적인 메모리 공간이 필요하며 단계의 급변으로 인한 팝핑(LOD 단계가 전환될 때 화면이 어색해지는 현상)이 발생할 수 있다.

동적 LOD는 시간에 따라 정밀도를 제어하는 방법이다. 자연스럽게 LOD가 변하기 때문에 팝핑 및 메모리 낭비 문제가 개선되지만 추가적인 연산시간이 필요하여 처리 속도가 느리다[4][5].

2.3 그래프 기반 랭킹 알고리즘

그래프 기반 랭킹 알고리즘은 로컬 정점의 특정 정보에만 의존하지 않고, 전체 그래프에서 재귀적으로 계산된 전역 정보를 고려하여 그래프 내에서 정점의 중요성을 결정하는 방법이다. 대표적인 그래프 기반 랭킹 알고리즘으로 Google의 PageRank가 있다[6]. PageRank는 웹 페이지의 상대적 중요도를 측정하기 위해 웹의 그래프를 기반으로 모든 웹 페이지에 대한 랭킹을 계산하는 방법이다. 일반적으로 중요한 웹 페이지는 다른 웹 페이지로부터 더 많은 유입 링크를 갖는다고 가정한다. TextRank[7][8]는 자연어 텍스트에서 추출한 어휘나 의미 그래프에 PageRank와 같은 방식을 적용하는 그래프 기반 랭킹 알고리즘으로 텍스트 내의 특정 단어가 다른 문장과 맺는 관계를 계산하여 연관된 단어의 수가 많은 단어나 문장을 중요하다고 판단한다. PageRank는 가중치가 없는 그래프를 가정하지만, TextRank 모델에 그래프는 자연어 텍스트로 구축되며 텍스트에서 추출된 정점 간의 다중 또는 부분 링크를 포함할 수 있다. 따라서 그래프의 정점과 관련된 점수 계산 시 간선의 가중치를 고려한다.

그래프 기반 랭킹 알고리즘을 자연어 텍스트에 적용하기 위해 텍스트를 나타내는 그래프를 구축한다. 구축된 그래프를 이용하여 키워드 추출과 핵심 문장 추출의 2가지 작업을 수행할 수 있다. 본 논문에서는 TextRank의 키워드 추출 기능을 활용한다.

2.4 TF-IDF

TF-IDF는 주로 정보 검색과 텍스트마이닝에서 이용하는 가중치 지표로 어떤 단어가 특정 문서 내에서 얼마나 중요한 것인지를 나타내는 통계적 수치이다. TF(Term Frequency)는 문서 내에서 특정 단어의 등장 횟수를 의미하고, IDF(Inverse Document Frequency)는 특정 단어가 등장한 문서의 수에 반비례하는 수를 의미한다. TF-IDF 값이란 TF값과 IDF값의 곱을 가리킨다. 따라서 특정 문서 내에서 단어 등장 빈도가 높을수록, 전체 문서 중 그 단어를 포함한 문서가 적을수록 TF-IDF 값이 커지고, 이 값을 이용하면 모든 문서에 흔하게 나타나는 단어를 걸러내는 효과를 얻을 수 있다[9].


Ⅲ. 텍스트 마이닝과 LOD 기법을 활용한 뉴스 추천 시스템

본 논문에서 제안하는 뉴스 추천 시스템의 구조는 그림 1과 같다. 다음은 각 단계에 대한 세부 설명이다.

Fig 1.

Process of filtering news articles and extracting keywords

3.1 데이터 수집

본 연구에서는 네이버에 게재된 여러 언론사의 온라인 뉴스 기사를 분석 데이터로 수집하였다. 대상 언론사로 네이버 뉴스 구독자 수가 300만 이상인 종합지 8곳, 400만 이상인 방송사 6곳, 400만 이상인 경제지 5곳을 선정했다. 네이버가 분류한 정치, 경제, 사회, 생활/문화, IT/과학, 세계 총 6개 섹션의 뉴스 기사 데이터를 크롤링하여 활용하였다. 크롤링은 Python 라이브러리인 BeautifulSoup와 Selenium을 활용하였다. 총 587건의 뉴스 기사 데이터를 수집하였으며, 수집된 데이터는 기사 작성일, 언론사, 섹션, 댓글 수, 제목, 링크, 내용으로 구성된다.

3.2 데이터 처리

수집된 뉴스 기사 데이터는 자연어 처리 과정을 거친다. 한국어 정보처리는 Python 라이브러리 패키지인 KoNLPy를 사용하였다.

KoNLPy는 형태소 분석, 품사 태깅을 위한 다양한 라이브러리를 제공한다. 본 연구에서는 꼬꼬마(Kkma) 분석기를 사용하여 뉴스 기사 텍스트를 문장 단위 분리 후 리스트 자료형으로 저장한다[10]. 다음으로 Mecab 분석기를 사용하여 문장마다 단어 순위를 매기기 위해 문장 내 명사를 추출하는 자연어 처리를 수행한다[11]. 이 과정에서 뉴스 기사 내에서 큰 의미를 갖지 않는 언론사 이름, 특수 문자, 조사와 어미 등의 불용어도 제거한다.

3.3 중복 기사 제거

중복 기사 제거에는 차수진 등[12]이 제안한 방법을 사용하였다. 단어들을 TF-IDF 벡터화해 기사별 TF-IDF 값을 계산하고 K-means 군집화를 수행한다. 이때 k 값은 n/2/2 (n:기사의 수)로 지정한다. 군집 내 문서들의 내용을 단어 빈도수 기준으로 벡터화를 진행한다. 이 벡터의 스칼라 곱을 계산한 결과가 중복 판단 기준 이상일 경우 중복이라고 판단한다. 본 연구에서는 코사인 유사도가 0.9 이상일 경우 중복 기사라 판단한다.

3.4 키워드 추출

Python의 머신러닝 라이브러리인 Scikit-learn의 TfidfVectorizer를 사용해 TF-IDF로 문장 내 단어들을 벡터화하고, 문장-단어 행렬(Sentence-term matrix)을 생성한다. 이어서 이 행렬의 전치행렬을 구한 뒤 서로 곱해주어 상관계수 행렬(Correlation matrix)을 계산한다. 이 행렬을 통해 최종적으로 TextRank 알고리즘을 적용할 문장이나 단어 간의 가중치 그래프(Weighted graph)를 나타낼 수 있다.

이전 단계에서 구한 가중치 그래프를 TextRank 수식이 담긴 함수에 넣어 점수를 매긴다. 순위가 높은 순으로 정렬하여 문장을 출력하거나 상위 순위 키워드를 추출한다.


Ⅳ. 시스템 구현 및 수행 결과

4.1 LOD 단계

수집된 뉴스 기사 데이터에 섹션별로 K-means 군집화를 수행한다. 군집마다 댓글 수와 상위 5개 키워드의 TextRank 점수를 고려하여 화면에 출력할 기사를 선정한다. 표 1은 LOD 수준별 기사 요약 속성을 정리한 것이다.

Features of each level

LOD 단계는 기사 수, 키워드 수 그리고 뉴스 기사 읽기 소요시간에 따라 4단계로 구분한다. 가장 높은 요약 수준을 의미하는 레벨 1에서는 통합 및 섹션별 뉴스 키워드만을 확인할 수 있다. 레벨 2에서는 통합 뉴스 기사와 기사별 키워드, 레벨 3에서는 섹션별 뉴스 기사와 기사 및 섹션별 키워드, 가장 낮은 요약 수준인 레벨 4에서는 사용자가 뉴스 기사 읽기에 사용할 시간을 입력하면 그에 해당하는 분량의 뉴스 기사를 출력한다. 이 경우 독자의 가사 읽는 속도를 분당 평균 750자로 가정하였다.

4.2 수행 결과

그림 2는 레벨 1을 선택했을 경우의 수행 결과이다. 통합 및 섹션별 키워드를 추출하여 출력한다.

Fig 2.

LOD level 1

그림 3은 레벨 2를 선택했을 경우 수행 결과를 보여준다. 통합 기사 및 기사별 키워드가 제공된다.

Fig 3.

LOD level 2

그림 4는 레벨 3을 선택했을 경우 수행 결과이다. 섹션별 기사와 키워드가 제공된다.

Fig 4.

LOD level 3


Ⅴ. 결론 및 향후 과제

본 논문에서는 텍스트 마이닝과 LOD를 이용한 뉴스 추천 시스템을 제안하고 구현 결과를 제시하였다. 제안하는 시스템은 독자가 원하는 수준으로 요약된 기사를 제공할 수 있다. 그 결과 기존 서비스 대비 동일 시간에 전체 기사 정보를 효과적으로 압축하여 파악할 수 있다. 본 연구의 한계점으로 정량적인 성능 평가와 능동적인 독자의 행동 분석의 부재를 지적할 수 있다. 향후 연구에서 각 사용자의 뉴스 읽기 패턴, 속도를 분석해 능동적으로 개인 맞춤형 요약 서비스를 제공한다면 보다 효과적인 시스템으로 발전할 것으로 기대한다.

References

  • Korea Press Foundation, "Media Users in Korea 2021", pp. 194-198, Dec. 2021.
  • Sun Min Lee, Min Jung Jin, and Bong Hyun Lee, "Exploratory research on news use of millennial generation", Korean Journal of Broadcasting and Telecommunication Studies, Jul. 2020.
  • Hotho A., Nürnberger A., and Paaß G., "A brief survey of text mining", in Ldv Forum, Vol. 20, No. 1, pp. 19-62, 2005.
  • Joon-Hee Kwon and Yong-Ik Yoon, "A study on spatial indexing for level of detail data", Proceedings of the Korean Information Science Society Conference, 28(2), pp. 97-99, 2001.
  • Biljecki F., Ledoux H., Stoter J., and Zhao J., "Formalisation of the level of detail in 3D city modelling", Computers, Environment and Urban Systems, 48, pp. 1–15, 2001. [https://doi.org/10.1016/j.compenvurbsys.2014.05.004]
  • Page L., Brin S., Motwani R., and Winograd T., "The PageRank citation ranking: Bringing order to the web", Stanford InfoLab, Nov. 1999.
  • S. Brin and L. Page, "The anatomy of a large-scale hypertextual Web search engine", Computer Networks and ISDN Systems, pp. 30(1-7), 1998. [https://doi.org/10.1016/S0169-7552(98)00110-X]
  • Mihalcea, Rada, and Paul Tarau, "TextRank: Bringing order into texts", in Proceedings of EMNLP, Vol. 4, No. 4, 2004.
  • Rajaraman, Anand, and Jeffrey David Ullman, "Mining of massive datasets", Cambridge University Press, pp. 1-17, Jul. 2011. [https://doi.org/10.1017/CBO9781139058452]
  • Kkma, http://kkma.snu.ac.kr, . [accessed: Jun. 21, 2022]
  • Mecab, https://github.com/Pusnow/mecab-python-msvc, . [accessed: Jun. 21, 2022]
  • Sujin Cha, Joo-Young Lee, Jaeseong Kim, and Young-Kyoon Suh., "FLASH: A Memory-Efficient, Scalable Scheme for Deduplicating a Large Number of News Articles", Proceedings of the Korean Information Science Society Conference, pp. 97-99, 2019.
저자소개
김 다 희 (Da-Hui Kim)

2019년 2월 ~ 현재 : 숙명여자대학교 소프트웨어학부 학사과정

관심 분야 :프론트엔드, 데이터베이스

윤 소 영 (So-Yeong Yun)

2019년 2월 ~ 현재 : 숙명여자대학교 소프트웨어학부 학사과정

관심 분야 : 빅데이터, 데이터마이닝

채 승 연 (Seung-Yeon Chae)

2017년 2월 ~ 현재 : 숙명여자대학교 소프트웨어학부 학사과정

관심 분야 : 머신러닝, 데이터마이닝

유 석 종 (Seok-Jong Yu)

1994년 2월 : 연세대학교 컴퓨터과학과(이학사)

1996년 2월 : 연세대학교 컴퓨터과학과(이학석사)

2001년 2월 : 연세대학교 컴퓨터과학과(공학박사)

2005년 ~ 현재 : 숙명여자대학교 소프트웨어학부 교수

관심분야 : 데이터마이닝, 추천시스템, 정보시각화

Fig 1.

Fig 1.
Process of filtering news articles and extracting keywords

Fig 2.

Fig 2.
LOD level 1

Fig 3.

Fig 3.
LOD level 2

Fig 4.

Fig 4.
LOD level 3

Table 1.

Features of each level

Level Range Number of articles Number of keywords Reading time
1 All sections - 36(12 in all sections, 4 per section) Less than 6 min
2 All sections 10 53(3 in all sections, 5 by article) 6~12min
3 Each section 18(3 by section) 93(3 per section, 5 per article) 13~18min
4 Each section By reading time By user input(5 per section, 5 per article) User input