今日の世界では、ソーシャルメディアのコメント、閲覧履歴、顧客フィードバックなどのテキストデータなど、大量のデータが構造化されていません。大規模なテキストデータに直面して、どこで分析を開始するかわかりませんか? PythonのNatural Language Processing(NLP)テクノロジーが役立ちます!
このチュートリアルは、NLPのコアコンセプトを使用し、Pythonのテキストデータを分析するようにガイドするように設計されています。テキストを小さなユニット(単語変態)に分解し、単語をSTEM形式(STEM抽出と形態学的回復)に正規化する方法と、さらなる分析の準備のためにドキュメントをクリーンアップする方法を学びます。
始めましょう!
FreqDist
システムにインストールされているNLTKバージョンを確認するには、ライブラリをPythonインタープリターにインポートしてバージョンを確認できます。
このチュートリアルでは、NLTKで特定の操作を実行するには、特定のリソースをダウンロードする必要がある場合があります。必要に応じて各リソースについて説明します。pip install nltk==3.4
ただし、チュートリアルの後期段階でリソースを1つずつダウンロードしないようにしたい場合は、すべてのリソースを一度にダウンロードできます。
import nltk print(nltk.__version__)
ステップ1:単語変態
コンピューターシステムは自然言語を理解できません。自然言語を扱う最初のステップは、元のテキストを単語要素に変換することです。単語要素は、何らかの意味を持つ連続文字の組み合わせです。文字の要素に文章を分割するのはあなた次第です。たとえば、簡単な方法は、文をスペースで分割して1つの単語に分解することです。
python -m nltk.downloader all
から
からインポートする必要があります。
word_tokenize()
コードの出力は次のとおりです。
pip install nltk==3.4
word_tokenize
プロジェクトはさまざまな文法形式の単語を保存する必要があるかもしれませんが、同じ単語のさまざまな文法形式をその茎形式に変換する方法を議論しましょう。単語をSTEMフォームに変換するために使用できる2つの手法があります。
最初の手法は、抽出を発生させることです。 STEM抽出は、単語の接辞を削除する単純なアルゴリズムです。 NLTKで利用可能なさまざまなステム抽出アルゴリズムがあります。このチュートリアルでは、Porter Algorithmを使用します。
最初に
からnltk.stem.porter
をインポートします。次に、ステムを初期化してPorterStemmer
変数に抽出し、次にstemmer
メソッドを使用して、次の単語の茎の形を見つけます。
.stem()
import nltk print(nltk.__version__)
たとえば、「構成」という単語に茎の抽出器を使用しようとすると、直感的ではありません。
出力が「構成」であることに気付くでしょう。
python -m nltk.downloader all
クラスを使用して、文の形態学的回復を実行できます。
最初に、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
メソッドの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"))
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頻度)を生成することです。
このチュートリアルでは、単純なNLPタスクを見ている間、探索すべき他の多くの手法があります。たとえば、テキストが議論する可能性のある一般的なトピックを見つけることを目的として、テキストデータのトピックモデリングを実行することをお勧めします。 NLPのより複雑なタスクは、センチメント分析モデルを実装して、テキストの背後にある感情を決定することです。
コメントや質問はありますか? Twitterでお気軽にご連絡ください。
Python(FAQ)を使用した自然言語処理に関するよくある質問自然言語処理(NLP)と自然言語理解(NLU)の主な違いは何ですか? 自然言語処理(NLP)および自然言語理解(NLU)は、しばしば混乱する人工知能の2つのサブフィールドです。 NLPは、自然言語を使用してコンピューターと対話するためのすべての方法を含むより広範な概念です。これには、人間の言語の理解と生成が含まれます。一方、NLUは、側面を理解することを専門とするNLPのサブセットです。アルゴリズムを使用して、貴重な方法で人間の言語を理解して解釈することが含まれます。NLPには、現実の世界で幅広いアプリケーションがあります。これらには、言語翻訳、センチメント分析、チャットボット、SiriやAlexaなどの音声アシスタント、テキストサマリー、電子メールスパム検出が含まれます。
単語変態は、テキストを単一の単語または単語要素に分解するプロセスです。これは、モデルがテキストを理解して分析できるため、NLPの重要なステップです。 Pythonでは、nltkライブラリのword_tokenize
関数を使用して語彙化を実行できます。
停止単語は、NLPの前処理段階で多くの場合除外される一般的な単語です。例には、「IS」、「「」、「」などが含まれます。これらの単語を削除すると、NLPモデルのパフォーマンスの向上に役立ちます。
などの言語検出ライブラリを使用して、テキストの言語を識別して処理することもできます。 langdetect
センチメント分析にNLPを使用する方法は?
NLPのN-Meta構文は何ですか?
テキスト分類にNLPを使用する方法は?
以上がPythonでの自然言語処理を開始しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。