일본어 BERT 설치 시험

5838 단어 NLPPythonbert
오늘은 이전에 자신이 가입한 자연 언어 처리 프로젝트에 사용된 BERT를 사용해 보겠습니다.필요한 라이브러리 등의 설치에서 일본어 버전에서 사전 학습이 끝난 모델을 읽어들여 Masked Language 모델을 사용해 보려고 합니다.

필요한 라이브러리 설치


transformers


이번에 허핑페이스로 제작한 페이투어 버전 BERT(Google이 GiitHub에서 공개한 텐소플로우 버전을 개인적으로 사용하는 것이 익숙하기 때문).
$ pip install transformers

PyTorch(CPU용)


위에서 말한 바와 같이 이번에는 PyTorch 버전을 사용하려면 PyTorch 자체를 설치해야 한다.PyTorch를 설치할 때는 이 웹 사이트를 참조하여 설치하십시오.방법은 간단하다. 자신이 사용하고 싶은 환경을 선택하면 설치 명령이 표시된다.

표시된 대로 명령을 실행합니다.또 이번에는 GPU를 사용하지 않고 CPU용 PyTorch(CUPDA=None)를 장착했다.만약 맥OS로 GPU용 물건을 사용한다면 약간의 복잡한 작업이 필요하지만, 이번에는 나를 사랑하게 해주세요(아마 대부분의 맥OS에는 CUDA가 없을 거예요...).
pip install torch torchvision torchaudio

기타


일본어 버전 BERT의 형태소 해석용 라이브러리 등을 미리 설치합니다.
pip install fugashi ipadic

일본어 사전 학습 모드 다운로드


이쪽에 있는 지아이허브가 공개됐기 때문에 다운로드해 임의의 디렉터리에 놓고 파일을 펼친다.이번에 다운로드BERT-base_mecab-ipadic-bpe-32k.tar.xz했습니다.

형태소 분석


우선 Bert Japannese Tokenizer를 사용해 보세요.path의 일본어 버전에 다운로드하여 미리 배운 모델의 폴더를 지정할 수 있습니다.형태소 분석 후 토큰이 id로 변환된 것을 확인합니다.이번에는 토큰니즈와 스페셜 토큰의 설명이 최대한 생략됩니다. (길어지기 때문입니다.)그리고 부기에서 이것들에 대해 설명하고 싶습니다.
from transformers import BertJapaneseTokenizer
path = './BERT-base_mecab-ipadic-bpe-32k'
tokenizer = BertJapaneseTokenizer.from_pretrained(path, word_tokenizer_type='mecab')
tokenizer.encode(text='東京五輪で野球を観戦する。', add_special_tokens=False)
# [391, 8111, 12, 1201, 11, 14847, 34, 8]

Masked Language Model


일본어 버전에서 사전 학습이 완료된 모델을 읽어 넣고 Masked Language Model을 시도해 봅니다.먼저 값과 모델을 입력할 준비를 합니다.이번에는 [MASK]의 부분을 예측해 보겠습니다.

import torch
from transformers import BertForMaskedLM
path = './BERT-base_mecab-ipadic-bpe-32k' # 先ほどと同じ

model = BertForMaskedLM.from_pretrained(path)

input_ids = tokenizer.encode(text='東京五輪で[MASK]を観戦する。', add_special_tokens=False)
input_ids_tensor = torch.tensor([input_ids])
모델에 입력값을 입력하고 예측 결과 상위 5위를 출력해 보세요.

with torch.no_grad():
    outs = model(input_ids_tensor)
    predictions = outs[0][0, 3].topk(5) # 3はMASKトークンの位置(id=4)

for i, v in enumerate(predictions.indices, 1):
    index = v.item()
    token = tokenizer.convert_ids_to_tokens([index])[0]
    print(i, token)

# 1 野球
# 2 サッカー
# 3 バスケットボール
# 4 スポーツ
# 5 ラグビー
이번에 일본어판 BERT를 도입해서 시동을 걸었다.다음에 일본어 BERT 버전을 세밀하게 조정할 수 있다면 사용법을 설명해 주셨으면 좋겠습니다.

좋은 웹페이지 즐겨찾기