/cant-revan

(stable) 대량의 네이버 뉴스 기사를 수집하는 라이브러리입니다.

Primary LanguagePythonApache License 2.0Apache-2.0

can't-revan

Introduction

can't-revan은 대량의 네이버 뉴스 기사를 수집하는 라이브러리였던 canrevan의 포크 입니다.
유기되었던 canrevan을 부활시키고, json 형태로 저장하게 수정하였습니다.
빠르고 간편하게 대용량의 한국어 뉴스 데이터셋을 생성합 수 있습니다.

NLP task에서 가장 중요한 부분 중 하나는 데이터셋입니다. 특히 한국어의 경우, 영어에 비해 수집할 수 있는 데이터가 매우 부족합니다. 특히, 위키피디아 덤프 파일의 경우 영문 버전이 16.1GB인 것에 비해 한국어 버전은 651.3MB밖에 되지 않습니다. 그렇기 때문에, 일반적인 NLP 학습에 있어서 위키피디아와 같은 데이터셋을 사용하기에는 턱없이 부족합니다. 그렇다면 데이터셋 규모를 키우기 위해서 어떻게 해야 할까요? 우리는 다른 곳에서 데이터를 수집해야 합니다. 대표적으로 뉴스 기사가 있습니다.

실제로 많은 연구자들이 위키 데이터를 포함하여, 인터넷 뉴스 기사를 함께 사용해 말뭉치를 구성합니다. 인터넷 뉴스 기사는 다음과 같은 특징을 가지고 있습니다.

  • 매우 많은 데이터를 가지고 있습니다. 매일 다양한 언론사에서 작성되는 기사의 양은 상당히 많습니다.
  • 데이터의 품질이 우수합니다. 기본적으로 뉴스 기사는 맞춤법 뿐만 아니라 내용상으로 잘 구성되어 있습니다.
  • 비교적 잘 정형화되어 있습니다. 인터넷 뉴스 기사는 암묵적으로 일정한 규칙과 구조를 가지고 있습니다. 정규화하기 쉽습니다.
  • 다양한 분야의 문서가 존재합니다. 뉴스 기사는 분야와 주제를 가리지 않습니다. 정치, 사회, 경제 등등의 주제를 다룹니다.

네이버 뉴스는 각 언론사의 뉴스를 종합하여 제공합니다. 하나의 플랫폼에서 다양한 언론사의 방대한 뉴스 기사를 수집할 수 있습니다. 실제로 많은 연구자들이 네이버 뉴스를 통해 기사를 수집합니다.

can't-revan은 네이버 뉴스에서 기사를 수집하도록 도와줍니다. 명령창에서 한 줄로 수 기가바이트의 데이터를 손쉽게 수집할 수 있습니다. 자세한 내용은 여기를 참고하시기 바랍니다.

Dependencies

  • tqdm>=4.46.0
  • bs4
  • lxml>=4.5.1
  • aiohttp
  • langumo

Installation

From source

$ git clone https://github.com/yeorinhieut/cant-revan.git
$ cd cant-revan
$ python setup.py install

Example

수집하고자 하는 카테고리의 id를 네이버 뉴스에서 확인합니다. 본 예제에서는 정치(100)와 경제(101) 카테고리에 대한 뉴스를 수집해봅시다. 다음은 2020년 5월 1일부터 31일까지 5개의 페이지에 대한 기사를 수집하는 명령입니다. 자세한 사용법은 canrevan --help를 참고하시기 바랍니다.

$ canrevan --category 100 101 --start_date 20200501 --end_date 20200531 --max_page 5

성공적으로 뉴스 기사가 수집되었다면, 다음과 같은 출력을 확인할 수 있습니다.

[*] navigation pages: 310
[*] collect article urls: 100%|█████████████████████████████████████████████████████████████| 310/310 [00:05<00:00, 60.43it/s]
[*] total collected articles: 4998
[*] crawl news article contents: 100%|███████████████████████████████████████████████████| 4998/4998 [00:24<00:00, 200.41it/s]
[*] finish crawling 4781 news articles to [articles.txt]

Format

cant-revan은 수집된 뉴스 기사를 json으로 저장합니다.

"{"timestamp": "20231231", "title": "北 \"유사시 남한 전 영토 평정\"...정부 \"강력 규탄\"", "content": "\"남북을 적대관계로 규정한 김정은 위원장은 또, 유사시 남한의 전 영토를 평정하기 위한 준비에 박차를 가할 것이라고 위협했습니다.정부는 북한의 지속적인 핵무기 개발과 적대적 대남노선을 강력히 규탄한다고 밝혔습니다.\\n정인용 기자가 보도합니다.\\n이번 전원회의에서 나온 국방력 강화계획은 지난 2021년에 제시된 5개년 계획을 상당 부분 뒷받침하고 있습니다.\\n김정은 위원장은 앞으로 1년 안에 5개년 계획의 실천적 담보가 확보돼야 한다고 강조했습니다.\\n이에 따라 군사정찰 위성과 무인기, 핵 잠수함, 고체연료 대륙간탄도미사일 등 핵심과제 달성에 집중할 것으로 관측됩니다.\\n김 위원장은 또 한미일 안보협력을 강하게 비난한 뒤 핵무기 생산을 지속적으로 늘릴 수 있는 토대를 구축하라고 지시했습니다.\\n그러면서 국가 방위력의 급진적 발전과 유사시 압도적 능력을 주문했습니다.\\n또 강 대 강, 정면 승부, 고압적, 초강경 정책이란 말을 동원해 대남·대미 비난에 나섰습니다.\\n전문가들은 북한의 이 같은 방침이 새로운 대남노선과 밀접하게 관련돼 있다고 분석했습니다.\\n정부는 북한의 지속적인 핵미사일 고도화와 대남노선의 적대적 전환 등을 강력히 규탄한다며 원칙에 입각한 남북관계 정상화를 일관되게 추진해 나갈 것이라고 밝혔습니다.\\nYTN 정인용입니다.\""}"

License

cant-revan은 Apache-2.0 라이센스가 적용되어 있습니다.