Ahogrammer

Deep Dive Into NLP, ML and Cloud

ディープラーニングで作る固有表現認識器

固有表現認識は自然言語処理の基礎技術であり、様々なタスクの要素技術として使われます。たとえば、情報抽出や対話システム、質問応答といった応用システムの中で固有表現認識は使われることがあります。また、関係認識やEntity Linkingといった基礎技術で使われることもあります。

従来の固有表現認識では、言語に特有な特徴や外部知識に依存した手法が使われていました。これらの手法では、特徴を人間が定義することで、高性能な認識を実現していました。ただ、言語依存の特徴を使うため、モデルを新しい言語に対して適用する際のコストが高くなる問題があります。

本記事では、ディープラーニングを使って言語的な特徴や外部知識に依存しない固有表現認識器を作成します。本文は以下の内容で構成されています。

  • 実装するモデルの説明
  • モデルの実装
  • モデルの学習

全体のコードは以下のGitHubリポジトリにあります。スターしていただけるとうれしいです。

github.com

では、実装していきましょう。

続きを読む

Pythonで日本語の文字分散表現を学習する

f:id:Hironsan:20171108110523p:plain:w500

最近の自然言語処理では、文字レベルの言語処理が行われることがあります。 これら文字レベルの言語処理は、ユーザ生成コンテンツに有効であると言われています。 その理由として、ユーザ生成コンテンツのような崩れたテキストでは、形態素解析の性能が大幅に低下し、単語レベルの処理が上手くいかなくなることが挙げられています。

文字レベルの言語処理を行うなら、単語レベルの場合と同じく文字分散表現を事前学習したくなります。 文字分散表現を事前学習しておくことで、①良い文字ベクトルの初期値を得られる、②学習データに現れない文字のベクトルを教師なしで得られる、といった恩恵を受けられます。

本記事では、日本語の文字に対して文字分散表現を学習してみます。 本文は次の2つの内容で構成されています。

  • 学習データの準備
  • 文字分散表現の学習
続きを読む