Skip to content

Commit 04c4f2d

Browse files
authored
Add README_JP.md and a link to it (#21)
* Add README in Japanese Dear author, I have translated the README into Japanese and created README_JP.md. I hope you could consider adding this to the repository. * Update README_JP.md * Update README.md * Update README.md
1 parent a317dca commit 04c4f2d

File tree

2 files changed

+100
-0
lines changed

2 files changed

+100
-0
lines changed

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
This repository implements deep learning transformer models in MATLAB.
55

6+
日本語のREADMEは[こちら](https://github.com/matlab-deep-learning/transformer-models/blob/master/README_JP.md)
7+
68
## Requirements
79
### BERT and FinBERT
810
- MATLAB R2021a or later

README_JP.md

+98
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
# MATLABのためのトランスフォーマーモデル
2+
[![CircleCI](https://img.shields.io/circleci/build/github/matlab-deep-learning/transformer-models?label=tests)](https://app.circleci.com/pipelines/github/matlab-deep-learning/transformer-models)
3+
4+
*README in English is [here](https://github.com/matlab-deep-learning/transformer-models/blob/master/README.md)
5+
6+
このリポジトリは、MATLABで深層学習トランスフォーマーモデルを実装するための関数や例題が含まれています。なお、BERT、finBERT、GPT-2は、基本的には、BERTの"multilingual-cased"を除き英語の文書を用いて学習されており、入力値も英語であることが想定されています。
7+
8+
9+
## 要件
10+
### BERT・FinBERT
11+
- MATLABバージョン R2021a以降
12+
- Deep Learning Toolbox
13+
- Text Analytics Toolbox
14+
15+
### GPT-2
16+
- MATLABバージョン R2020a以降
17+
- Deep Learning Toolbox
18+
19+
## はじめに
20+
このリポジトリをダウンロードするか、お手元のマシンに[クローン](https://www.mathworks.com/help/matlab/matlab_prog/use-source-control-with-projects.html#mw_4cc18625-9e78-4586-9cc4-66e191ae1c2c)してMATLABで開きます。
21+
22+
## 関数の説明
23+
### bert
24+
`mdl = bert` により、学習済みBERTトランスフォーマーモデルが読み込まれます。初回実行時などは、必要に応じてモデルの重みもダウンロードされますので時間がかかります。出力値 `mdl` は、BERT用トークナイザ― `Tokenizer` と、モデルパラメータ `Parameters` を含む構造体です。
25+
26+
`mdl = bert("Model",modelName)` により、使用するBERTモデルの種類を指定します。:
27+
28+
- `"base"` (既定値) - 12-layer、768-hidden
29+
- `"multilingual-cased"` - 12-layer、768-hidden。トークナイザーでは大文字と小文字が区別されます。このモデルは、多言語データで学習されています。
30+
- `"medium"` - 8-layer、512-hidden
31+
- `"small"` - 4-layer、512-hidden
32+
- `"mini"` - 4-layer、256-hidden
33+
- `"tiny"` - 2-layer、128-hidden
34+
35+
### bert.model
36+
`Z = bert.model(X,parameters)` は、指定されたパラメータを持つ符号化トークンの入力 `1`-by-`numInputTokens`-by-`numObservations` 配列上で BERT モデルによる推論を実行します。 出力 `Z` は、サイズ (`NumHeads*HeadSize`)-by-`numInputTokens`-by-`numObservations` の 配列です。要素 `Z(:,i,j)` は、入力トークン `X(1,i,j)` のBERT埋め込みに相当します。
37+
38+
`Z = bert.model(X,parameters,Name,Value)` は、1 つ以上の名前と値のペアの引数で指定された追加オプションを設定します。:
39+
40+
- `"PaddingCode"` パディングトークンに対応する正の整数。デフォルトは `1` です。
41+
- `"InputMask"` - `X` と同じサイズの論理配列,あるいは空の配列として指定します.このマスクは,パディングに対応するインデックス位置では偽でなければならず,それ以外の場所では真でなければならない.マスクが `[]` である場合,関数は PaddingCode の名前と値の組にしたがってパディングを決定します.デフォルトは `[]` です.
42+
- `"DropoutProb"` - 出力活性化に対するドロップアウトの確率。デフォルトは `0` です。
43+
- `"AttentionDropoutProb"` - アテンション層で利用されるドロップアウトの確率。デフォルトは `0` です。
44+
- `"Outputs"` - 出力を返すレイヤーのインデックス、正の整数のベクトル、または `"last"` として指定されます。`"Outputs"``"last"` の場合、この関数は最後のエンコーダ層からの出力のみを返します。デフォルトはが `"last"` です。
45+
- `"SeparatorCode"` - 正の整数で指定されるセパレータトークン。デフォルトは `103` です。
46+
47+
### finbert
48+
`mdl = finbert` は、金融テキストのセンチメント(感情)分析のために、事前に学習されたBERTトランスフォーマーモデルを読み込みます。出力される `mdl` は、フィールド `Tokenizer``Parameters` を持つ構造体で、それぞれ BERTトークナイザーとモデルパラメータを含んでいます。
49+
50+
`mdl = finbert("Model",modelName)` にて、使用するFinBERTモデルの種類を指定します。:
51+
- `"sentiment-model"` (既定値) - ファインチューニングされたセンチメント分類モデル。
52+
- `"language-model"` - BERT-Base アーキテクチャを使用する、FinBERT で事前学習された言語モデル。
53+
54+
### finbert.sentimentModel
55+
`sentiment = finbert.sentimentModel(X,parameters)` は、入力 `1`-by-`numInputTokens`-by-`numObservations` の各トークンを、指定されたパラメータで分類します。出力されるセンチメントは、カテゴリ `"positive"`, `"neutral"`, または `"negative"` からなるカテゴリ配列である。
56+
`[sentiment, scores] = finbert.sentimentModel(X,parameters)` は、対応するセンチメントスコアを `[-1 1]` の範囲で返すこともできます。
57+
58+
### gpt2
59+
`mdl = gpt2` は学習済み GPT-2 トランスフォーマーモデルを読み込み、初回実行時など、必要であればモデルの重みをダウンロードします。
60+
61+
### generateSummary
62+
`summary = generateSummary(mdl,text)` は、トランスフォーマーモデル `mdl` を用いて、文字列または `char` 配列 `text` の要約を生成します。出力される要約は char 配列である。
63+
64+
`summary = generateSummary(mdl,text,Name,Value)` は、1 つ以上の名前と値のペアの引数で指定された追加オプションを設定します。:
65+
66+
* `"MaxSummaryLength"` - 生成されるサマリーのトークン数の最大値です。デフォルトは50です。
67+
* `"TopK"` - 要約を生成する際にサンプリングするトークンの数です。デフォルトは 2 です。
68+
* `"Temperature"` - GPT-2出力確率分布に適用される温度。デフォルトは1です。
69+
* `"StopCharacter"` - 要約が完了したことを示す文字。デフォルトは `"."` です。
70+
71+
## 例題:BERTによるテキスト分類
72+
事前学習済みBERTモデルの最も単純な使用方法は、特徴抽出器として使用することです。BERT モデルにより文書を特徴ベクトルに変換し、それを入力として使用して、深層学習分類ネットワークを学習することができます。
73+
74+
例題 [`ClassifyTextDataUsingBERT.m`](./ClassifyTextDataUsingBERT.m) では、工場レポートのデータセットを与えられた故障原因を分類するために事前学習済み BERT モデルを使用する方法を示しています。
75+
76+
## 例題:学習済みBERTモデルのファイン チューニング
77+
事前学習済みBERT モデルを最大限に活用するために、タスクに応じた BERT パラメータの重みを再学習し、微調整することが可能です。(=ファインチューニング)
78+
79+
例題 [`FineTuneBERT.m`](./FineTuneBERT.m) では、工場レポートのデータセットが与えられたときに、故障原因を分類するために事前学習済みの BERT モデルを微調整する方法を示しています。
80+
81+
## 例題:FinBERTによる感情分析
82+
FinBERTは、金融テキストデータで学習し、センチメント分析用にファインチューニングされたセンチメント分析モデルです。
83+
84+
例題 [`SentimentAnalysisWithFinBERT.m`](./SentimentAnalysisWithFinBERT.m) では、事前学習済み FinBERT モデルを使って、金融ニュースレポートの感情分類を行う方法を示しています。
85+
86+
## 例題:BERTおよびfinBERTによるマスク語予測
87+
BERTモデルは、様々なタスクを実行するために学習されている。BERTによって成し遂げられるタスクの一つは、マスク値([MASK]値)で置換された、テキスト中のトークンを予測するタスクです。Masked Language Modelとしても知られています。
88+
89+
例題 [`PredictMaskedTokensUsingBERT.m`](./PredictMaskedTokensUsingBERT.m) では、事前学習済み BERT モデルを使用して、マスクされたトークンを予測し、トークン確率を計算する方法を示しています。
90+
91+
例題 [`PredictMaskedTokensUsingFinBERT.m`](./PredictMaskedTokensUsingFinBERT.m) では、事前学習済み FinBERT モデルを使用して、金融テキストのマスクトークンを予測する方法と、トークン確率を計算する方法を示しています。
92+
93+
## 例題:GPT-2による文書要約
94+
GPT-2などのトランスフォーマーネットワークは、テキストの一部を要約するために使用することができます。学習済みGPT-2トランスフォーマーは、最初の単語列を入力としてテキストを生成することが可能です。このモデルは、様々なウェブページやインターネットフォーラムに残されたコメントに対して学習させたものです。
95+
96+
これらのコメントの多くには「TL;DR」(Too long, didn't read)という文で示される要約が含まれているので、変換器モデルを使って、入力テキストに「TL;DR」を付加して要約を生成することができます。関数 `generateSummary` は、入力テキストを受け取って、文字列 `"TL;DR"` を自動的に付加し、要約を生成します。
97+
98+
例題 [`SummarizeTextUsingTransformersExample.m`](./SummarizeTextUsingTransformersExample.m) では、GPT-2を用いてテキストを要約する方法を紹介しています。

0 commit comments

Comments
 (0)