Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでNLTKを使ってストップワードを削除する方法

ストップワードとは

コンピュータが自然言語を処理する際、「the」「is」「a」のように極めて頻繁に出現するものの、ユーザーのニーズに合致する文書を選択するうえではほとんど価値をもたらさない単語があります。こうした単語は語彙から完全に除外されることがあり、「ストップワード(stop words)」と呼ばれます。

例えば、次の文を入力として与えた場合を考えてみましょう。

John is a person who takes care of the people around him.

ストップワードを削除すると、以下の出力が得られます。

['John', 'person', 'takes', 'care', 'people', 'around', '.']

NLTKのストップワードコーパス

NLTK(Natural Language Toolkit)には、こうしたストップワードのコレクションがあらかじめ用意されており、nltk.corpusモジュールから利用できます。この機能を使えば、任意の文章からストップワードを簡単にフィルタリングして除去できます。

なお、初回利用時にはストップワードおよびトークナイザー用のデータをダウンロードしておく必要があります。Pythonインタプリタで以下を実行してください。

import nltk
nltk.download('stopwords')
nltk.download('punkt')

実装例

実際にNLTKを使ってストップワードを除去するコード例を見てみましょう。

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

my_sent = "John is a person who takes care of people around him."
tokens = word_tokenize(my_sent)

filtered_sentence = [w for w in tokens if not w in stopwords.words()]

print(filtered_sentence)

出力

このコードを実行すると、以下の出力が得られます。

['John', 'person', 'takes', 'care', 'people', 'around', '.']

コードの解説

まずword_tokenize()で文章をトークン(単語)単位に分割します。続いてリスト内包表記を用い、stopwords.words()に含まれていない単語だけを抽出しています。その結果、元の文からストップワードが取り除かれたリストが出力されます。

この手法は、テキスト分類や検索エンジンの前処理など、ノイズとなる頻出語を排除したい場面で広く活用されています。

  1. PythonでリストからNとの距離がK以内の要素を削除する方法

    Pythonでは、リスト内の要素のうち、特定の基準値Nとの距離がK以内である要素を削除したいケースがあります。こうした処理を実現するには、リスト内包表記と条件式を組み合わせるのが最もシンプルで効率的な方法です。以下に具体的な実装例を示します。サンプルコードmy_list = [13, 52, 5, 45, 65, 61, 18] print(The list is :) print(my_list) K = 3 print(The value of K is ) print(K) N = 5 print(The value of N is ) print(N) my_result =

  2. PythonのPygameで画像を表示する方法

    Pygameは、Pythonでゲームやマルチメディアアプリケーションを開発するための定番マルチメディアライブラリです。本記事では、pygameモジュールを使用して、画像のサイズ(高さ・幅)やウィンドウ内での表示位置を考慮しながら、画面に画像を描画する方法を解説します。 画像表示の基本的な流れ 以下のサンプルプログラムでは、まずpygameモジュールを初期化し、ウィンドウのサイズとキャプション(タイトルバーの文字列)を設定します。その後、画像ファイルを読み込み、表示する座標を指定します。screen.blit()関数が実際に画面へ画像を描画し、whileループがウィンドウを閉じる操作(QUITイ