🤗

【自然言語処理】BERTを使った有価証券報告書のネガポジ判定

2022/09/24に公開
3

0.はじめに

Python初心者のわたくしですが、このたび、BERTによる自然言語処理入門を読み込んで、BERTによる有価証券報告書のネガポジ判定を実装することができました。
本の内容から、初心者のわたくしなりに、こうした方が分かりやすいのではないかと、いくつかの工夫をしています。きっと、あまたの初心者の方にとっても、ネガポジ判定の入門としては、こちらの方が分かりやすいのではないかと自負しています。
 
https://www.ohmsha.co.jp/book/9784274227264/
 

 

1. 必要なライブラリーのインストール&インポート

BERTはHuggingface社が提供しているTransformersで実装されていますので、transformersのインストールが必要になります。
その他、GoogleColaboratoryにインストールされていないライブラリーをインストールしていきます。

#ライブラリーのインストール
!pip install transformers==4.20.0 fugashi==1.1.0 ipadic==1.0.0 pytorch-lightning==1.6.1
#ライブラリーのインポート
import random
import glob
import json
from tqdm import tqdm
import torch
from torch.utils.data import DataLoader
from transformers import BertJapaneseTokenizer, BertForSequenceClassification
import pytorch_lightning as pl

 

2. モデルの準備

2.1 トークナイザ

文章をトークンに分割し、BERTに入力できる形に変換するためのモデルです。

MODEL_NAME = 'cl-tohoku/bert-base-japanese-whole-word-masking'
tokenizer = BertJapaneseTokenizer.from_pretrained(MODEL_NAME)

2.2 BERTの分類モデル

BERTに入力されたトークンのデータから、それぞれのトークンに対応するベクトルを出力するモデルです。
transformersには文章分類のためのクラスBertForSequenceClassificationが提供されており、これを用いて文章分類を行います。

カテゴリー ラベル
ポジティブ 1
ネガティブ 0
bert_sc = BertForSequenceClassification.from_pretrained(MODEL_NAME,num_labels=2)
bert_sc = bert_sc.cuda()

 

3. データセットの準備

上場企業の有価証券報告書を用いて作成されたネガポジ判定のデータセットchABSA-datasetを用いて、BERTをファインチューニングしていきます。
データセットの準備の仕方は以下のサイトを参考にしてください。
 
https://zenn.dev/robes/articles/a7ba6e172f3a14
 

4. データローダの作成

データセットができたら、pytorchを使ってファインチューニングしていくわけですが、そのためには、データセットを前処理し、Pytorchに入力可能な形式データローダに整えておく必要があります。
ここでは、ファインチューニングのために用意したデータセットから、データローダを作成していく方法を解説していきます。

#各データの形式を整える
max_length =128
dataset_for_loader =[]
for sample in dataset:
    text = sample["text"]
    labels = sample["labels"]
    encoding = tokenizer(
        text,
        max_length=max_length,
        padding = "max_length",
        truncation =True
    )
    encoding["labels"] =labels
    encoding = {k:torch.tensor(v) for k, v in encoding.items()}
    dataset_for_loader.append(encoding)
 
#データセットの分割
random.shuffle(dataset_for_loader)
n = len(dataset_for_loader)
n_train = int(n*0.6)
n_val = int(n*0.2)
dataset_train = dataset_for_loader[:n_train]
dataset_val = dataset_for_loader[n_train:n_train+n_val]
dataset_test = dataset_for_loader[n_train+n_val:] # テストデータ

#データセットからデータローダを作成
dataloader_train = DataLoader(
    dataset_train,batch_size=32,shuffle=True
)
dataloader_val = DataLoader(dataset_val, batch_size=256)
dataloader_test = DataLoader(dataset_test, batch_size=256)

 

5. Pytorchによるファインチューニング

これまでに作成してきた学習用データと検証データを使って、BERTをファインチューニングしていきます。

5.1 クラスの作成

まずは、ファインチューニング用のクラスを作ります。

