Natural-language-processing-python

提供:Dev Guides
移動先:案内検索

自然言語処理-Python

この章では、Pythonを使用した言語処理について学習します。

次の機能により、Pythonは他の言語とは異なります-

  • * Pythonは解釈されます*-実行時にインタープリターがPythonを処理するため、Pythonプログラムを実行する前にコンパイルする必要はありません。
  • Interactive -インタプリタと直接対話してPythonプログラムを作成できます。
  • オブジェクト指向-Pythonは本質的にオブジェクト指向であり、プログラミングのこの技術の助けを借りてオブジェクト内にコードをカプセル化するため、この言語はプログラムを記述しやすくします。
  • 初心者は簡単に学ぶことができます-Pythonは非常に理解しやすいため、初心者の言語とも呼ばれ、幅広いアプリケーションの開発をサポートします。

前提条件

リリースされたPython 3の最新バージョンは、Python 3.7.1です。Windows、Mac OS、およびLinux OSのほとんどのフレーバーで使用できます。

  • Windowsの場合、リンクhttps://www.python.org/downloads/windows/[www.python.org/downloads/windows/]にアクセスして、Pythonをダウンロードおよびインストールできます。
  • MAC OSの場合、リンクhttps://www.python.org/downloads/mac-osx/.[www.python.org/downloads/mac-osx/]を使用できます。
  • Linuxの場合、Linuxの異なるフレーバーは、新しいパッケージのインストールに異なるパッケージマネージャーを使用します。
  • たとえば、Ubuntu LinuxにPython 3をインストールするには、ターミナルから次のコマンドを使用できます-
$sudo apt-get install python3-minimal

Pythonプログラミングの詳細については、Python 3の基本的なチュートリアル– link:/python3/index [Python 3]をご覧ください。

NLTKの使用開始

英語でテキスト分析を行うために、PythonライブラリNLTK(Natural Language Toolkit)を使用します。 自然言語ツールキット(NLTK)は、英語などの自然言語のテキストで見つかった品詞を識別してタグ付けするために特に設計されたPythonライブラリのコレクションです。

NLTKのインストール

NLTKの使用を開始する前に、インストールする必要があります。 次のコマンドの助けを借りて、Python環境にインストールできます-

pip install nltk

私たちがAnacondaを使用している場合、NLTKのCondaパッケージは次のコマンドを使用して構築できます-

conda install -c anaconda nltk

NLTKのデータをダウンロードする

NLTKをインストールした後、もう1つの重要なタスクは、プリセットされたテキストリポジトリをダウンロードして、簡単に使用できるようにすることです。 ただし、その前に、他のPythonモジュールをインポートする方法でNLTKをインポートする必要があります。 次のコマンドは、NLTKのインポートに役立ちます-

import nltk

今、次のコマンドの助けを借りてNLTKデータをダウンロードします-

nltk.download()

NLTKの利用可能なすべてのパッケージをインストールするのに時間がかかります。

その他の必要なパッケージ

*gensim* や *pattern* などの他のPythonパッケージも、NLTKを使用してテキスト分析や自然言語処理アプリケーションを構築するために非常に必要です。 パッケージは以下に示すようにインストールできます-

ゲンシム

gensimは、多くのアプリケーションで使用できる堅牢なセマンティックモデリングライブラリです。 次のコマンドでインストールできます-

pip install gensim

パターン

*gensim* パッケージを適切に動作させるために使用できます。 次のコマンドは、パターンのインストールに役立ちます-
pip install pattern

トークン化

トークン化は、指定されたテキストをトークンと呼ばれる小さな単位に分割するプロセスとして定義できます。 単語、数字、または句読点はトークンにすることができます。 単語のセグメンテーションとも呼ばれます。

入力-ベッドと椅子は家具の一種です。

ベッドと椅子

NLTKが提供するトークン化用のさまざまなパッケージがあります。 要件に基づいてこれらのパッケージを使用できます。 パッケージとそのインストールの詳細は次のとおりです-

sent_tokenizeパッケージ

このパッケージを使用して、入力テキストを文に分割できます。 次のコマンドを使用してインポートできます-

from nltk.tokenize import sent_tokenize

word_tokenizeパッケージ

このパッケージを使用して、入力テキストを単語に分割できます。 次のコマンドを使用してインポートできます-

from nltk.tokenize import word_tokenize

WordPunctTokenizerパッケージ

