ko-nlp / Korpora

Korean corpus repository
Creative Commons Attribution 4.0 International
693 stars 80 forks source link

모두의 말뭉치: 신문 말뭉치 loader #107

Closed lovit closed 4 years ago

lovit commented 4 years ago

103 의 커멘트에 따라 각 말뭉치 별 이슈를 따로 작성합니다.

이후 commit message 에는 #103 과 각 말뭉치 관련 이슈 번호를 함께 기입합니다. @ratsgo

lovit commented 4 years ago

위 커밋은 fetch 기능이 구현되어 있지 않기 때문에 local file 을 이용하여 테스트합니다. 테스트 코드와 결과를 아래에 기록합니다.

(뉴스의 paragraph 와 title 만 가져오는 경우)

from Korpora.korpus_modu_news import ModuNewsKorpus

news_paths_or_news_dir = 'path/to/NIKL_NEWSPAPER(v1.0)/NPRW190000001*.json'  # wildcard
news_corpus = ModuNewsKorpus(news_paths_or_news_dir, load_light=True)

print(news_corpus)
Transform to ModuNews 1/10 files: 100%|██████████| 8187/8187 [00:00<00:00, 151720.58it/s]
Transform to ModuNews 2/10 files: 100%|██████████| 3/3 [00:00<00:00, 110.17it/s]
Transform to ModuNews 3/10 files: 100%|██████████| 9815/9815 [00:00<00:00, 193551.71it/s]
Transform to ModuNews 4/10 files: 100%|██████████| 13581/13581 [00:00<00:00, 98133.12it/s]
Transform to ModuNews 5/10 files: 100%|██████████| 9769/9769 [00:00<00:00, 78808.27it/s]
Transform to ModuNews 6/10 files: 100%|██████████| 7415/7415 [00:00<00:00, 98644.59it/s]
Transform to ModuNews 7/10 files: 100%|██████████| 4907/4907 [00:00<00:00, 75328.95it/s]
Transform to ModuNews 8/10 files: 100%|██████████| 5972/5972 [00:00<00:00, 64322.94it/s]
Transform to ModuNews 9/10 files: 100%|██████████| 3753/3753 [00:00<00:00, 67700.98it/s]
Transform to ModuNews 10/10 files: 100%|██████████| 2403/2403 [00:00<00:00, 76159.81it/s]

ModuNewsKorpus
    모두의 말뭉치는 문화체육관광부 산하 국립국어원에서 제공하는 말뭉치로
    총 13 개의 말뭉치로 이뤄져 있습니다.

    해당 말뭉치를 이용하기 위해서는 국립국어원 홈페이지에 가셔서 "회원가입 > 말뭉치 신청 > 승인"의
    과정을 거치셔야 합니다.

    https://corpus.korean.go.kr/#none

    모두의 말뭉치는 승인 후 다운로드 가능 기간 및 횟수 (3회) 에 제한이 있습니다.

    로그인 기능 및 Korpora 패키지에서의 다운로드 기능을 제공하려 하였지만,
    국립국어원에서 위의 이유로 이에 대한 기능은 제공이 불가함을 확인하였습니다.

    Korpora==0.2.0 에서는 "개별 말뭉치 신청 > 승인"이 완료되었다고 가정,
    로컬에 다운로드 된 말뭉치를 손쉽게 로딩하는 기능만 제공할 예정입니다

    (Korpora 개발진 lovit@github, ratsgo@github)

Attributes
----------
모두의_뉴스_말뭉치(light).train: size=65805
  - 모두의_뉴스_말뭉치(light).train.texts : list[str]
  - 모두의_뉴스_말뭉치(light).train.titles : list[str]
  - 모두의_뉴스_말뭉치(light).train.document_ids : list[str]

(뉴스의 모든 데이터 가져오는 경우)

news_corpus = ModuNewsKorpus(news_paths_or_news_dir, load_light=False)
print(news_corpus)
Transform to ModuNews 1/10 files: 100%|██████████| 8187/8187 [00:00<00:00, 137559.76it/s]
Transform to ModuNews 2/10 files: 100%|██████████| 3/3 [00:00<00:00, 105.26it/s]
Transform to ModuNews 3/10 files: 100%|██████████| 9815/9815 [00:00<00:00, 99699.20it/s]
Transform to ModuNews 4/10 files: 100%|██████████| 13581/13581 [00:00<00:00, 115484.73it/s]
Transform to ModuNews 5/10 files: 100%|██████████| 9769/9769 [00:00<00:00, 88232.40it/s]
Transform to ModuNews 6/10 files: 100%|██████████| 7415/7415 [00:00<00:00, 82891.83it/s]
Transform to ModuNews 7/10 files: 100%|██████████| 4907/4907 [00:00<00:00, 71083.02it/s]
Transform to ModuNews 8/10 files: 100%|██████████| 5972/5972 [00:00<00:00, 79849.23it/s]
Transform to ModuNews 9/10 files: 100%|██████████| 3753/3753 [00:00<00:00, 65359.40it/s]
Transform to ModuNews 10/10 files: 100%|██████████| 2403/2403 [00:00<00:00, 63691.02it/s]

ModuNewsKorpus
    모두의 말뭉치는 문화체육관광부 산하 국립국어원에서 제공하는 말뭉치로
    총 13 개의 말뭉치로 이뤄져 있습니다.

    해당 말뭉치를 이용하기 위해서는 국립국어원 홈페이지에 가셔서 "회원가입 > 말뭉치 신청 > 승인"의
    과정을 거치셔야 합니다.

    https://corpus.korean.go.kr/#none

    모두의 말뭉치는 승인 후 다운로드 가능 기간 및 횟수 (3회) 에 제한이 있습니다.

    로그인 기능 및 Korpora 패키지에서의 다운로드 기능을 제공하려 하였지만,
    국립국어원에서 위의 이유로 이에 대한 기능은 제공이 불가함을 확인하였습니다.

    Korpora==0.2.0 에서는 "개별 말뭉치 신청 > 승인"이 완료되었다고 가정,
    로컬에 다운로드 된 말뭉치를 손쉽게 로딩하는 기능만 제공할 예정입니다

    (Korpora 개발진 lovit@github, ratsgo@github)

Attributes
----------
모두의_뉴스_말뭉치.train: size=65805
  - 모두의_뉴스_말뭉치.train.texts : list[str]
  - 모두의_뉴스_말뭉치.train.document_ids : list[str]
  - 모두의_뉴스_말뭉치.train.titles : list[str]
  - 모두의_뉴스_말뭉치.train.authors : list[str]
  - 모두의_뉴스_말뭉치.train.publishers : list[str]
  - 모두의_뉴스_말뭉치.train.dates : list[str]
  - 모두의_뉴스_말뭉치.train.topics : list[str]
  - 모두의_뉴스_말뭉치.train.original_topics : list[str]
news_corpus.train[0]
ModuNews(document_id='NPRW1900000010.1', title='한국경제 2018년 기사', author='김현석', publisher='한국경제신문사', date='20180101', topic='생활', original_topic='국제', paragraph=['"라니냐로 겨울 가뭄 온다"… 콩·옥수수 등 곡물값 폭등 우려', '라니냐(La Nina)가 2018년 세계 농산물 시장을 뒤흔들 가능성이 커지고 있다. 적도 부근 태평양의 해수 온도가 평년보다 낮은 현상이 지속되면서 세계 농산물의 절반을 생산하는 남미와 미국에 가뭄이 예상되고 있어서다. 가뭄으로 생산량이 줄면 농산물 값이 급등하고, ...'])
lovit commented 4 years ago

NPRW1900000010.1 과 같은 뉴스 기사의 고유 아이디 정보는 이후 다른 말뭉치들과 연결하는 primary key 입니다. 이 정보는 ModuNewsKorpus 에서 따로 attributes 로 가지고 있도록 하였습니다.

news_corpus.row_to_documentid[:3]  # ['NPRW1900000010.1', 'NPRW1900000010.2', 'NPRW1900000010.3']
news_corpus.documentid_to_row['NPRW1900000010.2']  # 1