class BertForSequenceClassification_pl(pl.LightningModule):

    def __init__(self, model_name, num_labels, lr):
        super().__init__()
        self.save_hyperparameters()

        #BERTのロード
        self.bert_sc = BertForSequenceClassification.from_pretrained(
            model_name,
            num_labels=num_labels
            )
    
    def training_step(self,batch,batch_idx):
        output = self.bert_sc(**batch)
        loss = output.loss
        self.log('train_loss',loss)
        return loss
    
    def validation_step(self,batch,batch_idx):
        output = self.bert_sc(**batch)
        val_loss = output.loss
        self.log('val_loss',val_loss)
        return val_loss
    
    def test_step(self,batch,batch_idx):
        labels = batch.pop('labels')
        output = self.bert_sc(**batch)
        labels_predicted = output.logits.argmax(-1)
        num_correct = (labels_predicted==labels).sum().item()
        accuracy = num_correct/labels.size(0)
        self.log('accuracy',accuracy)
    
    def configure_optimizers(self):
        return torch.optim.Adam(self.parameters(),lr=self.hparams.lr)
    

5.2 ファインチューニングの設定

学習時にモデルの重みを保存する条件を設定します

checkpoint = pl.callbacks.ModelCheckpoint(
    monitor ="val_loss",
    mode ="min",
    save_top_k = 1,
    save_weights_only = True,
    dirpath ="model/",
)

学習の方法を設定します

trainer = pl.Trainer(
    gpus =1 ,
    max_epochs =5,
    callbacks = [checkpoint]
)

5.3 ファインチューニングの実行

モデルをロードします

ラベル数は2にします。lrは学習率で1e-5とします。

model = BertForSequenceClassification_pl(
    MODEL_NAME,
    num_labels =2,
    lr = 1e-5
)

ファインチューニングを行います。

trainer.fit(model,dataloader_train,dataloader_val)
best_model_path = checkpoint.best_model_path
print("ベストモデルのファイル",checkpoint.best_model_path)
print("ベストモデルの損失",checkpoint.best_model_score)

出力結果

ベストモデルのファイル /content/model/epoch=2-step=159.ckpt
ベストモデルの損失 tensor(0.2043, device='cuda:0')

5.4 テストデータでの評価

test = trainer.test(model, dataloaders= dataloader_test)
test[0]["accuracy"]

出力結果

高い正解率を得ることができました。

      Test metric             DataLoader 0
──────────────────────────────────────────────────────
        accuracy            0.9166666865348816
──────────────────────────────────────────────────────

 

6. モデルの保存

"/content/bert"にベストモデルを保存します。
以下を実行すると 以下の二つのファイルが作成されます。

model = BertForSequenceClassification_pl.load_from_checkpoint(best_model_path)
model.bert_sc.save_pretrained("/content/bert")

 

7. 実データによる推論

実際の有価証券報告書のデータを使って、ネガポジ判定をしていきましょう。

7.1 テキストデータの準備

今回は、滋賀銀行の2022年3月期の有価証券報告書を使いたいと思います。
テキストデータは以下の通りです。

