目次

前書き

サンプルコード
免責事項

第1章 AllenNLP チュートリアル

1.1 固有表現認識
1.2 DatasetReader
1.3 Model
1.4 設定ファイルの作成
1.5 Predictor
1.6 応用編: テストを書く

第2章 文書分類

2.1 DatasetReader
2.2 Model
2.3 設定ファイルの作成

第3章 Seq2Seq

3.1 DatasetReader
3.2 Model
3.3 ComposedSeq2Seq

第4章 Natural Language Inference

4.1 DatasetReader
4.2 Model
4.3 設定ファイルの作成

第5章 事前学習済みBERT

5.1 Transformersによる事前学習済みBERTのダウンロード
5.2 設定ファイルの作成

第6章 AllenNLPで日本語を扱おう

6.1 DataserReader
6.2 Tokenizer
6.3 設定ファイルの作成

第7章 MLflowとの連携

7.1 準備
7.2 学習
7.3 SageMakerへのデプロイ

前書き

 本書はAllenNLPを利用して自然言語処理を行うための入門書です。AllenNLPはPyTorchをベースにした自然言語処理のためのオープンソースソフトウェアで、最先端のモデルや多くのタスクで利用可能なモジュールなどを含んでいます。AllenNLPを活用することで、自然言語処理におけるモデルの設計や学習を効率的に行うことができます。

 本書では、まずいくつかのタスクについてAllenNLPを利用したモデルの作成と学習を行い、AllenNLPの基本的な使い方を紹介します。そして後半の章では、BERTモデルの利用や日本語対応、MLflowによる実験管理など、応用的な利用方法についても解説します。

 本書の執筆時点でリリースされているAllenNLPの最新版は0.9.0です。本書では、特に断りがない限り執筆時点での最新版である0.9.0を利用します。

サンプルコード

 すべてのサンプルコードはGitHubで公開しています。

 ・https://github.com/kajyuuen/allennlp-book/

免責事項

 本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いた開発、製作、運用は、必ずご自身の責任と判断によって行ってください。これらの情報による開発、製作、運用の結果について、著者はいかなる責任も負いません。

第1章 AllenNLP チュートリアル

 本章では、固有表現認識という自然言語処理のタスクを通じて、AllenNLPの使い方を説明します。ディレクトリ構成はリスト1.1の通りです。

リスト1.1: ディレクトリ構成

ner-model
  ├── configs
  │   └── experiment.jsonnet
  ├── datasets
  │   ├── eng.testa
  │   ├── eng.testb
  │   └── eng.train
  └── src
      ├── __init__.py
      ├── data
      │   ├── __init__.py
      │   └── dataset_readers
      │       ├── __init__.py
      │       └── conll_2003_reader.py
      ├── models
      │   ├── __init__.py
      │   └── ner_tagger.py
      └── predictors
          ├── __init__.py
          └── conll_2003_predictor.py

1.1 固有表現認識

 実装を始める前に、これから扱う固有表現抽出タスクについて説明します。固有表現認識というタスクは、与えられた文章から人名・地名・組織名などの固有名詞や、時間表現などの語句を抽出するタスクです。例えば「Donald John Trump is the president of the US.」という文章には、「Donald John trump」という人名と、「US」という地名、ふたつの固有名詞が含まれています。人名をI-PER、地名をI-LOC、固有表現ではないものにOタグというラベルを付与すると、先程の文章は以下のように表現できます。「Donald/I-PER John/I-PER Trump/I-PER is/O the/O president/O of/O the/O US/I-LOC ./O」このような、単語ひとつに対してラベルひとつを予測することを目的としたタスクを、一般的に系列ラベリングタスクと言います。

 今回は固有表現認識のデータセットとして、CoNLL-2003を利用します。このデータセットは、新聞記事に含まれる人名や地名などの固有表現に対してラベルが付けられているコーパスです。次のコマンドでCoNLL-2003のデータセットを保存しましょう。

$ curl -OL https://github.com/synalp/NER/raw/master/corpus/CoNLL-2003/eng.train

$ curl -OL https://github.com/synalp/NER/raw/master/corpus/CoNLL-2003/eng.testa

 CoNLL-2003の中身はリスト1.2のようになっています。

リスト1.2: CoNLL-2003のサンプル

   U.N.         NNP  I-NP  I-ORG
     official     NN   I-NP  O
     Ekeus        NNP  I-NP  I-PER
     heads        VBZ  I-VP  O
     for          IN   I-PP  O
     Baghdad      NNP  I-NP  I-LOC
     .            .    O     O

 CoNLL-2003のデータセットはタブで区切られた四つの行から構成されていますが、今回構築するモデルでは一列目の単語と四列目の固有表現ラベルを素性として利用します。

試し読みはここまでです。
この続きは、製品版でお楽しみください。