A Comprehensive Overall picture of NLP in 2019 #ShortcutNLP
自然言語処理における主要トピック
Hola! Welcome to #ShortcutNLP Series! Cheat Note for everyone!
目次
- はじめに: 自然言語処理界隈の落とし穴
- 自然言語処理(NLP)のビジネス応用
- データとしての言語の特徴と言語の構造
- ディープラーニングと自然言語処理
- 自然言語処理(NLP)における要素技術
1. はじめに: 自然言語処理界隈の落とし穴
1–1. この記事の目的
自然言語処理にはタスクに関する用語(機械翻訳, 文章分類など)やその実現を支える要素技術(Word2Vec, LDAなど), さらには言語自体の構造を表す名称(形態素解析, PoSなど)が無数に存在しており, 全体像を整理するのが大変という問題に直面した.
そこで今回はこの問題を解決して, いち早く自然言語処理タスクの実装に取りかかれるようにするためのソリューションとしてこの記事を書く.
1–2. 自然言語処理の歴史
自然言語処理における重要な発展は以下のように, ここ5年で全て起きている. もしあなたがGoogle翻訳の精度向上を感じているならばそれである.
- 2013年:Word2Vecにより単語の意味付きベクトル化に成功
- 2014年:LSTMを用いたディープラーニングによるSeq2Seqの登場
- 2015年:Attentionの登場により、Seq2Seqの性能が劇的に向上
実際, この3つの中身さえ押さえておけば, ビジネスにおける自然言語処理タスクの勘所は押さえたといっても過言ではない.
1–3. 自然言語処理の典型手順
典型的な手順は以下になる.
- 文章の単語分解&前処理 (stopwords, stemming, lemmatization …)
- 単語のベクトル化と意味の付与 (Word Embedding: word2vec, LDA …)
- 分類器/生成器のモデリング (seq2seq: Attention, Encoder-Decoder)
- 評価 (BELU, 交差エントロピー)
コンピュータサイエンスに詳しくない人向けに大切な前提を書いておく. まずコンピュータは最終的に数値しか処理できない. 言い換えると機械学習ではテキストデータも画像データも数値化できて初めて応用できる技術なのである.
よって文章や文章を単語に分解して, 意味を持たせたまま数値化(ベクトル化)する技術であるWord2vecやDoc2vecが完成した段階で, NLP界隈における未来がだいぶ明るくなったのである.
2. 自然言語処理(NLP)のビジネス応用
2–1. 日常に溢れる自然言語処理
機械学習を応用した自然言語処理は, 僕たちがすでに当たり前のように使っているアプリケーションに応用されている.
今すぐに思い当たるのはこれら5つのサービス.
- Google自動翻訳
- Gmailの自動返信メッセージの提案
- 各種サービスサイトにあるChat Bot
- LINE Clovaなどのスマートスピーカー
- SanSanのEightによる画像内の文字情報スキャン(画像認識か)
— — —
2–1. 自然言語処理タスクの3つの種類
上記をより自然言語処理界隈で使われるTerminologyで表現すると, こういう形で高・低レイヤーのブレークダウンできるのではないだろうか.
◯高レイヤー(Input/Outputデータによる仕分け)
- テキスト to クラス分類(Classification)
- テキスト to テキスト(Seq2Seq)
- 画像・音声 to テキスト(Multi-Modal)
◯低レイヤー(タスクによる仕分け)
- 機械翻訳 Machine Translation
- 対話システム Chat Bot
- 質問応答 Question Answering
- 文章要約 Text Summarization
- 音声認識 Speech Recognition
- 感情分析 Sentiment Analysis
- スパム・フェイクニュース検知 Spam Filter & Fake News Detection
- ニュースコンテンツの分類 Document Classification
- 情報抽出 Information Extraction
◯ビジネス応用はあまりされていないが, 面白いタスク
- 文章生成
- キャプション生成(画像→文章)
どれもKerasを使えば実装できるものばかりで実際に動かしてみると本当におもしろい!
— — —
2–3. ビジネスにおけるNLP応用の課題
自然言語処理自体がビジネスにおいてキャッシュエンジンになる事例がまだ少ない. (一部SaaSでのチャットボット提供など例外あり)
事実, Googleの機械翻訳はイノベーションの塊なのだが, 無料で開放されており, 実は誰一人お金を払ってない.
そこで救世主として, テキストマイニングによる知識獲得が注目を浴びている. 例えばこのMediumにはかなりの洗練された知識が日々アップロードされており, この知識を活用することができれば明らかに普通の個人より賢い.
3. 言語の構造とデータとしての言語の特徴
3–1. 言語が持つ構造
人間が普段意識せずに話している言葉には、名詞や動詞といった「品詞」や主語・述語といった「文法」といった構造が存在する.
言い換えると人間は言葉を組み合わせて、文章を作り、文章となって初めて意味が生まれ、コミュニケーションが成立する.
機械(プログラム)が人間がインプットする自然言語を処理し、人間によるコミュニケーションを処理しようとする際には、こういった細かい構造を理解しておく必要がある.
実際の学習では、僕たちがスクラッチで書いたプログラムが「りんご=名詞」など知っているわけではない.
そのため、コーパス(Corpus)やシソーラス(Thesaurus)を使い、{りんご:名詞}といったようにという単語ごとにすでに品詞づけされている辞書を使ったマッチングが行われる.
機械学習のアルゴリズムを組み込んだプログラムはこの処理を順序に沿って行なっていく. 実際の手順は以下となる.
1. 形態素 Morphology
2. 構文 Syntacs
3. 意味 Semantics
それではそれぞれの手順の詳細と重要語句をまとめていく.
— — —
3–2. トピック
1. 形態素解析 Morphology
名詞や動詞, 形容詞など言葉のカテゴリや役割.
- Part of Speech Tagging PoSタグ
2. 構文解析 Syntactic Analysis
主語や述語, 修飾語など文中での単語間における関係性.
- Dependency Parsing 係り受け解析
3. 意味解析 Semantic Analysis
動物:猫, 犬など単語の意味的集まり.
- Topic Model(LDA, LSA, PLSA) 潜在意味解析
- Word Enbedding(Word2vec, Doc2vec, LDA2vec)単語の埋め込み表現
- Named Entity Recognition(NER) 固有表現抽出
4. 単語のトークン化 Simple Tokenization
- Bag of Words 単語トークンの集合
- N-gram 文字数単位での区切り
- Tf-idf 単語の出現頻度とその希少性から重要語句を判別
5. 単語単位での前処理
- Stemming 単語の語幹 dog, doggy -> dog
- Lemmatization 単語のカテゴリ is, are -> be
- Stop Words 頻出勝つ意味を与えない単語 a, on, for
— — —
3–3. 非構造化データ:テキストデータの特徴
一般的にテキストデータはその特徴として, 上記の図を見てわかるように, 以下のように定義されている.
- テキストデータ:離散型(階層的、再帰的)
- 画像、音声:連続型(DLが得意なのはこっち)
よって, よりコンピュータが処理しやすい数値化されたデータに直すまでの工程が複雑になっている. これは画像認識の実装をしてもらえば感じることができる.
4. ディープラーニングと自然言語処理
4–1. 深層学習は自然言語処理に何をもたらしたか?
シンプルに説明すると、以下の3つが挙げられるのではないか。
- 文章の特徴表現が豊かになった(表現できる意味・文脈が広がった)
- 画像や音声など異なるデータを用いたMulti-Mordalな処理が可能に
- 文章内における単語間の階層関係を学習から導けるようになった
1.はseq2seqによる機械翻訳やチャットボット 、2.はAmazon Alexaなどに見られる音声認識から画像からその画像の内容を描写するキャプション生成というタスクに見られる。
— — —
4–2. 転移学習
転送学習とは、大規模データセット上でモデルを訓練し、その事前訓練されたモデルを使用することで別の目の前にあるタスクの精度を高めるためにニューラルネットワークを学習をさせていくプロセスである。
もともとはコンピュータビジョンの分野において、ImageNetデータセットの登場により転送学習が徐々に普及した。
それでは、NLPにおいて転送学習をどのように利用していくか。
答えは、ニューラルネットワークが大規模なコーパスから単語同士の依存関係や文章同士の意味関係などのさまざまな言語現象を取得して学習できるようになる。
そして、言語に関してある種の”知識”を持ったニューラルネットワークは、感情分類などの自然言語処理タスクの処理精度を向上する。
具体的には、単語の埋め込み表現においてWord2Vec, GloVe, fastTextなどから事前学習向けの学習済みモデルの重みを使える。
5. 各タスクと要素技術の関係
ここでは, 自然言語処理タスクを個人で実装したい人向けに, 各ビジネスタスクに対してどのようなNLP理論が使われているのかをまとめる.
Task1: 情報抽出
- Element technology: 固有表現認識
- Method: Deep Learning
Task2:レコメンドシステム
Task3: コンテンツ分類
- Element technology: トピックモデル
- Method: ML/DL or LDA, LSA
Task4: 文書要約(抽象型)
- Element technology: Seq2Seq
- Method: Attention LSTM
Task5: 機械翻訳
- Element technology: Seq2seq
- Method: RNN, encoder-decoder
Task6: 質問応答
- Element technology: Beam Search
- Method: LSTM
Task9: 音声認識(音声→文章)
- Element technology: Beam Search
- Method: CNN
Task10: キャプション生成(画像→文章)
- Element technology: Transfer Learning (VGG16 and Glove)
- Method: RNN and LSTM