ホームページ > テクノロジー周辺機器 > IT業界 > Pythonでの自然言語処理を開始します

Pythonでの自然言語処理を開始します

Joseph Gordon-Levitt
リリース: 2025-02-10 10:51:09
オリジナル
746 人が閲覧しました

Getting Started with Natural Language Processing in Python

今日の世界では、ソーシャルメディアのコメント、閲覧履歴、顧客フィードバックなどのテキストデータなど、大量のデータが構造化されていません。大規模なテキストデータに直面して、どこで分析を開始するかわかりませんか? PythonのNatural Language Processing(NLP)テクノロジーが役立ちます!

このチュートリアルは、NLPのコアコンセプトを使用し、Pythonのテキストデータを分析するようにガイドするように設計されています。テキストを小さなユニット(単語変態)に分解し、単語をSTEM形式(STEM抽出と形態学的回復)に正規化する方法と、さらなる分析の準備のためにドキュメントをクリーンアップする方法を学びます。

始めましょう!

コアポイント

  • PythonのNatural Language Processing(NLP)には、単語要素にテキストを壊し、単語をSTEM形式に正規化し、さらに分析するためのクリーニングドキュメントが含まれます。 PythonのNLTKライブラリを使用して、これらの操作を実行します。
  • 単語を幹形式に変換するための2つの手法は、STEM抽出と語彙形式の復元です。 STEM抽出は、単語の補完原理を削除する単純なアルゴリズムです。
  • NLPでのデータのクリーニングには、句読点や停止単語(「i」、「a」、「the」などの一般的な単語など)を削除します。これらの単語は、テキストを分析するときにほとんど意味がないためです。
  • テキストをクリーニングした後、nltkの
  • クラスを使用して単語頻度を見つけることができます。これは、テキストで一般的な用語を見つけるのに非常に便利です。 FreqDist

予防策 このチュートリアルでは、PythonのNLTKライブラリを使用して、テキスト上のすべてのNLP操作を実行します。このチュートリアルを書くとき、NLTKバージョン3.4を使用していました。端末にPIPコマンドを使用してライブラリをインストールできます。

システムにインストールされているNLTKバージョンを確認するには、ライブラリをPythonインタープリターにインポートしてバージョンを確認できます。

このチュートリアルでは、NLTKで特定の操作を実行するには、特定のリソースをダウンロードする必要がある場合があります。必要に応じて各リソースについて説明します。
pip install nltk==3.4
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ただし、チュートリアルの後期段階でリソースを1つずつダウンロードしないようにしたい場合は、すべてのリソースを一度にダウンロードできます。

import nltk
print(nltk.__version__)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ステップ1:単語変態

コンピューターシステムは自然言語を理解できません。自然言語を扱う最初のステップは、元のテキストを単語要素に変換することです。単語要素は、何らかの意味を持つ連続文字の組み合わせです。文字の要素に文章を分割するのはあなた次第です。たとえば、簡単な方法は、文をスペースで分割して1つの単語に分解することです。
python -m nltk.downloader all
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
NLTKライブラリでは、

関数を使用して文字列を語彙要素に変換できます。ただし、最初にPunktリソースをダウンロードする必要があります。ターミナルで次のコマンドを実行します:

次に、

から

からインポートする必要があります。

word_tokenize()コードの出力は次のとおりです。

pip install nltk==3.4
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

は、スペースに基づいて文字列を分割するだけでなく、句読点を単語要素に分離することに気付くでしょう。句読点を維持または削除することは、分析のニーズに依存します。 word_tokenize

ステップ2:単語をSTEMフォームに変換します

自然言語を扱うとき、あなたはしばしば同じ言葉のさまざまな文法形式があることに気付くことがよくあります。たとえば、「go」、「going」、「gone」はすべて、同じ動詞「go」の異なる形式です。

プロジェクトはさまざまな文法形式の単語を保存する必要があるかもしれませんが、同じ単語のさまざまな文法形式をその茎形式に変換する方法を議論しましょう。単語をSTEMフォームに変換するために使用できる2つの手法があります。

最初の手法は、抽出を発生させることです。 STEM抽出は、単語の接辞を削除する単純なアルゴリズムです。 NLTKで利用可能なさまざまなステム抽出アルゴリズムがあります。このチュートリアルでは、Porter Algorithmを使用します。

最初に

からnltk.stem.porterをインポートします。次に、ステムを初期化してPorterStemmer変数に抽出し、次にstemmerメソッドを使用して、次の単語の茎の形を見つけます。 .stem()

上記のコードの出力はGOです。上記の他の形態の「GO」のステム抽出器を実行すると、ステム抽出器が同じ幹形式「GO」を返していることがわかります。ただし、ステムの抽出は、単語の接辞の削除に基づく単純なアルゴリズムであるため、単語が言語で使用される頻度が低い場合に失敗します。
import nltk
print(nltk.__version__)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

たとえば、「構成」という単語に茎の抽出器を使用しようとすると、直感的ではありません。

