NLP を学ぶ

はじめに 

自然言語処理(NLP)は人間が扱う言語を処理する技術分野である。

これまでNLP関連の技術はKaggleのcompetitionなどで軽く触れたくらいで
しっかり勉強したことがなかったため今回は疑問に思った以下の2点について調査した。

NLPの応用事例

機械翻訳

  • 入力 : ある言語の文章
  • 出力 : 別の言語の文章

NLPの応用事例について真っ先に思いついたのはgoogle翻訳であった。
(最近BERTを導入したという話は聞いていた。)
機械翻訳はある言語を別の言語に翻訳するというタスクである。
英語→日本語などでは現時点でもある程度意味の分かる文章として翻訳できているように思うが 言語のニュアンスまで含めて完全に翻訳することは難しいようだ。1

チャットボット

  • 入力 : 文章
  • 出力 : 文章
  • 備考 : 入力、出力を何回か繰り返す

チャットボットは言葉によるやりとりを行う人工知能である。
トラブルが発生した時の初動対応やアシスタントなど様々な分野に利用される2

レビュー分析

  • 入力 : 文章
  • 出力 : postive, negative などのラベルや確信度

ある事柄に関するレビュー文章からその文章の持つ意味を抽出し、業務改善に活かす。

文章校正

  • 入力 : 文章
  • 出力 : 文章が正常かどうか、異常個所

文章が正しいフォーマットになっているか、情報の漏れがないかをチャックし問題のある
箇所があれば指摘します。契約書の作成などに利用される。
(ブログを書くときにも誤字チェックなどで使えそう)

文章要約

  • 入力 : 文章
  • 出力 : 文章

入力された文章の重要な部分を指摘する。 長い文章を読むのが面倒なときに便利そう。

文章生成

  • 入力 : テーマ、画像など
  • 出力 : 文章

テーマなどを与えることでそれに対応する文章を自動で生成する。3
画像を与えてその説明を行うようなものもある4
おもしろそうな分野ではあるがフェークニュースの作成やなりすましなどに利用される可能性も指摘されている。

NLPベンチマーク

Deep LearningによりNLPのモデルの性能が向上しているという話は以前から聞いていたが、NLPのタスク複雑であり具体的にどのようなタスクに対して性能が向上しているかを知らなかった。
今回はNLU(モデル評価のモデル評価ベンチマーク)として利用されているGLUE(General Language Understanding Evaluation)5 について調査した。

GLUE

GLUEには以下のようなタスクがある

単一文章入力
CoLA (Corpus of Linguistic Acceptability)

各文章が英語の文法的に正しいかを判定する。
評価指標はMatthewsの相関係数

SST-2 (The Stanford Sentiment Treebank)

映画のレビューに対するpositive-negativeの二値判定。
評価指標はAccuracy。

類似度、パラフレーズ(言い換え)
MRPC (The Microsoft Research Paraphrase Corpus)

オンラインのニュースから文章を抽出して作ったデータセット
文章のペアが与えられてそれが同じ意味かを判定する。
ラベル作成は人手。
評価指標はF1とAccuracy。

QQP (The Quora Question Pairs)

QuoraというQ/Aサイトから得られたデータ・セット。
タスクは2つの質問文が同じ意味かどうか判定する。
評価指標はF1とAccuracy。 学習と評価データでラベル分布が異なる。

STS-B (The Semantic Textual Similarity Benchmark)

ニュースのヘッドライン、動画、画像キャプションから抽出したデータ。
各文章のペアが類似度に応じて1~5段階にラベルづけされている。 評価指標はピアソン、スピアマンの相関係数

推論タスク
MNLI (The Multi-Genre Natural Language Inference)

テストの含意関係(textual entailment)のデータセット
前提と仮説に対応する2つの文章が与えられて、
前提条件の元で仮説が正しい、正しくない、どちらとも言えないの3値分類を行う。
前提条件にはいくつかドメインがありドメイン内、ドメイン間の2パターンでaccuracyを
評価指標としている。

QNLI

The Stanford Question Answering Datasetを修正したもの。 質問と文のペアが与えられて、文の中に質問の答えが存在するかを判定する。 評価指標はaccuracy.

RTE (Recognizing Textual Entailment)  

昔のRTE関連のchallengeをまとめたデータセット。 データの一貫性のため3クラス分類を2クラス分類としている。
評価指標はaccuracy.

WNLI

文章が与えられ、その中から質問文の答えに対応する単語、句を応える問題(Winograd Schema Challenge)
のデータを修正したもの。 元文章を前提、曖昧な単語を解答候補に置き換えた文章を仮説として、含意判定を行う。
評価指標はaccuracy.

まとめと今後

今回はNLPの応用例とGLUEによるベンチマークについて調査した。
現時点での応用例ではチャットボットや文章生成に興味があるので今後検証していきたい。
ベンチマークについては今後実際にデータを解析して理解を深めていきたい。
またNLU以外のベンチマークについても調査したい。

参考文献