text = "1 【経営方針、経営環境及び対処すべき課題等】文中の将来に関する事項は、当連結会計年度末現在において、当行グループが判断したものであります。(1) 経営方針当行グループは、伝統ある近江商人の商人道徳である「三方よし(売り手よし、買い手よし、世間よし)」の精神を継承した行是「自分にきびしく 人には親切 社会につくす」をCSR(企業の社会的責任)の原点とし、CSR憲章(経営理念)に掲げた「地域社会」「役職員」「地球環境」との「共存共栄」の実践に努めることを通じて、企業価値の向上に取り組んでおります。上記の経営方針に基づき、現状認識及び目指すべき地域社会の姿としては以下のとおり考えております。①現状認識「SX(サステナビリティ・トランスフォーメーション)」新型コロナウイルス感染症の感染拡大や気候変動リスクへの対応、米中対立やウクライナ危機など世界の潮流を明らかに変え、歴史に刻まれる出来事が相次ぐなか、先行きの見通しは難しくなり、不確実性が高まっております。このような環境のなか、社会と経済のデジタル化や脱炭素社会への移行など変革の流れは一気に加速いたしました。将来の予測が困難な状況においては、ビジネスチャンスとリスクを見極めて企業を変革することが必要となります。SXとは、企業のサステナビリティと社会のサステナビリティの両立を図ることであります。経営環境が変化する中においても、企業の「稼ぐ力」を維持することが必要であり、中長期の視点で「社会のサステナビリティ」を経営戦略に取り入れることでビジネスモデルをより強固にし、新たなビジネスチャンスを生み出すことができます。そして、SXをより強力に推進していくためには、変化に対応して変革する能力「ダイナミック・ケイパビリティ(企業変革力)」が重要となります。経済環境は持ち直しの傾向も出てきておりますが、日本は世界に先駆けて人口減少や人口構造の変化が進む「課題先進国」であり、これまで誰も経験したことのない未知の経済環境に足を踏み入れております。銀行業界では、低金利による収益力の低下、デジタライゼーションの急速な進行などにより、持続可能なビジネスモデルの再構築が喫緊の課題となっております。地方銀行の経営も過去に例のない歴史的な転換期を迎えており、経済発展や人々の暮らし、守るべき地球の営みを未来につなげ、持続可能な社会の実現に向けたビジネスモデルの構築が求められております。②目指すべき地域社会の姿「自分らしく未来を描き、誰もが幸せに暮らせる社会」このような考えのもと、第7次中期経営計画((2)「中長期的な経営戦略及び目標とする経営指標」に詳細を記載しております。)については、私たちが目指すべき地域社会の姿をビジョンに掲げ、そこから現在に向けてバックキャスティングする方法で策定いたしました。目指すべき地域社会の姿「自分らしく未来を描き、誰もが幸せに暮らせる社会」は、不変の精神である行是(「自分にきびしく 人には親切 社会につくす」)とCSR憲章(経営理念…「地域社会」「役職員」「地球環境」との「共存共栄」)が実現された世界観をより具体的に表したもので、SDGsの世界観とも軌を一にしております。お取引先や地域社会がSustainableであってこそ、当行もSustainableになることができます。すなわち、地域の皆さまが安心して生活できるインフラとして機能し、地域社会の持続的発展に尽くし、地域の明るい未来を支えていくことが、当行が持続的成長をしていくために不可欠であると考えております。その使命を全うするために、自らを「課題解決型金融情報サービス業」へと進化させ、SDGsをビジネスにつなげ、地域のSustainable Developmentに経営資源を集中いたします。また、超長期を展望するビジョンとなることから、中期経営計画との間をつなぐ2030年のマイルストーン(指標)を設定しております。マイルストーンには、2017年11月に発表した「しがぎんSDGs宣言」の重点取組項目(ターゲット2030)である「地域経済の創造」「地球環境の持続性」「多様な人材の育成」 にそれぞれ対応した指標を設定しております。リンケージ(連関)するこれら3つの指標を統合的に推し進めていくことが、目指すべき地域社会の姿につながるものと考えております。2030年のマイルストーン(ターゲット2030)〈地域経済の創造〉〈地球環境の持続性〉〈多様な人材の育成〉Sustainable Development推進投融資 新規投融資額累計1兆円温室効果ガス排出量2030年に75%以上削減(2013年度比較)2050年までに“しがCO2ネットゼロ”(注)を達成SDGs・金融リテラシーの普及・向上活動、次世代人材の育成活動実施人数延べ3万人(注)2050年までに滋賀県における二酸化炭素の排出量を実質ゼロにする取り組み。滋賀県が主体となり、県民、事業者等多様な主体と連携して取り組む「“しがCO2ネットゼロ”ムーブメント」に取り組んでおります。(2) 中長期的な経営戦略及び目標とする経営指標2019年4月よりスタートした第7次中期経営計画(期間5年間:2019年4月~2024年3月)は、目指すべき地域社会の姿から遡って今取り組むべき課題を洗い出す「バックキャスティング」の視点で策定いたしました。本中期経営計画において、当行の目指す姿は「Sustainability Design Company」といたしました。「従来の枠組み・発想を超える」との考えから「Bank」ではなく「Company」とするとともに、「お取引先や地域社会の持続可能な発展を企画して創る」との強い想いを込めました。また、メインテーマは、目指す姿にあわせて「未来を描き、夢をかなえる」といたしました。なお、ビジネスモデルを大きく変えるためには、人材育成やIT投資等を通じた一段の生産性向上による体制強化が必要であり、計画期間は5年間としております。第7次中期経営計画で目標とする経営指標及び2022年3月末時点の実績は下表のとおりであります。第7次中期経営計画期間中の挑戦指標2024年3月末(計画)2022年3月末(実績)<SD(Sustainable Development)目標>①Sustainable Development推進投融資(格付CS先への新規融資額、SDGs型商品新規投融資額、ESG新規投資額5年間累計)7,000億円5,028億円②地域顧客の価値向上サポート(年間コンサルティング相談件数)2,000件1,607件③地域顧客の資産形成サポート(預り資産残高「投資信託+金融商品仲介」)3,000億円2,166億円④温室効果ガス排出量削減(2013年度比較の削減率)50%削減42.08%削減⑤SDGs・金融リテラシーの普及・向上活動、次世代人材の育成活動(研修等の実施人数5年間累計)15,000人10,491人<収益目標>①親会社株主に帰属する当期純利益(連結)100億円以上177億円②顧客向けサービス業務利益(単体)(貸出残高×預貸金利回り差+役務取引等利益-営業経費)30億円△14億円■長期的挑戦指標長期的挑戦指標2022年3月期(実績)ROE(連結)5%以上3.69%OHR(単体)65%未満80.78%(3)気候変動への取り組み異常気象による被害が増大するなど、気候変動をはじめとする地球環境の変化は、経済活動のみならず私たちの日常生活に大きな影響を及ぼしつつあり、人類共通の大きなリスクとなっております。こうした中、各国の政府や企業では化石燃料依存型社会・経済構造を見直し、脱炭素社会へ移行しようとする動きが加速しております。当行は、2004年4月にスタートした中期経営計画より温室効果ガス排出量の削減目標を設定し、2007年4月には「地球環境との共存共栄」を掲げたCSR憲章(経営理念)を制定するなど、気候変動の原因となる地球温暖化への対応を重要な経営課題の一つと認識してまいりました。2020年10月に改定した環境方針では「気候危機への対応」として重要性を再認識し、金融の役割を通じて「経済と環境の好循環」を確立することで、持続可能な社会を創出するよう努めております。また、地方銀行で初めて商品化したサステナビリティ・リンク・ローンなど、ESGファイナンスで実績を挙げております。さらに、当行は2018年7月にTCFD(気候関連財務情報開示タスクフォース)への賛同を表明し、株主・投資家をはじめとする幅広いステークホルダーの皆さまとのエンゲージメントにつなげることを目的として、2019年度版統合報告書からTCFD提言に基づく情報開示を実施しております。今後も情報開示の充実に努め、地域社会の脱炭素に向けた取り組みを牽引してまいります。①ガバナンス(気候関連リスク及び機会に関するガバナンス)上記の通り、当行では気候変動を含む環境・社会課題を経営上の重要事項として捉え、取締役会において議論し、経営戦略やリスク管理に反映しております。具体的な対応や取り組みは、取締役頭取を委員長として設置したサステナビリティ委員会で協議し、委員会での議論の内容は、少なくとも年1回の頻度で取締役会に報告されます。取締役会は、GHG排出削減の状況など、報告された内容に対し適切に監督する態勢を構築しております。サステナビリティ委員会は、常勤役員、全部長、関連会社社長をメンバーとして年3回開催しております。委員会では、当行が優先して取り組む重要課題(マテリアリティ)の特定、サステナビリティビジョンの策定、サステナビリティ方針に基づく各部施策の検討、ISO14001に基づく環境目標の設定、TCFD提言に基づくシナリオ分析など、中長期的なESG 課題への対応方針や取組計画等を審議し、重要な事項については経営会議(常務会)や取締役会へ内容を報告しております。②戦略気候変動を含むリスク及び機会への対応を進めるため、「地域経済の創造」「地球環境の持続性」「多様な人材の育成」の3分野をマテリアリティとして特定し、持続可能な社会を目指す「サステナビリティビジョン(長期ビジョン)」を策定しております。また、2020 年10 月には地域社会の持続可能性を重視した「サステナビリティ方針」を制定し、総合企画部内にサステナブル戦略室を設置するとともに、営業統轄部内にESGファイナンスの専門チームを発足させ、脱炭素社会の実現に向けてサステナブル・ファイナンス等を強化していく態勢の充実を図っております。当行では、短期(5年)、中期(10年)、長期(30年)の時間軸で気候変動に伴うリスク(移行リスク・物理的リスク)と機会を1.5℃シナリオ及び4℃シナリオを前提に評価しております。認識した気候変動リスク及び機会については、CO2排出量削減に関する取り組みを進めているほか、投融資に係る戦略への反映を検討しております。リスク・機会の種類事業へのインパクト顕在時期移行リスク政策・規制市場技術1.5℃シナリオの達成に向けた脱炭素政策や規制への対応、又は低炭素志向への市場の変化等が投融資先の事業や業績へ及ぼす影響が当行の与信コストに及ぼす影響中期~長期政策国際的な気候変動対応の高まりを受けた規制導入や変更短期評判気候変動への対応や情報開示が不足した場合の風評悪化短期物理的リスク急性リスク洪水等の自然災害の増加が投融資先の事業や業績に及ぼす影響が当行の与信コストに及ぼす影響短期~中期~長期洪水等の自然災害により当行資産が毀損するリスク短期~中期~長期慢性リスク感染症や熱中症の増加が投融資先の事業や業績に及ぼす影響が当行の与信コストに及ぼす影響短期~中期~長期機会商品・サービス低炭素製品やサービスの開発に係る企業の資金需要の増加短期~中期~長期資源効率化・エネルギー源脱炭素社会への移行に向けた取り組みによる企業のコスト低減や移行に係る資金需要の増加短期~中期~長期評判地域の脱炭素化に貢献する金融機関として社会的評価が高まることによるビジネス機会の増加中期~長期TCFD 提言における開示を推奨している炭素関連資産のうち、エネルギー及びユーティリティーセクター(電力、除く再エネ)向け与信が当行貸出金に占める割合は、2022年3月末時点で2.36%となっております。今後は、他の炭素関連資産も含めた状況について把握するよう検討を進めてまいります。シナリオ分析では、気候変動に関する政府間パネル(IPCC)や国際エネルギー機関(IEA)等が公表している複数のシナリオを参照の上、パリ協定や2021年11月の国連気候変動枠組条約締約国会議(COP26)における合意内容等を踏まえ、2つのシナリオ分析を実施いたしました。与信コストの増加については、中長期的な取り組みにより低減を図ることが可能であることから、影響は限定的と考えられます。<分析プロセス>・セクター毎のリスク(移行リスク、物理的リスク)と機会を分析・移行リスクのシナリオ分析対象セクターを決定・移行リスク、物理的リスクともに分析対象に応じたシナリオを設定し、与信コストへの影響を分析<移行リスク>内容等シナリオIEAによる「ネットゼロ排出量シナリオ(1.5℃シナリオ)」対象セクター① 電力ユーティリティ② 石油・石炭・ガス対象期間2021年3月末を基準として2050年まで指標与信関連費用(与信コスト) ※債務者区分判定に基づく与信コスト分析結果2050年までの累計で 50億~100億円 程度の与信コスト増加<物理的リスク>内容等シナリオIPCCの「RCP8.5 シナリオ」(4℃シナリオ)」2050年までに「100年に1度規模の洪水が発生」対象地域①滋賀県全域②京都府全域対象先事業性融資先(大企業を除く)指標与信関連費用(与信コスト)①与信取引先の営業停止による売上減少を踏まえた債務者区分の悪化②担保毀損分析結果およそ40億円程度の与信コスト増加③リスク管理当行は、気候変動に起因する移行リスク及び物理的リスクが、地球環境のみならず、地域経済や当行の事業運営、戦略、財務計画に重大な影響を与えることを認識しております。当行のリスク管理においては、信用リスク、市場リスク、流動性リスク、風評リスクなどを総合的に評価しておりますが、今後も定期的にシナリオ分析を実施し、さまざまな前提条件のもとで気候変動が地域経済に及ぼす影響を把握し評価するとともに、統合的リスク管理の枠組みにおいて、そのリスクを管理する体制の構築に努めてまいります。(当行のリスク管理体制の概要については、2「事業等のリスク」に記載しております。)また、認識したリスクに対しては、サステナビリティ方針において「脱炭素社会の実現」を掲げるだけでなく、ステークホルダーとのエンゲージメントを強化し、地域やお取引先の脱炭素に向けた取り組みを支援してまいります。④指標と目標地域やお取引先の持続可能な発展に向けた挑戦指標を次のように定めております。Sustainable Development推進投融資 実行額累計挑戦指標2022年3月末中期指標(2024年3月期末)7,000億円5,028億円長期指標(2030年3月期末)1兆円環境負荷低減の目標を次のように定めております。 (Scope1, Scope2 基準)温室効果ガス排出量削減(2013年度比較)挑戦指標2022年3月末中期指標(2024年3月期末)50%削減42.08%削減長期指標(2030年3月期末)75%削減2050年指標:滋賀県が提唱する“しがCO2ネットゼロ”※ の達成―※滋賀県における二酸化炭素の排出量を実質ゼロにする取り組み。滋賀県が中心となり、県民、事業者等多様な主体と連携して取り組みを推進しております。当行グループの基準年及び2022年3月期における温室効果ガス排出量は次の通りであります。2013年度(基準年):9,245t2022年3月期    :5,354tなお、Scope3については計測方法を検討し、開示に向けた議論を行っております。持続可能な社会の担い手となる多様な人材を育成するための挑戦指標を次のように定めております。SDGs・金融リテラシーの普及・向上活動、次世代人材の育成活動 延べ実施人数挑戦指標2022年3月末中期指標(2024年3月期末)15,000人10,491人長期指標(2030年3月期末)30,000人(4) 経営環境及び対処すべき課題新型コロナウイルス感染症の影響長期化、ウクライナ危機による資源高、米国金利上昇等により幅広い産業で厳しい状況が続いております。企業活動や消費活動の本格的な回復に向けては時間を要するとみられる中、当行はお客さまの資金繰りや、経営支援・再生支援などの事業再構築支援に迅速かつ丁寧に対応しております。人口減少や少子高齢化、都市と地方との格差問題、急速なデジタル化の進行などにより、日常の働き方や生活様式、社会や経済行為における価値観が変わる中、地方銀行の経営も変革(トランスフォーメーション)が求められております。つまり、従来型の発想や過去のビジネスモデルの延長線上に未来はなく、新たなビジネスモデルの構築が必要とされております。当行は今年4月にプライム市場に上場し、来年10月1日には創立90周年を迎えます。来たる100周年に向け、持続可能な発展を実現していくため、自己の組織の「強み」を生かした新ビジネスを創出しながら営業力をより高め、一方で生産性向上により財務基盤を固めることで、事業のサステナビリティ(持続可能性)につなげてまいります。そして、時流の変化に応じて、店舗ネットワークとデジタルを活用し、金融仲介機能の発揮に努め、お客さまのニーズや社会的要請に応えるサービス、付加価値を提供してまいります。当行は第7次中期経営計画の実施により、自らが「課題解決型金融情報サービス業」へ進化し、SDGsをビジネスにつなげ、社会的課題解決により持続可能な社会の実現に取り組んでおります。そして、目指すべき地域社会の姿「自分らしく未来を描き、誰もが幸せに暮らせる社会」を創造していきたいと考えております。なお、この取り組みを完遂すべく第7次中期経営計画の最終年度までのキーワードを「未来につなげるSX」としております。当行は持続可能な変革に向けて、地域、お客さまの成長を牽引し、CSR憲章(経営理念)に掲げる「地域社会」「役職員」「地球環境」との「共存共栄」を目指してまいります。"