このパッケージを使用して、入力テキストを単語と句読点に分割できます。 次のコマンドを使用してインポートできます-

from nltk.tokenize import WordPuncttokenizer

ステミング

文法的な理由により、言語には多くのバリエーションがあります。 他の言語と同様に、言語も異なる形の単語を持っているという意味でのバリエーション。 たとえば、 _ democracy ' 、 ' democratic_ 、および democratization などの単語。 機械学習プロジェクトの場合、上記のようなこれらの異なる単語が同じ基本形式を持っていることを機械が理解することは非常に重要です。 そのため、テキストを分析しながら単語の基本形を抽出すると非常に便利です。

ステミングは、単語の両端を切り刻んで単語の基本形を抽出するのに役立つヒューリスティックプロセスです。

NLTKモジュールによって提供されるステミングのさまざまなパッケージは次のとおりです-

PorterStemmerパッケージ

このステミングパッケージでは、Porterのアルゴリズムを使用して、単語の基本形を抽出します。 次のコマンドの助けを借りて、このパッケージをインポートできます-

from nltk.stem.porter import PorterStemmer

たとえば、 'write' は、このステマーへの入力として指定された単語 'writing' の出力になります。

LancasterStemmerパッケージ

この語幹解析パッケージでは、ランカスターのアルゴリズムを使用して、単語の基本形を抽出します。 次のコマンドの助けを借りて、このパッケージをインポートできます-

from nltk.stem.lancaster import LancasterStemmer

たとえば、*「writ」*は、このステマーへの入力として指定された単語「書き込み」*の出力になります。

SnowballStemmerパッケージ

このステミングパッケージでは、スノーボールのアルゴリズムを使用して、単語の基本形を抽出します。 次のコマンドの助けを借りて、このパッケージをインポートできます-

from nltk.stem.snowball import SnowballStemmer

たとえば、 'write' は、このステマーへの入力として指定された単語 'writing' の出力になります。

補題

単語の基本形を抽出する別の方法であり、通常は語彙および形態素解析を使用して、語尾変化を除去することを目的としています。 レンマ化後、単語の基本形はレンマと呼ばれます。

NLTKモジュールは、レンマ化のために次のパッケージを提供します-

WordNetLemmatizerパッケージ

このパッケージは、名詞として使用されるか動詞として使用されるかに応じて、単語の基本形を抽出します。 次のコマンドを使用して、このパッケージをインポートできます-

from nltk.stem import WordNetLemmatizer

POSタグのカウント-チャンキング

品詞(POS)と短いフレーズの識別は、チャンクの助けを借りて行うことができます。 これは、自然言語処理の重要なプロセスの1つです。 トークンを作成するためのトークン化のプロセスについて知っているように、チャンク化は実際にそれらのトークンのラベル付けを行うことです。 言い換えれば、チャンク化プロセスの助けを借りて文の構造を取得できると言えます。

次の例では、NLTK Pythonモジュールを使用して、文の名詞句チャンクを検索するチャンクのカテゴリである名詞句チャンキングを実装します。

名詞句のチャンキングを実装するには、次の手順を考慮してください-

ステップ1:チャンク文法の定義

このステップでは、チャンクの文法を定義する必要があります。 それは私たちが従う必要がある規則で構成されます。

ステップ2:チャンクパーサーの作成

次に、チャンクパーサーを作成する必要があります。 文法を解析し、出力を提供します。

ステップ3:出力

このステップでは、出力をツリー形式で取得します。

NLPスクリプトの実行

NLTKパッケージをインポートすることから始めます-

import nltk

次に、文を定義する必要があります。

ここに、

  • DTは決定要因です
  • VBPは動詞です
  • JJは形容詞です
  • INは前置詞です
  • NNは名詞です
sentence = [("a", "DT"),("clever","JJ"),("fox","NN"),("was","VBP"),
   ("jumping","VBP"),("over","IN"),("the","DT"),("wall","NN")]

次に、文法は正規表現の形式で指定する必要があります。

grammar = "NP:{<DT>?<JJ>*<NN>}"

次に、文法を解析するためのパーサーを定義する必要があります。

parser_chunking = nltk.RegexpParser(grammar)

今、パーサーは次のように文を解析します-

parser_chunking.parse(sentence)

次に、出力は次のように変数になります。

Output = parser_chunking.parse(sentence)

さて、次のコードは、出力をツリー形式で描画するのに役立ちます。

output.draw()

NLPスクリプトの実行