見出し画像

自然言語処理に歩み寄る#1

はじめに

TransformerやBERTの登場により、ビジネスの現場でも自然言語処理の活用が検討、実証されています。今回から複数回にわたって、"自然言語処理の基礎"となる内容から記事にしていきます。

自然言語処理とは?

自然言語(日本語や英語など私たちが普段使っている言葉)をコンピュータに理解させるための処理です。
自然ではない言語というのは、JavaやPythonといったプログラミング言語などを指します。

身近なところで例を挙げると、文字変換や機械翻訳、検索エンジン(Googleなど)、対話システム(SiriやGoogleアシスタントなど)で活用されています。
※ご存知かもしれませんが、対話システムなどは単に自然言語処理だけではなく、音声認識など様々な技術をベースとして実現されています。

自然言語処理は、NLP(Natural Language Processing)と表記されます。
最近では、その中でも大きく2つの技術に分けて言及されることもあります。
・自然言語生成(NLG:Natural Language Generation)
  自動要約や質疑応答など
・自然言語理解(NLU:Natural Language Understanding)
  構文解析や意味解析など

画像1

自然言語処理の流れ

ざっくり説明しますと、入力された文章を名詞や動詞といった単語レベルに分解し、単語を数値化(ベクトル化)して、単語や文章の関係性を解析していきます。

「入力された文章を名詞や動詞といった単語レベルに分解」することを「形態素解析」と言います。
今回の記事では、この「形態素解析」について説明と例を交えてまとめます。

形態素解析とは

(繰り返しになりますが)形態素解析とは、入力された文章を名詞や動詞といった単語レベルに分解すること、です。
日本語は、この形態素解析が必須です。

英語はありがたいことに、ほぼ形態素ごとに分割(分かち書き)されています。シンプルに、スペースで区切ってしまえばいいのです。

(例)I am learning English.
I / am / learning / English / .

※nltkという、英語を形態素解析できるライブラリを用いた処理結果例です。

画像2


細かい処理としては、複数形や短縮形、文末のピリオド(.)などを分解していきます。

日本語は下記のように、品詞に分解されます。

(例)私は英語を勉強しています。
私 / は / 英語 / を/ 勉強 / し / て / い / ます /。

※MeCabという、日本語を形態素解析できるライブラリを用いた処理結果例です。

画像3

見てお分かりかと思いますが、日本語って複雑ですね・・・。
※中国語やタイ語も同様に、形態素解析が重要な処理です。

形態素解析するときに何を使ったらいいの?

もちろん、私は言語学の専門家ではありません。
今書いているこの記事でも日本語がおかしい箇所はあるかと思います。

ここは先人たちの知恵をお借りしましょう。
日本語の形態素解析ができるツールが公開されているので、いくつかピックアップして紹介します。
※本記事では、Pythonのライブラリを対象としています。

①MeCabLink
・比較的高速な処理が可能
・形態素解析で使用する辞書(*)がカスタマイズ可能
・MeCabはPythonだけでなく、CやJava、Rubyなど多くの言語で利用可能

※参照する辞書を変更可能であり、目的に応じた辞書を用いることが望まれます。
 IPA辞書:最もスタンダードな辞書。導入も容易。
 Unidic:短く単語分割を行える辞書。
 NEologd:新語などに対応するためアップデートされている辞書。

②Janome(Link
・Pure Pythonで実装されており、導入が容易(pipで導入可能)
・MeCabのIPA辞書が内包されている。ユーザが定義した辞書は適用可能
・アプリケーションへの組み込みを容易にするため、シンプルなAPI実装

③Sudachi/SudachiPy(Link / Link-Python版
・3段階の分割単位を併用
・文字の正規化や未知語処理にプラグイン機能あり
・速度はMeCabに劣るが、省メモリを実現
・OSSの日本語NLPライブラリであるGiNZAで使用

④Juman(Link
使用者によって文法の定義や単語間の接続関係の定義などを容易に変更できるように配慮
・RNNLMを活用し、単語の意味的な並びの自然さを考慮した後継ライブラリであるJuman++も公開
・形態素解析後に行う、単語間の依存関係を解析可能(KNP
※KNP:日本語文の構文・格・照応解析を行うシステム

まとめ

・形態素解析とは、入力された文章を名詞や動詞といった単語レベルに分解すること。
・日本語は英語と異なり、最初の形態素解析が重要な処理。
・様々な日本語形態素解析ツールがあり、目的に応じて使い分けが可能。

次回予告
次は、「形態素解析した文章をどのように数値化するか」について記事を書きたいと思っています。
読んでいただきありがとうございました。



この記事が気に入ったらサポートをしてみませんか?