出力が「構成」であることに気付くでしょう。

python -m nltk.downloader all
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
この問題は、特定のコンテキストで単語の幹形式を検索するより複雑なアプローチをとることで解決できます。このプロセスは、単語形式の削減と呼ばれます。単語の形状の復元は、テキストのコンテキストと語彙に基づいて単語を正常にします。 nltkでは、

クラスを使用して、文の形態学的回復を実行できます。

最初に、PythonターミナルのNLTKダウンローダーからWordNetリソースをダウンロードする必要があります。 WordNetLemmatizer

ダウンロードが完了したら、

クラスをインポートして初期化する必要があります。

nltk.download('punkt')
ログイン後にコピー
ログイン後にコピー
形態修復者を使用するには、

メソッドを使用します。単語とコンテキストの2つのパラメーターを受け入れます。この例では、「V」をコンテキストとして使用します。 WordNetLemmatizerメソッドの出力を表示した後、コンテキストをさらに検討します。

from nltk.tokenize import word_tokenize
print(word_tokenize("Hi, this is a nice hotel."))
ログイン後にコピー
ログイン後にコピー

メソッドは、「構成」という単語をその茎形式「構成」に正しく変換することに気付くでしょう。また、アルゴリズムがより複雑であるため、単語の形状の復元がステミング抽出よりも時間がかかることに気付くでしょう。 .lemmatize()

.lemmatize()メソッドの2番目のパラメーターをプログラム的に決定する方法を確認しましょう。 nltkには、文の単語のコンテキストを決定するのに役立つpos_tag()関数があります。ただし、最初にaveraged_perceptron_taggerリソースをダウンロードする必要があります:

pip install nltk==3.4
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

次に、pos_tag()関数をインポートして、文で実行します:

import nltk
print(nltk.__version__)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力がペアリストであることに気付くでしょう。各ペアには、テキスト全体の単語要素のコンテキストを表す単語要素とそのタグが含まれています。句読点のラベル自体は次のとおりです。

python -m nltk.downloader all
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
各単語のコンテキストをデコードする方法は?以下は、Web上のすべてのタグの完全なリストとそれらに対応する意味です。すべての名詞には「N」から始まるラベルがあり、すべての動詞には「V」から始まるラベルがあります。この情報は、

メソッドの2番目のパラメーターで使用できます。 .lemmatize()

上記のコードの出力は次のとおりです。
nltk.download('punkt')
ログイン後にコピー
ログイン後にコピー

この出力は予想通りであり、「構成」と「治安判事」はそれぞれ「構成」と「治安判事」に変換されます。

from nltk.tokenize import word_tokenize
print(word_tokenize("Hi, this is a nice hotel."))
ログイン後にコピー
ログイン後にコピー

ステップ3:データのクリーニング

データを準備する次のステップは、データをクリーンアップし、分析に意味を追加しないものを削除することです。全体として、句読点と停止単語を分析から削除する方法について説明します。

句読点を削除することはかなり単純な作業です。

ライブラリの

オブジェクトには、英語のすべての句読点が含まれています。

stringこのコードスニペットの出力は次のとおりです。 punctuation

単語要素から句読点を削除するには、次のコードを単純に実行できます。
<code>['Hi', ',', 'this', 'is', 'a', 'nice', 'hotel', '.']</code>
ログイン後にコピー

次に、停止単語を削除する方法に焦点を当てます。停止単語は、「i」、「a」、「the」などの言語で一般的に使用される単語であり、テキストを分析するとき、これらの単語はほとんど意味を与えません。したがって、分析から停止単語を削除します。まず、NLTKダウンローダーからStopwordsリソースをダウンロード:

from nltk.stem.porter import PorterStemmer
stemmer = PorterStemmer()
print(stemmer.stem("going"))
ログイン後にコピー
ダウンロードが完了した後、から

からインポートし、「英語」をパラメーターとして使用します。これが英語の179のストップワードのリストです:
print(stemmer.stem("constitutes"))
ログイン後にコピー

単語の形状復元例とこのセクションで説明した概念を組み合わせて、次の関数
nltk.download('wordnet')
ログイン後にコピー
を作成できます。さらに、ストップワードリストの一部であるかどうかを比較する前に、単語を小文字に変換します。このように、文の先頭に停止単語が表示されて大文字になった場合、私たちはそれをキャプチャすることができます:

nltk.corpus この例の出力は次のとおりです stopwords words()ご覧のとおり、句読点と停止単語は削除されています。

単語の頻度分布

NLPの基本的なクリーニング技術に精通しているので、テキストの単語の頻度を見つけてみましょう。この演習では、グーテンベルクプロジェクトで無料で利用できるおとぎ話「ネズミ、鳥、ソーセージ」のテキストを使用します。このおとぎ話のテキストをひもtextに保存します。

最初に、textを掛けてから、上記のclean_data

を使用してクリーンアップします。
pip install nltk==3.4
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

