Python学院
メールマガジンバックナンバー

vol.73

  • コツ・知識
  • メールマガジン

自然言語処理とは?janome(Python)で形態素解析を行ってみました!

今回のテーマは「自然言語処理とjanomeを使った形態素解析」についてです。

(約10分で読めます)

~~~~~~~~~目次~~~~~~~~~
1、自然言語処理とは何か?どのようなことができるのか?
(1)自然言語処理とは何か?
(2)自然言語処理の種類
(3)自然言語処理を用いてできること
2、自然言語処理で使えるライブラリ
■有名なライブラリ
・NLTK
・spaCy
・Hugging Face Transformers
■日本語対応しているライブラリ
・Mecab
・janome
3、Pythonのjanomeを使用して、形態素解析を行う
(1)行うことの説明
(2)コードのご紹介
(3)実行結果
4、おわりに
~~~~~~~~~~~~~~~~~~~~

1、自然言語処理とは何か?どのようなことができるのか?

(1)自然言語処理とは何か?
自然言語処理とは、コンピュータが人間の言語を理解し、処理、生成するための技術です。英語ではNatural Language Processing(NLP)と表現します。

(2)自然言語処理の種類
・形態素解析
文を単語に分割し、各単語の品詞や意味を特定する解析手法です。形態素は最小の意味単位で、例えば「行かない」が「行く」と「ない」に分割されます。
morphological_analysis1
形態素解析は、テキスト分割、品詞タグ付け、語彙の正規化という順番で行われます。品詞のタグ付けとは、名詞、動詞、助詞などの品詞情報を付けることです。
・構文解析
文章の構造と文法的な構成要素を理解する解析手法です。文章を意味のある部分に分割し、文法的な関係を特定することを目的として行います。
構文解析は形態素解析と組み合わせて、文章内の単語や句がどのようにつながっているかを把握できます。例えば、主語と述語の関係、修飾語句の位置、文の階層構造などです。
morphological_analysis2
・意味解析
文章の意味を理解し、解釈する解析手法です。言語データの意味的な情報を抽出し、文や文章の意味構造をコンピュータが理解できる形に変換します。単語の語義、文脈の理解、構文解析との統合などを目的にしています。
深層学習と大規模なデータセットを使用した手法により、近年は意味解釈の性質が高まっています。
・文脈解析
テキスト内の単語やフレーズの意味を理解する解析手法です。特定の単語や言い回しが使用される文脈や、周囲の文や段落、文書全体などの関連情報を考慮して、その意味を適切に解釈します。
例えば、単語の多義性を解消し、文脈に応じて正確な意味を特定するのに役立ちます。文脈解析は、大規模な文章データから機械学習や深層学習を用いて実行されます。

上記のように、自然言語処理では様々な解析手法があります。特に「文脈解析」や「意味解析」では、深層学習や機械学習と組み合わせて解析されることも多くあります。

機械学習に興味がある方はこちらの記事もご覧ください。
AIがより主流になる時代がやってくる!?AIの主要8市場についてご紹介します!

(3)自然言語処理を用いてできること
・翻訳
・質問応答
・感情分析
→自社商品のレビューの解析 ・文法チェック
・本格的なチャットボットの作成
→サイト内でのQ&A ・情報抽出
・要約
・文書生成
→生成AIを使用できない社内文書の処理 ・文書クラスタリング など

自然言語処理を有効に活用すると、上に挙げた多くのことができます。
自然言語処理を用いた例としてChatGPTが挙げられます。ChatGPTは文書生成や要約、翻訳もできてしまいます。
chatgpt
上記は、ChatGPTに翻訳の指示を出したときの画像です。確認したところ、正しく翻訳できていました。

ChatGPTに興味がある場合はこちらの記事もおすすめです。
「ChatGPTってなに?」文書作成などの業務に活かせないか試してみました!


2、自然言語処理で使えるライブラリ

■有名なライブラリ
・NLTK
Pythonのオープンソースライブラリです。教育と研究を主な対象としており、自然言語処理の基礎から学びたい人に適しています。
文章データの分析だけでなく、言語モデルの構築、機械学習アルゴリズムの実装なども行えます。
※言語モデルの構築...コンピュータが人間の言語の理解と生成を行えるようにすること
※機械学習アルゴリズム...コンピュータがデータから学習し、パターンを抽出する数学的な手法
・spaCy
高速で効率的な自然言語処理ライブラリです。またさまざまな文章データの分析に加え、エンティティ認識なども行うことができます。
また他言語に対応している点も特徴で、日本語は形態素解析エンジンの「GiNZA」というライブラリがあります。
※エンティティ認識...人名、場所、日付などを識別すること
・Hugging Face Transformers
自然言語処理に特化したオープンソースプラットフォームです。
プリトレーニングモデルの利用とファインチューニング、テキスト生成、テキスト分類、質問応答など高度なことを幅広く行えます。
※ファインチューニング...学習済みのモデルに追加のデータセットを用いて、モデルの調整を行うこと

■日本語対応しているライブラリ
・Mecab
C/C++で実装されている形態素解析エンジンです。Pythonでもライブラリとして使用することができます。高速で軽量なことが特徴です。
・janome
Python向けのオープンソースの形態素解析エンジンです。使いやすいインターフェースと高速な処理性能が特徴です。また簡単に使えるため、初学者からプロの開発者まで幅広い層に利用されています。


3、Pythonのjanomeを使用して、形態素解析を行う

(1)行うことの説明
自然言語処理を行う際、まずは形態素分析を行うことが一般的です。 そのため、今回は形態素解析の方法をご紹介します。ぜひ試してみてください。
ai_training_page
上の画像は弊社のPythonでAI・機械学習を学べる研修 ページです。
今回はこの研修の中の、赤枠で囲った「対象者」の 文に対して形態素分析を行います。
使用している研修ページはコチラ

(2)コードのご紹介
①以下のコードをコマンドプロンプトに入力する。
pip install janome

※Google colaboratoryを使用する場合は、
Google colaboratoryに①のコードを入力してください。

②以下のコードをGoogle colaboratoryやJupyter Notebookに入力する

from janome.tokenizer import Tokenizer

t = Tokenizer()

s = "・Pythonの基礎を学びたい方・機械学習の基本、基礎的な手法を学びたい方・Excelでデータ分析を行なってるが、Pythonで行いたい方"

for token in t.tokenize(s):
    print(token)

Google colaboratoryについては、こちらの記事もご覧ください。
環境構築不要!WebブラウザでPythonプログラミングができるGoogleColaboratoryについて

(3)実行結果
output_result
実行すると、上記のように文章が形態素ごとに分解され出力されます。
また、形態素がどのような品詞なのかも教えてくれます。


4、おわりに

今回は、自然言語処理でできることや、ライブラリについてご紹介しました。ぜひ、最後の形態素分析も試してみてください。
また、自然言語処理に限らず難しい処理を行う場合は、AI・機械学習の知識や理解が求められることが多いです。そのため、Pythonで分析や解析を行いたい方や、より高度な分析に興味のある方は、ぜひAI・機械学習についても調べてみてください。
いまさら聞けない?DX、AI、RPAの違い
AIがより主流になる時代がやってくる!?AIの主要8市場についてご紹介します!

この記事で、Python、自然言語処理への興味が増したと感じてもらえましたら幸いです。

関連研修