7.2 データの整形

テキストデータを整形し、トークナイザを使ってBERTに入力できるデータに変換します。

#テキストデータの整形
import re
text = re.sub("【[^】]+】","" ,text)
text_list = text.split("。")

#エンコーディング
encoding = tokenizer(
    text_list,
    padding = "longest",
    return_tensors="pt"
)
encoding = { k : v.cuda() for k, v in encoding.items()}

7.3 推論

# モデルのロード
bert_sc_ = BertForSequenceClassification.from_pretrained("/content/bert")
bert_sc = bert_sc_.cuda()

#BERTへ入力し分類スコアを得る
with torch.no_grad():
    output = bert_sc(**encoding)
scores = output.logits.argmax(-1)

labels_predicted = scores.int().cpu().numpy().tolist()

for text , label in zip(text_list, labels_predicted):
    print("-----------------------")
    print(f"入力:{text}")
    print(f"出力:{label}")

出力結果

適切にネガポジ判定できていると思います。さすがBERT!

カテゴリー 出力結果
ポジティブ 1
ネガティブ 0
(略)
-----------------------
入力:このような環境のなか、社会と経済のデジタル化や脱炭素社会への移行など変革の流れは一気に加速いたしました
出力:1
-----------------------
入力:将来の予測が困難な状況においては、ビジネスチャンスとリスクを見極めて企業を変革することが必要となります
出力:0
-----------------------
入力:SXとは、企業のサステナビリティと社会のサステナビリティの両立を図ることであります
出力:1
-----------------------
入力:経営環境が変化する中においても、企業の「稼ぐ力」を維持することが必要であり、中長期の視点で「社会のサステナビリティ」を経営戦略に取り入れることでビジネスモデルをより強固にし、新たなビジネスチャンスを生み出すことができます
出力:1
-----------------------
入力:そして、SXをより強力に推進していくためには、変化に対応して変革する能力「ダイナミック・ケイパビリティ(企業変革力)」が重要となります
出力:1
-----------------------
入力:経済環境は持ち直しの傾向も出てきておりますが、日本は世界に先駆けて人口減少や人口構造の変化が進む「課題先進国」であり、これまで誰も経験したことのない未知の経済環境に足を踏み入れております
出力:1
-----------------------
入力:銀行業界では、低金利による収益力の低下、デジタライゼーションの急速な進行などにより、持続可能なビジネスモデルの再構築が喫緊の課題となっております
出力:0
-----------------------
入力:地方銀行の経営も過去に例のない歴史的な転換期を迎えており、経済発展や人々の暮らし、守るべき地球の営みを未来につなげ、持続可能な社会の実現に向けたビジネスモデルの構築が求められております
出力:0
-----------------------
(略)

 

