Amazon Web Services ブログ

AWS がエモリー大学とのコラボレーションを通じ、Apache MXNet を活用したクラウドベースの NLP 研究プラットフォームを開発

自然言語処理 (NLP) は、コンピュータプログラムに人間の言語 (自然言語) を理解させるという、人工知能の研究分野のひとつです。NLP についてあまりご存じない方でも、日々の生活の中でこれを使っている可能性は高いでしょう。携帯電話の仮想キーボードで文字入力を行う際、入力内容の分析結果に基づき、次に打ち込むべきであると予測される単語がリスト表示されます。これは言語モデリングと呼ばれ、入力された単語にどの単語が続くかの確率をその内容に基づいて測定する技術であり、NLP の中核的タスクのひとつです。NLP はすでに多くのアプリケーションに採用されており、世の中を大きく変えつつあります。

エモリー大学の NLP 研究グループである Evolution of Language and Information Technology (ELIT) チームは、研究者たちに最先端の NLP と機械学習テクノロジーをもたらす取り組みを行っています。ELIT プロジェクトは、AWS クラウドの豊富なリソースを活用し、ビッグデータ解析に向けたスケーラブルなエンドツーエンドの NLP パイプラインを提供することに主眼を置いています。他の多くの NLP フレームワークとは異なり、ELIT はウェブ API をサポートすることで、プラットフォームに依存しない体制を実現しています。そのお陰で、研究者たちはいつでもどこでも大規模なコンピューティングを利用できます。また、ELIT プロジェクトは、GitHub にも参加しています。これは、エモリー大学の NLP 研究グループが AWS の MXNet チームとの緊密なコラボレーションの下で立ち上げたサービスです。今回のブログ投稿では、ELIT のプラットフォームをご紹介するとともに、そこで活用されているウェブ API や、NLP の可視化についてもご説明します。

ELIT の研究用プラットフォーム

近年、NLP においてディープラーニングが盛んに活用され始めた結果、機械学習に基づく NLP モデルには多大な計算処理能力が要求されるようになり、研究者たちは強力なマシンなしには NLP の最新技術をフル活用できなくなっています。AWS のようなクラウドコンピューティングプラットフォームは、研究者たちがこれらのモデルを実行できるよう、無制限のコンピューティングリソースを提供します。しかしこれは、クラウドにさほど通じていない方々にとっては面倒でもあるでしょう。そこで ELIT プロジェクトが目指すのは、NLP のためのウェブサービスを提供し、インターネット接続さえあれば誰でもリクエストを行えるようにすることです。つまり、ローカルインストールは不要ですし、クラウドコンピューティングに関する予備知識も必要ありません。では、感情分析などの一般的な NLP タスクにおける ELIT プラットフォームの活用例をご紹介しましょう。

感情分析

具体的なデモンストレーションをご覧いただく前に、感情分析に対する当チームのアプローチを簡単にご説明します。感情分析とは、各ドキュメントをネガティブニュートラルポジティブという 3 つの感情に分類することです。ELIT は、感情分析を行うための畳み込みニューラルネットワーク (CNN) モデルを 2 種類提供しており、これを活用することでソーシャルメディアおよび映画のレビューからのデータを分析できます。対象ドキュメント (ツイートまたは映画のレビュー) を指定すると、まずは各単語のベクトル表現がスタッキングされ、インプットとして行列が作成されます。このインプット行列が畳み込みおよびプーリング層に入力され、畳み込みの結果は、対象ドキュメントに含まれる各 n グラム (この例では n = [1、…、5]) の強度を表現するアテンションの行列と一致します。そして、このアテンションのアウトプットがソフトマックス層に入力され、対象データがネガティブニュートラルポジティブの各感情に分類される可能性について予測が行われます (ここで使用した CNN モデルの詳細については、Shin et al., 2017 をご覧ください)。

デモンストレーション

