Summarization module based on KoBART

Overview

KoBART-summarization

Install KoBART

pip install git+https://github.com/SKT-AI/KoBART#egg=kobart

Requirements

pytorch==1.7.0
transformers==4.0.0
pytorch-lightning==1.1.0
streamlit==0.72.0

Data

  • Dacon 한국어 문서 생성요약 AI 경진대회 의 학습 데이터를 활용함
  • 학습 데이터에서 임의로 Train / Test 데이터를 생성함
  • 데이터 탐색에 용이하게 tsv 형태로 데이터를 변환함
  • Data 구조
    • Train Data : 34,242
    • Test Data : 8,501
  • default로 data/train.tsv, data/test.tsv 형태로 저장함
news summary
뉴스원문 요약문

How to Train

  • KoBART summarization fine-tuning
pip install -r requirements.txt
python train.py  --gradient_clip_val 1.0 --max_epochs 50 --default_root_dir logs  --gpus 1 --batch_size 4

Generation Sample

Text
1 Label 태왕의 '성당 태왕아너스 메트로'모델하우스는 초역세권 입지와 변화하는 라이프스타일에 맞춘 혁신평면으로 오픈 당일부터 관람객의 줄이 이어지면서 관람객의 호평을 받았다.
1 koBART 아파트 분양시장이 실수요자 중심으로 바뀌면서 초역세권 입지와 변화하는 라이프스타일에 맞춘 혁신평면이 아파트 선택에 미치는 영향력이 커지고 있는 가운데, 태왕이 지난 22일 공개한 ‘성당 태왕아너스 메트로’ 모델하우스를 찾은 방문객들은 합리적인 분양가와 중도금무이자 등의 분양조건도 실수요자에게 유리해 높은 청약경쟁률을 기대했다.
Text
2 Label 광주지방국세청은 '상생하고 포용하는 세정구현을 위한' 혁신성장 기업 세정지원 설명회를 열어 여러 세정지원 제도를 안내하고 기업 현장의 애로, 건의사항을 경청하며 기업 맞춤형 세정서비스를 제공할 것을 약속했다.
2 koBART 17일 광주지방국세청은 정부광주지방합동청사 3층 세미나실에서 혁신성장 경제정책을 세정차원에서 뒷받침하기 위해 다양한 세정지원 제도를 안내하는 동시에 기업 현장의 애로·건의사항을 경청하기 위해 ‘상생하고 포용하는 세정구현을 위한’ 혁신성장 기업 세정지원 설명회를 열어 주목을 끌었다.'
Text
3 Label 신용보증기금 등 3개 기관은 31일 서울 중구 기업은행 본점에서 최근 경영에 어려움을 겪는 소상공인 등의 금융비용 부담을 줄이고 서민경제에 활력을 주기 위해 '소상공인. 자영업자 특별 금융지원 업무협약'을 체결했다고 전했으며 지원대상은 필요한 조건을 갖춘 수출중소기업, 유망창업기업 등이다.
3 koBART 최근 경영애로를 겪고 있는 소상공인과 자영업자의 금융비용 부담을 완화하고 서민경제의 활력을 제고하기 위해 신용보증기금·기술보증기금·신용보증재단 중앙회·기업은행은 31일 서울 중구 기업은행 본점에서 ‘소상공인·자영업자 특별 금융지원 업무협약’을 체결했다.

Model Performance

  • Test Data 기준으로 rouge score를 산출함
  • Score 산출 방법은 Dacon 한국어 문서 생요약 AI 경진대회 metric을 활용함
rouge-1 rouge-2 rouge-l
Precosion 0.515 0.351 0.415
Recall 0.538 0.359 0.440
F1 0.505 0.340 0.415

Demo

  • 학습한 model binary 추출 작업이 필요함
    • pytorch-lightning binary --> huggingface binary로 추출 작업 필요
    • hparams의 경우에는 ./logs/tb_logs/default/version_0/hparams.yaml 파일을 활용
    • model_binary 의 경우에는 ./logs/kobart_summary-model_chp 안에 있는 .ckpt 파일을 활용
    • 변환 코드를 실행하면 ./kobart_summary 에 model binary 가 추출 됨
 python get_model_binary.py --hparams hparam_path --model_binary model_binary_path
streamlit run infer.py

