Huggingface Transformers를 사용하여 10 행으로 Momotaro의 연속 생성

운영 환경


  • Google Colaboratory
  • Huggingface Transformers 2.5.1
  • Pytorch 1.5.0

  • 구현 내용


  • 「모모타로」에서 할머니가 복숭아를 나눈 곳까지의 문장을 입력해, 그 계속을 일본어판 BERT에 예측시킨다.

  • 소스 코드



    generate_en_sentence.ipynb
    !pip install torch  torchvision -f https://download.pytorch.org/whl/torch_stable.html
    !pip install transformers
    !pip install fugashi
    !pip install ipadic
    import torch
    from transformers import AutoModelWithLMHead, AutoTokenizer
    
    tokenizer = AutoTokenizer.from_pretrained("cl-tohoku/bert-base-japanese-whole-word-masking") 
    model = AutoModelWithLMHead.from_pretrained("cl-tohoku/bert-base-japanese-whole-word-masking")
    
    prompt = "昔々、あるところにおじいさんとおばあさんが住んでいました。おじいさんは山へ芝刈りに、おばあさんは川で洗濯にいきました。おばあさんが川で洗濯をしていると、大きな桃が流れてきました。おばあさんは大きな桃を拾いあげて家に持ち帰りました。そしておじいさんとおばあさんが桃を食べようと桃を切ってみると、"
    
    inputs = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
    prompt_length = len(tokenizer.decode(inputs[0], skip_special_tokens=True, clean_up_tokenization_spaces=True))
    outputs = model.generate(inputs, max_length=150, do_sample=True, top_k=60, top_p=0.98)
    generated = tokenizer.decode(outputs[0])[prompt_length:].replace(" ", "")
    
    print(prompt + generated)
    

    생성된 문장은 이렇게 되었습니다.

    옛날에는 어느 곳에 할아버지와 할머니가 살았습니다. 할아버지는 산에 잔디 깎기에, 할머니는 강에서 세탁에 갔습니다. 할머니가 강에서 세탁을 하고 있으면 큰 복숭아가 흘러 왔습니다. 할머니는 큰 복숭아를 주워 집에 가져갔습니다. 그리고 할아버지와 할머니가 복숭아를 먹으려고 복숭아를 잘라 보면 우연히 다시 이 복숭아가 내려온다. 그러자 복숭아가 내려온다. 그러면 다시 복숭아가 깨진다. 그러면 복숭아가 깨지기 때문에 다시 한번 조금씩 균열을 계속한다. 그러자 할머니가 말한다.

    엄청 호러 전개가 되어 버렸습니다.

    요약



    잘 생성할 수 있었다고는 말하기 어렵지만, 실질 몇 줄로 문장 생성이 되어 버렸습니다.
    아직 공부 부족이므로, 이 몇 줄의 내용을 이해하기까지는 시간이 걸릴 것 같습니다
    여기까지 읽어 주셔서 감사합니다.

    참고 링크



    Huggingface Transformers 입문 (1)

    좋은 웹페이지 즐겨찾기