まず、ELIT のデモページ (http://demo.elit.cloud/) のスクリーンショットをご覧ください。

画面左上にテキストボックスがあり、「I watch “the Sound of Music” last night. The ending could have been better. It’s my favorite movie though.」というテキストが入力されています。

画面右上には、トークン分割および文のセグメンテーション、そして感情分析を Twitter と映画レビューのどちらのモデルで行うかのオプションが提示されています。この例では、トークン分割とセグメンテーション、映画レビューモデルによる感情分析を選択しています。

[Analyze] ボタンを選択すると、入力テキストが ELIT サーバーに送信され、選択された NLP パイプラインでこれが処理されて、以下のような結果が返されます。

ELIT の感情可視化機能により、各文の感情が色分けされます (赤がネガティブ、緑がニュートラル、青がポジティブな感情)。また、どの単語がその予測に最も大きく寄与したかを表示するオプションもあります。以下の例では、寄与度の低い単語ほど高い不透明度で (薄い色で) 表示されています。

あるいは、単語の強度をスケール表示で可視化することもできます。その場合は以下のように、寄与度の高い単語ほど大きな円で表示されます。

もちろん、以下のように不透明度とスケールの両オプションを同時に使用することもできます。

ウェブ API

NLP の結果は、お好みのプログラミング言語を使用してウェブ API で取得できます。以下は、上記入力テキストの NLP 結果をリクエストするシンプルな Python コードです。

import requests

r = requests.post('https://elit.cloud/public/decode/', data={'text': 'I watch “the Sound of Music” last night. The ending could have been better.  It’s my favorite movie though.', 'input_format': 'raw', 'tokenize': 1, 'segment': 1, 'sentiment': 'mov'})

print(r.text)

このリクエストを受け、ELIT は入力内容を raw テキストとして受け取り、NLP パイプラインでトークン分割および文のセグメンテーション、映画レビューモデルによる感情分析を実行し、HTTP を介して結果を返します。上記の最終行により、NLP 結果が JSON 形式で印刷されます。

[[{"tokens": ["I", "watched", "\u201c", "the", "Sound", "of", "Music", "\u201d", "last", "night", "."], "offsets": [[0, 1], [2, 9], [10, 11], [11, 14], [15, 20], [21, 23], [24, 29], [29, 30], [31, 35], [36, 41], [41, 42]]}, "sentiment": [0.352990984916687, 0.37940868735313416, 0.26760029792785645],
{"tokens": ["The", "ending", "could", "have", "been", "better", "."], "offsets": [[43, 46], [47, 53], [54, 59], [60, 64], [65, 69], [70, 76], [76, 77]], "sentiment": [0.6561509370803833, 0.17596498131752014, 0.16788406670093536]},
{"tokens": ["It", "\u2019s", "my", "favorite", "movie", "though", "."], "offsets": [[78, 80], [80, 82], [83, 85], [86, 94], [95, 100], [101, 107], [107, 108]], "sentiment-mov": [0.021425940096378326, 0.038874078541994095, 0.9397000074386597]}]]

JSON の出力形式は以下のとおりです。

  • documents: ドキュメントのリスト → [ドキュメント, …, ドキュメント]
  • document: 文のリスト → [文, …, 文]
  • sentence: {トークン, オフセット, 感情} をキーとするディクショナリ
    • tokens: 文中のトークンのリスト。
    • offsets: 対応するトークンが元のテキストにおいてどこに位置するかを示すオフセットのリスト。各オフセットは、トークンの開始 (包含的) と終了 (排他的) を示す [開始位置, 終了位置] の組み合わせで表示される。各ドキュメントは必ずオフセット 0 から開始される。
    • sentiment: 当該文の感情スコアを [ネガティブ, ニュートラル, ポジティブ] の順に記載したリスト。

詳細については、https://elit.cloud/tutorial/decode/ をご覧ください。

デコードのフレームワーク

デコードは、登録済みユーザーと未登録ユーザーの両方に対してサポートされています。ただし、登録済みユーザーは最大 10 MB の HTTP リクエストを行うことができるのに対し、コスト面での事情により、未登録ユーザーによる HTTP リクエストについては入力テキストが 1 MB 以内に限定されています。登録済みユーザーの場合はさらに、最大 1 GB のテキストを含むファイルを伴うリクエストが可能です。なお、スケーラビリティ確保の観点から、すべてのリクエストに Elastic Load Balancing が用いられます。リクエストを受信したウェブ API サーバーはこれを NLP サーバーに送信し、NLP サーバーが入力テキストの NLP 結果を生成します。リクエストされたテキストが 10 MB を超過している場合、NLP サーバーは Amazon S3 ストレージに結果を保存します。結果を返されたウェブ API サーバーは、この情報をデータベースに保存し、NLP 結果をユーザーに送信します。

ロードマップ

ELIT は現在、3 つの NLP タスク (トークン分割、セグメンテーション、感情分析) をサポートしています。2018 年の第 2 四半期までには、NLP の中核的タスクの大半 (品詞 (POS) タグ付与、形態素解析、固有表現抽出、係り受け解析、意味役割付与、同一指示解析など) をサポートする予定です。また、カスタムモデルのトレーニングに向けたインターフェイスの提供も予定されています。ELIT はオープンソースプロジェクトであるため、皆様のご参加によってますます前進していけるよう願ってやみません。当プロジェクトの今後の主な予定は以下のとおりです。

その他のリソース

リファレンス

Bonggun Shin、Timothy Lee、Jinho D. Choi 著 Lexicon Integrated CNN Models with Attention for Sentiment Analysis。EMNLP Workshop on Computational Approaches to Subjectivity, Sentiment and Social Media Analysis (WASSA’17、2017 年デンマーク、コペンハーゲンにて) の議事録 (p. 149~158) に掲載。


今回のブログの投稿者について

Jinho Choi 氏は、エモリー大学コンピュータサイエンス学部准教授です。NLP 研究、特にNLP の中核的タスクの最適化による堅牢性とスケーラビリティの実現に積極的に取り組んできました。同氏が立ち上げた NLP4J (旧称 ClearNLP) というオープンソースプロジェクトは、最先端の精度とスピードを誇る NLP コンポーネントを提供し、学術的および産業的な研究に広く活用されています。同氏は、最近では「Character Mining」と名付けられた新たなプロジェクトに着手し、会話文や E メールなど口語体の文章における明示的または暗示的なコンテキストから、個人の個性の推察を試みています。

Joseph Spisak 氏は、人工知能と機械学習に主眼を置いた AWS のパートナーエコシステムチームのリーダーです。17 年以上にわたり、Amazon、Intel、Motorola などの企業で主に動画や機械学習、AI を扱い、ディープテックの経験を積んできました。休日にはアイスホッケーをしたり、SF 小説を読むのが楽しみとのこと。


エモリー大学の ELIT チーム

Gary Lai 氏は、エモリー大学でコンピュータサイエンスの博士課程に在籍。ウェブやアプリ、API サーバー開発向けサービスを提供する Jungllle Inc. の創設者でもあります。ELIT プロジェクトの主任リサーチサイエンティストとして大規模なコンピューティングに向けた NLP コンポーネントの最適化に取り組む傍ら、バックエンド API の開発や、アマゾン ウェブ サービス (AWS) をベースとしたスケーラブルなインフラストラクチャの構築も手がけています。

Bonggun Shin 氏は、エモリー大学でコンピュータサイエンスの博士課程に在籍。NLP を念頭に置いたディープラーニングアルゴリズム開発の中でも特に、解釈可能なドキュメント分類モデルの設計に取り組み、ディープラーニングモデルが謎に包まれたブラックボックスでなく理解できる対象となるよう尽力しています。このような解釈の実現は、研究者たちが統計モデルの挙動を理解するのに役立ち、ひいてはメソッド自体の実用性向上につながります。

Tyler Angert 氏は、エモリー大学コンピュータサイエンス学部の 4 年生。アートとグラフィックデザインに従事した経歴を持ち、コンピュータサイエンスによるデータの可視化や、ユーザーエクスペリエンスという概念の一新に取り組んでいます。NLP 研究の傍ら、モバイルヘルスの研究にも従事。小児喘息や自閉症の管理、理学療法の新たなツールとしての拡張現実 (AR) の採用を目指しています。