drawing

Reference

Comments
  • RuntimeError: Expected tensor for argument #1 'indices' to have scalar type Long; but got torch.IntTensor instead (while checking arguments for embedding) 에러

    RuntimeError: Expected tensor for argument #1 'indices' to have scalar type Long; but got torch.IntTensor instead (while checking arguments for embedding) 에러

    image

    안녕하세요! 튜토리얼을 진행하던 중 런타임에러가 발생하여 문의드립니다.

    Read.md 파일을 보고 순서대로 따라한 뒤 저의 경우 gpu를 사용하지 않고 cpu만 사용하는 방식으로 트레이닝을 시켰습니다. 위에 첨부한 사진과 같이 에러가 발생하는데 코드를 뜯어보려고 하다가 어려움을 겪어서 문의드립니다.

    requirement는 전부 충족시켰습니다.

    감사합니다.

    opened by EugeneYoo 6
  • KoBART summarization fine-tuning시 에러 발생

    KoBART summarization fine-tuning시 에러 발생

    안녕하세요 좋은 모델 배포해주셔서 감사합니다.

    KoBART summarization을 이용하기 위해 설치 후 fine tuning을 하기 위해 Read.me에 안내된 아래의 코드를 실행했습니다.

    [use cpu]
    python train.py  --gradient_clip_val 1.0 --max_epochs 50 --default_root_dir logs  --batch_size 4 --num_workers 4
    

    하지만 Validation sanity check 과정에서 다음과 같은 에러가 발생하였습니다.

    INFO:root:Namespace(accelerator=None, accumulate_grad_batches=1, amp_backend='native', amp_level='O2', auto_lr_find=False, auto_scale_batch_size=False, auto_select_gpus=False, batch_size=4, benchmark=False, check_val_every_n_epoch=1, checkpoint_callback=True, checkpoint_path=None, default_root_dir='logs', deterministic=False, distributed_backend=None, fast_dev_run=False, flush_logs_every_n_steps=100, gpus=None, gradient_clip_algorithm='norm', gradient_clip_val=1.0, limit_predict_batches=1.0, limit_test_batches=1.0, limit_train_batches=1.0, limit_val_batches=1.0, log_every_n_steps=50, log_gpu_memory=None, logger=True, lr=3e-05, max_epochs=50, max_len=512, max_steps=None, max_time=None, min_epochs=None, min_steps=None, model_path=None, move_metrics_to_cpu=False, multiple_trainloader_mode='max_size_cycle', num_nodes=1, num_processes=1, num_sanity_val_steps=2, num_workers=4, overfit_batches=0.0, plugins=None, precision=32, prepare_data_per_node=True, process_position=0, profiler=None, progress_bar_refresh_rate=None, reload_dataloaders_every_epoch=False, replace_sampler_ddp=True, resume_from_checkpoint=None, stochastic_weight_avg=False, sync_batchnorm=False, terminate_on_nan=False, test_file='data/test.tsv', tpu_cores=None, track_grad_norm=-1, train_file='data/train.tsv', truncated_bptt_steps=None, val_check_interval=1.0, warmup_ratio=0.1, weights_save_path=None, weights_summary='top')
    using cached model
    using cached model
    using cached model
    GPU available: False, used: False
    TPU available: False, using: 0 TPU cores
    INFO:root:number of workers 4, data length 34242
    INFO:root:num_train_steps : 107006
    INFO:root:num_warmup_steps : 10700
    2021-11-05 10:27:55.060417: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found
    2021-11-05 10:27:55.069132: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
    
      | Name  | Type                         | Params
    -------------------------------------------------------
    0 | model | BartForConditionalGeneration | 123 M
    -------------------------------------------------------
    123 M     Trainable params
    0         Non-trainable params
    123 M     Total params
    495.440   Total estimated model params size (MB)
    Validation sanity check:   0%|                                                                   | 0/2 [00:00<?, ?it/s]Traceback (most recent call last):
      File "train.py", line 233, in <module>
        trainer.fit(model, dm)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytorch_lightning\trainer\trainer.py", line 460, in fit
        self._run(model)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytorch_lightning\trainer\trainer.py", line 758, in _run
        self.dispatch()
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytorch_lightning\trainer\trainer.py", line 799, in dispatch
        self.accelerator.start_training(self)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytorch_lightning\accelerators\accelerator.py", line 96, in start_training
        self.training_type_plugin.start_training(trainer)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytorch_lightning\plugins\training_type\training_type_plugin.py", line 144, in start_training
        self._results = trainer.run_stage()
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytorch_lightning\trainer\trainer.py", line 809, in run_stage
        return self.run_train()
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytorch_lightning\trainer\trainer.py", line 844, in run_train
        self.run_sanity_check(self.lightning_module)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytorch_lightning\trainer\trainer.py", line 1112, in run_sanity_check
        self.run_evaluation()
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytorch_lightning\trainer\trainer.py", line 967, in run_evaluation
        output = self.evaluation_loop.evaluation_step(batch, batch_idx, dataloader_idx)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytorch_lightning\trainer\evaluation_loop.py", line 174, in evaluation_step
        output = self.trainer.accelerator.validation_step(args)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytorch_lightning\accelerators\accelerator.py", line 226, in validation_step
        return self.training_type_plugin.validation_step(*args)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytorch_lightning\plugins\training_type\training_type_plugin.py", line 161, in validation_step
        return self.lightning_module.validation_step(*args, **kwargs)
      File "train.py", line 195, in validation_step
        outs = self(batch)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\torch\nn\modules\module.py", line 727, in _call_impl
        result = self.forward(*input, **kwargs)
      File "train.py", line 185, in forward
        labels=inputs['labels'], return_dict=True)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\torch\nn\modules\module.py", line 727, in _call_impl
        result = self.forward(*input, **kwargs)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\transformers\models\bart\modeling_bart.py", line 1295, in forward
        return_dict=return_dict,
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\torch\nn\modules\module.py", line 727, in _call_impl
        result = self.forward(*input, **kwargs)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\transformers\models\bart\modeling_bart.py", line 1157, in forward
        return_dict=return_dict,
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\torch\nn\modules\module.py", line 727, in _call_impl
        result = self.forward(*input, **kwargs)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\transformers\models\bart\modeling_bart.py", line 748, in forward
        inputs_embeds = self.embed_tokens(input_ids) * self.embed_scale
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\torch\nn\modules\module.py", line 727, in _call_impl
        result = self.forward(*input, **kwargs)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\torch\nn\modules\sparse.py", line 126, in forward
        self.norm_type, self.scale_grad_by_freq, self.sparse)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\torch\nn\functional.py", line 1852, in embedding
        return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)
    RuntimeError: Expected tensor for argument #1 'indices' to have scalar type Long; but got torch.IntTensor instead (while checking arguments for embedding)
    

    정상적으로 작동하게 하기 위해서는 어떻게 해야할까요??ㅜㅜ 감사합니다

    opened by BrainNim 5
  • Long story summarization 에 대해 질문하고자 합니다.

    Long story summarization 에 대해 질문하고자 합니다.

    안녕하세요, 좋은 코드를 공유해주셔서 감사합니다. 공유해주신 instruction을 바탕으로 여러 기사 데이터에 대해 효과적으로 요약을 수행하는 것을 확인하였습니다.

    하지만 기사가 아닌 소설과 같은 문학 또는 스크립트 등과 같은 커다란 데이터에 대해서 요약을 시도해보고자 한 결과 아래 사진과 같은 오류가 발생하는 것을 확인하였습니다.

    image

    이와 관련하여 Large size data를 처리할 수 있는 방법이 있는지에 대해 여쭙고 싶습니다.

    opened by jeje910 3
  • 모델 공유 질문 드립니다.

    모델 공유 질문 드립니다.

    안녕하세요 친구들과 Kobart 를 이용해 요약 모델 프로젝트를 진행하고 있습니다.

    우선 이렇게 좋은 프로젝트를 공유해주셔서 감사합니다! 해당 레포를 보면서 저희 프로젝트를 구상할 수 있었습니다!

    다른 모델들과 성능 비교를 위해 모델 파일이 필요한데, https://github.com/EugeneYoo/kobart_summarization_model/blob/main/kobart_summary.zip 위 레포의 파일의 경우 현재 lfs quota 제한으로 인해 이번달 사용량이 종료된 것 같더라고요

    혹시 다른 방법(google drive, email 등)으로 모델 파일을 공유해주실 수 있으신지 궁금합니다.

    opened by KimJaehee0725 2
  • train.py에서 UnicodeEncodeError

    train.py에서 UnicodeEncodeError

    안녕하세요. 해당 실습 진행 중에 다음과 같은 오류가 발생해서 질문 남깁니다. image

    requirements.txt에 적힌 사항들(torch==1.7.1 / transformers==4.3.3 / pytorch-lightning==1.1.0 / streamlit==0.72.0)과, torchtext==0.8.0 로 세팅 후 진행중입니다.

    감사합니다 :)

    opened by lee-jeongha 2
  • CPU Only버전으로는 진행이 어려운가요?

    CPU Only버전으로는 진행이 어려운가요?

    안녕하세요.

    올려주신 좋은 코드를 사용해보고 싶은데

    현재 제가 쓰고있는 사양이

    1050 Ti 라 CUDA 를 지원하지 않고 있습니다.

    CPU Only 버전으로 우회해서 돌려보고 싶은데, 방법이 있을까요??

    혹시나하여, 아래처럼 바꿔서 작동을 시켜봤지만.

    python train.py --gradient_clip_val 1.0 --max_epochs 50 --default_root_dir logs --gpus 0 --batch_size 4

    python train.py --gradient_clip_val 1.0 --max_epochs 50 --default_root_dir logs --batch_size 4

    당연하게도 동작하지 않았습니다.

    summarization 데모를 돌려볼 수 있는 방법이 있을까요?

    그래픽 카드를 변경하는 것이 답인가요??

    opened by EugeneYoo 2
  • 학습을 위한 스펙이 어느정도 되야하나요?

    학습을 위한 스펙이 어느정도 되야하나요?

    RuntimeError: CUDA out of memory. Tried to allocate 470.00 MiB (GPU 0; 10.76 GiB total capacity; 9.20 GiB already allocated; 471.81 MiB free; 9.28 GiB reserved in total by PyTorch)

    batch size를 1로 줄여도 이런식으로 에러가 계속뜹니다 현재 gpu 2080ti 2장에 cuda는 10.2입니다.

    opened by wql7654 2
  • pytorch_kobart  모델 다운로드시  checksum  오류가 발생합니다.

    pytorch_kobart 모델 다운로드시 checksum 오류가 발생합니다.

    pytorch_kobart = { 'url':'https://kobert.blob.core.windows.net/models/kobart/kobart_base_cased_b2a7a19196.zip', 'fname': 'kobart_base_cased_b2a7a19196.zip', 'chksum': 'b2a7a19196' }

    위에 설정되어 있는 url 에서 모델 다운로드가 정상적으로 완료되지 않는 것 같습니다. 그래서 checksum 오류가 발생합니다.

    opened by RossSong 2
  • 안녕하세요 에러 발생하는 부분이 있었어서 글을 남깁니다

    안녕하세요 에러 발생하는 부분이 있었어서 글을 남깁니다

    우선 사용할 수 있게 만들어주셔서 감사하다는 말씀을 드립니다 버전 문제일지 모르겠습니다만 cuda 사용 때문에 requirements에서 torch만 1.8.2+cuda111로 바꿔깔았었습니다 이후 실행시 에러가 발생하더군요 runtimeerror: expected object of scalar type long but got scalar type int for argument 그래서 에러 최하단에서 발생한 파일경로에 접근했고 kobart > lib > site-packages > torch > nn > functional.py 2429, 2432 line에 있는 target에 target.long()으로 타입 변환을 하였더니 현재 정상 작동하고 있습니다 혹시 같은 오류 나시는 분 같이 확인하시면 좋을 듯 합니다 감사합니다

    opened by dlfrnaos19 1
  • decoder_input_ids의 첫번째 토큰이 pad인 이유가 궁금합니다.

    decoder_input_ids의 첫번째 토큰이 pad인 이유가 궁금합니다.

    안녕하세요. 정말 보기 쉽게 repo를 작성해주신 덕분에 이해가 잘 되는것 같습니다.

    궁금한 부분이 있어 이슈 남깁니다.

    dataset.py에서 48 line 중 pad_token이 제일 앞에 들어가는 것으로 보이는데 BART paper를 보면 <s> 심볼이 decoder_input_ids 의 처음 토큰으로 들어가는 것으로 알고있습니다. pad token이 아닌 bos token 이어야 하는게 아닌가요?

    opened by JeongMyeong 1
  • inference output file 과 관련하여 질문드립니다.

    inference output file 과 관련하여 질문드립니다.

    안녕하세요? 혹시 inference 후 output을 streamlit demo 가 아닌 csv 파일 형태로도 생성할 수 있을까요? 생성할 수 있다면 어떤 부분을 어떻게 고쳐야 할지 조언 부탁드리고 싶습니다. 좋은 코드 공유해주신 덕분에 조금 더 수월하게 공부하고 있습니다! 감사합니다!

    opened by Hhaari 1
  • model binary 질문

    model binary 질문

    안녕하세요 요약task가 처음인 학생입니다. model binary 추출 작업에서 hparams(./logs/tb_logs/default/version_0/hparams.yaml) 파일과 model_binary(ckpt) 파일의 차이점을 잘 모르겠습니다.. 둘다 다른 버전을 사용해서 모델을 써도 되는 것일까요?

    opened by Juhyun730 1
  • input, output 문장길이 조정

    input, output 문장길이 조정

    안녕하세요, 만들어주신 패키지 재밌게 만져보고 있는데요,
    블로그들 크롤링해서 요약해보며 놀다가 몇가지 궁금한 점이 있어서 문의드립니다.

    1. input 문장의 길이제한
    # define summarize function
    def summarize(text):
        raw_input_ids = tokenizer.encode(text)
        input_ids = [tokenizer.bos_token_id] + raw_input_ids + [tokenizer.eos_token_id]
    
        summary_ids = model.generate(torch.tensor([input_ids]),  num_beams=4,  max_length=512,  eos_token_id=1)
        result = tokenizer.decode(summary_ids.squeeze().tolist(), skip_special_tokens=True)
        return result
    
    # read csv
    df = pd.read_csv('textlist.csv', encoding='ANSI')
    text = df.text[0]
    
    
    # 정상작동
    >>> summarize(text[:1998])  # text[:1998] = "(생략...) 했으나 맛은 괜찮었어요 평범했던 그린"
    '백운호수점 분당에서는 20 25분정도 밖에 안 걸리는 곳이라 나들이삼아 기분전환하러 가기 좋은 곳인 것 같아요.'
    
    # Traceback
    >>> summarize(text[:1999])  # text[:1999] = "(생략...) 으나 맛은 괜찮었어요 평범했던 그린샐"
    >>> summarize(text[:2001])  # text[:2001] = "(생략...)  맛은 괜찮었어요 평범했던 그린샐러드"
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 4, in summarize
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\torch\autograd\grad_mode.py", line 28, in decorate_context
        return func(*args, **kwargs)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\transformers\generation_utils.py", line 927, in generate
        model_kwargs = self._prepare_encoder_decoder_kwargs_for_generation(input_ids, model_kwargs)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\transformers\generation_utils.py", line 412, in _prepare_encoder_decoder_kwargs_for_generation 
        model_kwargs["encoder_outputs"]: ModelOutput = encoder(input_ids, return_dict=True, **encoder_kwargs)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\torch\nn\modules\module.py", line 1102, in _call_impl
        return forward_call(*input, **kwargs)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\transformers\models\bart\modeling_bart.py", line 752, in forward
        embed_pos = self.embed_positions(input_shape)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\torch\nn\modules\module.py", line 1102, in _call_impl
        return forward_call(*input, **kwargs)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\transformers\models\bart\modeling_bart.py", line 124, in forward
        return super().forward(positions + self.offset)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\torch\nn\modules\sparse.py", line 160, in forward
        self.norm_type, self.scale_grad_by_freq, self.sparse)
      File "C:\Users\Newrun\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\torch\nn\functional.py", line 2044, in embedding
        return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)
    IndexError: index out of range in self
    

    글자 길이 1998까지는 잘 들어가는데 길이가 1999 이상인 경우 out of range가 나타났습니다. 더 긴 문장을 넣고 싶을 경우에는 어떻게 수정하면 될지 조언을 구하고 싶습니다.

    1. output 문장길이의 제한 위의 예시는 꽤 깔끔한 한 문장으로 요약이 되었지만, 그렇지 않은 경우들도 있었습니다.
    text = df.text[2]
    
    >>> summarize(text[:500])
    '엄마 생신 평일이기도 했고 엄마 생일인데 엄마가 상차리는 것도 웃기기도 하고 내가 먼저 새언니에게 여자들끼리 맛있는거 먹으러 가자 제안 새언니가 자기도 그 생각했다면서 ᄒᄒ 그렇게 한달 전부터 계획된 온나카이 장소 검색하다가선희가 올라 백운호수
    점에 갔다가 찍은 사진을 올렸서 급 생각해낸 올라 한 4 5년 전 어느날 선희가 밥먹자 하고 부른 곳이였는데 나는 얼떨결에 갔다가 제일 비싼 코스요리 얻어먹고 왔다 아무생각없이 얻어먹고와서 좋았던 기억만 있었는데 분위기가 꽤 좋았어서 _ 엄마 생신 장 
    소도 여기로 정했다 일단 예약하고 나서 검색검색검색 후기가 반반 나뉘는데 급 걱정 가격대비 별로면 어쩌남 좋은날인데 맛없으면 어쩌남 결론부터 말하면 나는 너무 맛있었다                                   직원들이 불친절하다는 글을 많이 봤는데 사 
    실 나는 딱 이정도가 좋다 2층홀 내부가 작은 편인데너무 쳐다보거나 말을 많이 붙히면 더 불편하고 싫었을 것 같다 계산해주시는분도 그냥 적정선을 지켜 일하고 계시는 느낌이지 딱딱선을 지켜 일하고 계시는 느낌이지 딱딱선을 지켜 일하고 계시는 느낌이지
     딱정도가 좋다 2층홀 내부가 작은 편인데 2층홀 내부가 작은 편인데너무 쳐다보거나 말을 많이 붙히면 더 불편하고 싫었을 것 같다 계산해주시는분도 그냥 적정선을 지켜 일하고 계시는 느낌이지 딱딱선을 지켜 일하고 계시는 느낌이지 딱딱선을 지켜 일하고 
    계시는 느낌이지 딱딱선을 지켜 일하고 계시는 느낌이지 딱딱선을 지켜 일하고 계시는 느낌이지 딱딱선을 지켜 일하고 계시는 느낌이지 딱딱선을 지켜 일하고 계시는 느낌이지 딱정도가 좋다 2층홀 내부가 작은 편인데 직원들이 불친절하다는 글을 많이 봤는데
     사실 나는 딱 이정도가 좋다 2층홀 내부가 작은 편인데너무 쳐다보거나 말을 많이 붙히면 더 불편하고 싫었을 것 같다 계산해주시는분도 그냥 적정선을 지켜 일하고 계시는 느낌이다 계산해주시는분도 그냥 적정선을 지켜 일하고 계시는 느낌이다 계산해주시 
    는분도 그냥 적정선을 지켜 일하고 계시는 느낌이지 딱정도가 좋다 2층홀 내부가 작은 편인데 1층홀 내부가 작은 편인데너무 쳐다보거나 말을 많이 붙히면 더 불편하고 싫었을 것 같다 계산해주시는분도'
    
    # len(summarize(text[:500])) = 1086
    

    위의 경우는 오히려 글자가 늘어났는데요,

    summary_ids = model.generate(torch.tensor([input_ids]),  num_beams=4,  max_length=512,  eos_token_id=1)
    

    에서 max_length를 200, 100으로 줄일 경우 요약문장 길이도 어느정도 줄어들기는 하였으나 여전히 300~500자 정도 되었습니다.

    어떻게 하면 좀 더 합리적으로 짧은 문장을 만들게 할 수 있을까요?

    감사합니다.

    opened by BrainNim 2
  • train 과정에서 에러 발생

    train 과정에서 에러 발생

    File "/content/drive/MyDrive/bart/train.py", line 230, in trainer.fit(model, dm) File "/usr/local/lib/python3.7/dist-packages/pytorch_lightning/trainer/trainer.py", line 460, in fit self._run(model) File "/usr/local/lib/python3.7/dist-packages/pytorch_lightning/trainer/trainer.py", line 758, in _run self.dispatch() File "/usr/local/lib/python3.7/dist-packages/pytorch_lightning/trainer/trainer.py", line 799, in dispatch self.accelerator.start_training(self) File "/usr/local/lib/python3.7/dist-packages/pytorch_lightning/accelerators/accelerator.py", line 96, in start_training self.training_type_plugin.start_training(trainer) File "/usr/local/lib/python3.7/dist-packages/pytorch_lightning/plugins/training_type/training_type_plugin.py", line 144, in start_training self._results = trainer.run_stage() File "/usr/local/lib/python3.7/dist-packages/pytorch_lightning/trainer/trainer.py", line 809, in run_stage return self.run_train() File "/usr/local/lib/python3.7/dist-packages/pytorch_lightning/trainer/trainer.py", line 871, in run_train self.train_loop.run_training_epoch() File "/usr/local/lib/python3.7/dist-packages/pytorch_lightning/trainer/training_loop.py", line 491, in run_training_epoch for batch_idx, (batch, is_last_batch) in train_dataloader: File "/usr/local/lib/python3.7/dist-packages/pytorch_lightning/profiler/profilers.py", line 112, in profile_iterable value = next(iterator) File "/usr/local/lib/python3.7/dist-packages/pytorch_lightning/trainer/supporters.py", line 534, in prefetch_iterator for val in it: File "/usr/local/lib/python3.7/dist-packages/pytorch_lightning/trainer/supporters.py", line 464, in next return self.request_next_batch(self.loader_iters) File "/usr/local/lib/python3.7/dist-packages/pytorch_lightning/trainer/supporters.py", line 478, in request_next_batch return apply_to_collection(loader_iters, Iterator, next) File "/usr/local/lib/python3.7/dist-packages/pytorch_lightning/utilities/apply_func.py", line 85, in apply_to_collection return function(data, *args, **kwargs) File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/dataloader.py", line 521, in next data = self._next_data() File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/dataloader.py", line 1203, in _next_data return self._process_data(data) File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/dataloader.py", line 1229, in _process_data data.reraise() File "/usr/local/lib/python3.7/dist-packages/torch/_utils.py", line 434, in reraise raise exception TypeError: Caught TypeError in DataLoader worker process 0. Original Traceback (most recent call last): File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/worker.py", line 287, in _worker_loop data = fetcher.fetch(index) File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/fetch.py", line 49, in fetch data = [self.dataset[idx] for idx in possibly_batched_index] File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/fetch.py", line 49, in data = [self.dataset[idx] for idx in possibly_batched_index] File "/content/drive/MyDrive/bart/dataset.py", line 46, in getitem label_ids = self.tok.encode(instance['summary']) File "/usr/local/lib/python3.7/dist-packages/transformers/tokenization_utils_base.py", line 2235, in encode **kwargs, File "/usr/local/lib/python3.7/dist-packages/transformers/tokenization_utils_base.py", line 2574, in encode_plus **kwargs, File "/usr/local/lib/python3.7/dist-packages/transformers/tokenization_utils_fast.py", line 516, in _encode_plus **kwargs, File "/usr/local/lib/python3.7/dist-packages/transformers/tokenization_utils_fast.py", line 429, in _batch_encode_plus is_pretokenized=is_split_into_words, TypeError: TextEncodeInput must be Union[TextInputSequence, Tuple[InputSequence, InputSequence]]

    AI Hub에서 제공하는 신문기사 뿐만 아니라 기고문 잡지기사 법원 판결문 모두 훈련에 사용하기 위해서 모두 합치고 포맷을 동일하게 맞춰 tsv 파일로 저장하여 적용했는데 이런 에러가 계속해서 발생합니다.

    제 데이터의 문제인건지 아니면 코드 문제인건지 궁금합니다.

    현재 코랩 프로 플러스로 진행하고 있습니다.

    opened by jamani135 1
Owner
seujung hwan, Jung
seujung hwan, Jung
KoBART model on huggingface transformers

KoBART-Transformers SKT에서 공개한 KoBART를 편리하게 사용할 수 있게 transformers로 포팅하였습니다. Install (Optional) BartModel과 PreTrainedTokenizerFast를 이용하면 설치하실 필요 없습니다. p

Hyunwoong Ko 58 Dec 7, 2022
Module for automatic summarization of text documents and HTML pages.

Automatic text summarizer Simple library and command line utility for extracting summary from HTML pages or plain texts. The package also contains sim

Mišo Belica 3k Jan 8, 2023
Module for automatic summarization of text documents and HTML pages.

Automatic text summarizer Simple library and command line utility for extracting summary from HTML pages or plain texts. The package also contains sim

Mišo Belica 2.5k Feb 17, 2021
Python implementation of TextRank for phrase extraction and summarization of text documents

PyTextRank PyTextRank is a Python implementation of TextRank as a spaCy pipeline extension, used to: extract the top-ranked phrases from text document

derwen.ai 1.9k Jan 6, 2023
An Analysis Toolkit for Natural Language Generation (Translation, Captioning, Summarization, etc.)

VizSeq is a Python toolkit for visual analysis on text generation tasks like machine translation, summarization, image captioning, speech translation

Facebook Research 409 Oct 28, 2022
Summarization, translation, sentiment-analysis, text-generation and more at blazing speed using a T5 version implemented in ONNX.

Summarization, translation, Q&A, text generation and more at blazing speed using a T5 version implemented in ONNX. This package is still in alpha stag

Abel 211 Dec 28, 2022
Python implementation of TextRank for phrase extraction and summarization of text documents

PyTextRank PyTextRank is a Python implementation of TextRank as a spaCy pipeline extension, used to: extract the top-ranked phrases from text document

derwen.ai 1.4k Feb 17, 2021
An Analysis Toolkit for Natural Language Generation (Translation, Captioning, Summarization, etc.)

VizSeq is a Python toolkit for visual analysis on text generation tasks like machine translation, summarization, image captioning, speech translation

Facebook Research 310 Feb 1, 2021
Summarization, translation, sentiment-analysis, text-generation and more at blazing speed using a T5 version implemented in ONNX.

Summarization, translation, Q&A, text generation and more at blazing speed using a T5 version implemented in ONNX. This package is still in alpha stag

Abel 137 Feb 1, 2021
Package for controllable summarization

summarizers summarizers is package for controllable summarization based CTRLsum. currently, we only supports English. It doesn't work in other languag

Hyunwoong Ko 72 Dec 7, 2022
The guide to tackle with the Text Summarization

The guide to tackle with the Text Summarization

Takahiro Kubo 1.2k Dec 30, 2022
FactSumm: Factual Consistency Scorer for Abstractive Summarization

FactSumm: Factual Consistency Scorer for Abstractive Summarization FactSumm is a toolkit that scores Factualy Consistency for Abstract Summarization W

devfon 83 Jan 9, 2023
code for modular summarization work published in ACL2021 by Krishna et al

This repository contains the code for running modular summarization pipelines as described in the publication Krishna K, Khosla K, Bigham J, Lipton ZC

Approximately Correct Machine Intelligence (ACMI) Lab 21 Nov 24, 2022
code for modular summarization work published in ACL2021 by Krishna et al

This repository contains the code for running modular summarization pipelines as described in the publication Krishna K, Khosla K, Bigham J, Lipton ZC

Kundan Krishna 6 Jun 4, 2021
null 189 Jan 2, 2023
Codes for processing meeting summarization datasets AMI and ICSI.

Meeting Summarization Dataset Meeting plays an essential part in our daily life, which allows us to share information and collaborate with others. Wit

xcfeng 39 Dec 14, 2022
SummerTime - Text Summarization Toolkit for Non-experts

A library to help users choose appropriate summarization tools based on their specific tasks or needs. Includes models, evaluation metrics, and datasets.

Yale-LILY 213 Jan 4, 2023
Korean extractive summarization. 2021 AI 텍스트 요약 온라인 해커톤 화성갈끄니까팀 코드

korean extractive summarization 2021 AI 텍스트 요약 온라인 해커톤 화성갈끄니까팀 코드 Leaderboard Notice Text Summarization with Pretrained Encoders에 나오는 bertsumext모델(ext

null 3 Aug 10, 2022
Deploying a Text Summarization NLP use case on Docker Container Utilizing Nvidia GPU

GPU Docker NLP Application Deployment Deploying a Text Summarization NLP use case on Docker Container Utilizing Nvidia GPU, to setup the enviroment on

Ritesh Yadav 9 Oct 14, 2022