テキスト内の単語の頻度分布を見つけるには、nltkのFreqDistクラスを使用できます。単語要素をパラメーターとして使用してクラスを初期化します。次に、一般的な用語を見つけるために.most_common()メソッドを使用します。この場合、トップ10の用語を見つけてみましょう:

import nltk
print(nltk.__version__)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

以下は、このおとぎ話で最も頻繁に見られる10の用語です:

python -m nltk.downloader all
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

期待によると、最も一般的な3つの用語は、おとぎ話の3つの主人公です。

テキストを分析する場合、単語の頻度は重要ではない場合があります。一般的に、NLPの次のステップは、ドキュメントのセットにおける単語の重要性を示す統計(Word Frequency-inverse Document頻度)を生成することです。

結論

このチュートリアルでは、Pythonでの自然言語処理についての予備的な理解があります。テキストを語彙要素に変換し、単語を茎の形に変換し、最後にテキストをクリーニングして、分析に意味を追加しない部分を削除します。

このチュートリアルでは、単純なNLPタスクを見ている間、探索すべき他の多くの手法があります。たとえば、テキストが議論する可能性のある一般的なトピックを見つけることを目的として、テキストデータのトピックモデリングを実行することをお勧めします。 NLPのより複雑なタスクは、センチメント分析モデルを実装して、テキストの背後にある感情を決定することです。

コメントや質問はありますか? Twitterでお気軽にご連絡ください。

Python(FAQ)を使用した自然言語処理に関するよくある質問自然言語処理(NLP)と自然言語理解(NLU)の主な違いは何ですか? 自然言語処理(NLP)および自然言語理解(NLU)は、しばしば混乱する人工知能の2つのサブフィールドです。 NLPは、自然言語を使用してコンピューターと対話するためのすべての方法を含むより広範な概念です。これには、人間の言語の理解と生成が含まれます。一方、NLUは、側面を理解することを専門とするNLPのサブセットです。アルゴリズムを使用して、貴重な方法で人間の言語を理解して解釈することが含まれます。

PythonのNLPモデルの精度を改善する方法は?

NLPモデルの精度を改善するには、さまざまな戦略が含まれます。まず、より多くのトレーニングデータを使用できます。モデルの学習データが多いほど、パフォーマンスが向上します。次に、異なるNLP技術の使用を検討します。たとえば、単語の袋(弓)を使用している場合、WordFrequency-inverse Document頻度(TF-IDF)またはWord2Vecを試してみてください。最後に、モデルのパラメーターを微調整すると、大幅な改善につながる可能性があります。

現実の世界におけるNLPの一般的なアプリケーションは何ですか?

NLPには、現実の世界で幅広いアプリケーションがあります。これらには、言語翻訳、センチメント分析、チャットボット、SiriやAlexaなどの音声アシスタント、テキストサマリー、電子メールスパム検出が含まれます。

NLPの語彙化はどのように機能しますか?

単語変態は、テキストを単一の単語または単語要素に分解するプロセスです。これは、モデルがテキストを理解して分析できるため、NLPの重要なステップです。 Pythonでは、nltkライブラリのword_tokenize関数を使用して語彙化を実行できます。

NLPにおける停止単語の役割は何ですか?

停止単語は、NLPの前処理段階で多くの場合除外される一般的な単語です。例には、「IS」、「「」、「」などが含まれます。これらの単語を削除すると、NLPモデルのパフォーマンスの向上に役立ちます。

NLPで複数の言語を処理する方法は?

NLPで複数の言語を処分することは、文法、構文、語彙の違いにより困難な場合があります。ただし、PythonのNLTKライブラリは複数の言語をサポートしています。また、

などの言語検出ライブラリを使用して、テキストの言語を識別して処理することもできます。 langdetect

NLPの幹抽出と語彙回復とは何ですか?

茎の抽出と形態学的修復は、単語を幹または根の形に単純化するために使用される手法です。それらの主な違いは、ステム抽出がしばしば存在しない単語を作成することが多く、単語の復元原理は単語をその言語的に正しいルート形式に減らすことです。

センチメント分析にNLPを使用する方法は?

感情分析には、テキストで表現された感情を決定することが含まれます。これは、さまざまなNLP技術を使用して実行できます。たとえば、PythonのTextBlobライブラリを使用してセンチメント分析を簡単に実行できます。

NLPのN-Meta構文は何ですか?

n Metagramは、特定のテキストまたは音声サンプルのN連続アイテムの連続シーケンスです。 NLPに使用されて、シーケンス内の次のアイテムを予測します。たとえば、バイナリ文法(n = 2)では、分析または予測のための単語ペアを検討します。

テキスト分類にNLPを使用する方法は?

テキスト分類には、テキストを事前定義されたカテゴリに分類することが含まれます。これは、さまざまなNLP技術と機械学習アルゴリズムを使用して実行できます。たとえば、機能抽出には単語の袋またはTF-IDFを使用して、これらの機能を分類のために機械学習モデルに入力できます。

以上がPythonでの自然言語処理を開始しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート