ko-lm-dataformat

A utility for storing and reading files for Korean LM training.


License
MIT
Install
pip install ko-lm-dataformat==0.3.0

Documentation

ko_lm_dataformat

PyPI License Code style: black

  • 한국어 언어모델용 학습 데이터를 저장, 로딩하기 위한 유틸리티

    • zstandard, ultrajson 을 사용하여 데이터 로딩, 압축 속도 개선
    • 문서에 대한 메타 데이터도 함께 저장
  • 코드는 EleutherAI에서 사용하는 lm_dataformat를 참고하여 제작

    • 일부 버그 수정
    • 한국어에 맞게 기능 추가 및 수정 (sentence splitter, text cleaner)

Installation

pip3 install ko_lm_dataformat

Usage

1. Write Data

1.1. Archive

import ko_lm_dataformat as kldf

ar = kldf.Archive("output_dir")
ar = kldf.Archive("output_dir", sentence_splitter=kldf.KssV1SentenceSplitter()) # Use sentence splitter

1.2. Adding data

  • meta 데이터를 추가할 수 있음 (e.g. 제목, url)
  • 하나의 document가 들어온다고 가정 (str 이 아닌 List[str] 로 들어오게 되면 여러 개의 sentence가 들어오는 걸로 취급)
  • split_sent=True이면 document를 여러 개의 문장으로 분리하여 List[str] 으로 저장
  • clean_sent=True이면 NFC Normalize, control char 제거, whitespace cleanup 적용
for doc in doc_lst:
    ar.add_data(
        data=doc,
        meta={
          "source": "kowiki",
          "meta_key_1": [othermetadata, otherrandomstuff],
          "meta_key_2": True
        },
        split_sent=False,
        clean_sent=False,
    )

# remember to commit at the end!
ar.commit()

2. Read Data

  • rdr.stream_data(get_meta=True)로 할 시 (doc, meta) 의 튜플 형태로 반환
import ko_lm_dataformat as kldf

rdr = kldf.Reader("output_dir")

for data in rdr.stream_data(get_meta=False):
  print(data)
  # "간단하게 설명하면, 언어를 통해 인간의 삶을 미적(美的)으로 형상화한 것이라고 볼...."


for data in rdr.stream_data(get_meta=True):
  print(data)
  # ("간단하게 설명하면, 언어를 통해 인간의 삶을 미적(美的)으로 형상화한 것이라고 볼....", {"source": "kowiki", ...})