8. さいごに

いかがでしたでしょうか。
私自身は、この一連の実装を通じて、事前学習モデルとファインチューニングを組み合わせることで高い精度が得られることがよく理解できまし、改めて、BERTって凄いなと思いました。
引き続き、BERTで何ができるのか、研究していきたいと思います。

Discussion

azumaazuma

度々質問失礼します。

「5.3」でコードを実行した際、
RecursionError: maximum recursion depth exceeded while calling a Python object
と出てしまったんですが、何か解決策をご教授していただけないでしょうか、、、
またこのエラーが出る前、
①BertForSequenceClassificationMultiLabelが定義されていない
②引数にlrが定義されていない
とのエラーが出たので、「5.1」のコードのBertForSequenceClassificationMultiLabelに_plを足し、lrをlr=lrと定義させて頂きました。

何度ものコメント申し訳なく思っていますが、なにぶんプログラミング初心者にも関わらずBertを使って卒論を書くことになっておりまして、、、

よろしくお願いいたします。

osn_Lofiosn_Lofi

コメントありがとうございます。

大変失礼しました。
コードに一部誤りがありました。
コードを修正して、更新しました。
自分の手元では動くことを確認しましたが、もしかしたら、一部コピペ漏れがあるかもしれません。
試してみて、エラー等でましたら教えてください。

私としても、このようにコメントをいただけると助かります。

卒論、頑張ってくださいね。

azumaazuma

返信ありがとうございます。

改めて実行させていただきましたら、問題なく動きました。
ありがとうございます!