Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Huggingface Datasets을 올리고 공유하기 위한 description python file 만들기 #17

Open
sangHa0411 opened this issue Nov 28, 2021 · 0 comments
Assignees
Labels
help wanted Extra attention is needed

Comments

@sangHa0411
Copy link
Contributor

  1. 기초 정보
# 대상 데이터에 대한 설명
_DESCRIPTION = """
Aihub Paper Document summarization data
"""

# 다운 받아야 하는 데이터 주소 (directory)
_URL = "https://huggingface.co/datasets/metamong1/summarization_paper/resolve/main/"
_URLS = {
    "train": _URL + "train_data.json", # train data 주소
    "val": _URL + "val_data.json", # validation data 주소
}
  1. 클래스 생성 : datasets.GeneratorBasedBuilder 클래스를 상속해서 하위 클래스 만들기
class PaperSummarization(datasets.GeneratorBasedBuilder):
    # 기본 정보
    BUILDER_CONFIGS = [
        datasets.BuilderConfig(
            name="Paper Summarization",
            version=datasets.Version("1.0.0", ""),
            description="Magizine document Summarization",
        ),
    ]
  1. 위 클래스 내에서 구현해야 하는 함수들
    def _info(self):
        return datasets.DatasetInfo(
            # 위에서 만든 Description을 사용하면 됩니다.
            description=_DESCRIPTION,
            # 구성하고자 하는 데이터의 포멧에 맞춰서 Feature의 이름, 타입을 정확히 기입해주어야 합니다.
            features=datasets.Features(
                {
                    "doc_id": datasets.Value("string"),
                    "title": datasets.Value("string"),
                    "text": datasets.Value("string"),
                    "doc_type": datasets.Value("string"),
                    "file": datasets.Value("string"),
                }
            ),
            supervised_keys=None,
            homepage="https://huggingface.co/datasets/metamong1/summarization_paper",
        )

    def _split_generators(self, dl_manager):
        # 위에서 설정한 URL (Train, Validation 데이터 주소들)
        downloaded_files = dl_manager.download_and_extract(_URLS)

        return [
            # gen_kwargs에 있는 인자들이 밑에 있는 _generate_examples에 입력되어서 데이터를 생성하게 됩니다.
            # _URLS에 있는 'train' 및 'val'에 있는 최종적인 train 혹은 validation 파일의 주소에 접근해서 넘기게 됩니다. 
            datasets.SplitGenerator(name=datasets.Split.TRAIN, gen_kwargs={"filepath": downloaded_files["train"]}),
            datasets.SplitGenerator(name=datasets.Split.VALIDATION, gen_kwargs={"filepath": downloaded_files["val"]}),
        ]

    # 위에서 넘긴 gen_kwargs={"filepath": downloaded_files["train"]} 이 인자로 넘어가게 되면서 이 함수가 동작하게 됩니다.
    # 결과적으로 데이터의 주소를 넘겨야 합니다.
    def _generate_examples(self, filepath):
        logger.info("generating examples from = %s", filepath)
        key = 0
        with open(filepath, encoding="utf-8") as f :
            data = json.load(f)

        for info in data :            
            doc_type = info['doc_type']
            file_name = info['file']
            doc_id = info['doc_id']
            text = info['text']
            title = info['title']

            yield key, {
                "title" : title,
                "text" : text,
                "doc_type" : doc_type,
                "doc_id" : doc_id,
                "file" : file_name
            }
            key += 1
@sangHa0411 sangHa0411 added the help wanted Extra attention is needed label Nov 28, 2021
@sangHa0411 sangHa0411 self-assigned this Nov 28, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant