<jupyter_start><jupyter_text>PyTorch-TransformersBERTの実装へ向けて、自然言語処理ライブラリPyTorch-Transformersを学びます。  PyTorch-Transformersは以下の基本クラスを中心に構成されます。* BertModel* BertConfig* BertTokenizer  ライブラリのインストールPyTorch-Transformers、および必要なライブラリのインストールを行います。<jupyter_code>!pip install folium==0.2.1
!pip install urllib3==1.25.11
!pip install pytorch-transformers==1.2.0<jupyter_output><empty_output><jupyter_text>PyTorch-TransformersのモデルPyTorch-Transformersには、様々な訓練済みのモデルを扱うクラスが用意されています。  以下のコードでは、文章の一部をMaskする問題、`BertForMaskedLM`のモデルを設定します。  https://huggingface.co/transformers/model_doc/bert.htmlbertformaskedlm    BertForMaskedLMはベースとなるモデル、`PreTrainedModel`を継承しています。  https://huggingface.co/transformers/main_classes/model.htmltransformers.PreTrainedModel    また、`BertForMaskedLM`は`nn.Module `クラスを継承しているので、通常のPyTorchのモデルとして使用することができます。<jupyter_code>import torch
from pytorch_transformers import BertForMaskedLM

msk_model = BertForMaskedLM.from_pretrained('bert-base-uncased')  # 訓練済みパラメータの読み込み
print(msk_model)<jupyter_output><empty_output><jupyter_text>最終的に、単語の数である30522クラスに分類する問題であることが分かります。  同様に、文章を分類する問題、`BertForSequenceClassification`のモデルを設定します。  https://huggingface.co/transformers/model_doc/bert.**html**bertforsequenceclassification<jupyter_code>from pytorch_transformers import BertForSequenceClassification

sc_model = BertForSequenceClassification.from_pretrained('bert-base-uncased')  # 訓練済みパラメータの読み込み
print(sc_model)<jupyter_output><empty_output><jupyter_text>`out_features=2`なので、文章を2クラスに分類する問題であることが分かります。  BERTの設定`BertConfig`クラスを使って、モデルの設定を行うことができます。<jupyter_code>from pytorch_transformers import BertConfig

config = BertConfig.from_pretrained("bert-base-uncased")
print(config)<jupyter_output><empty_output><jupyter_text>Tokenizer`BertTokenizer`クラスを使って、訓練済みのデータに基づく形態素解析を行うことができます。<jupyter_code>from pytorch_transformers import BertTokenizer

text = "I have a pen. I have an apple."

tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
words = tokenizer.tokenize(text)
print(words)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.09446092977250248, 'fraction_numerical': 0.009396636993076163, 'mean_word_length': 13.246478873239436, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 21, 'https://': 3, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '116971', 'license': 'MIT', 'n_tokens_mistral': 1018, 'n_tokens_neox': 953, 'n_words': 62, 'path': 'section_2/02_pytorch_transformers.ipynb', 'repo_name': 'kazu-crypto/bert_nlp', 'size': '2022'}