1. ホーム
  2. python

NLTKによるストップワード除去

2023-10-05 02:27:24

質問

nltk toolkitを使って、ユーザーが入力したテキストをストップワード除去して処理しようとしていますが、ストップワード除去によって、「and」、「or」、「not」などの単語が除去されてしまいます。これらの単語は、後にテキストをクエリとして処理する際に必要となる演算子なので、ストップワード除去処理後も残しておきたいのです。テキストクエリで演算子になる単語がどれなのか分からないし、不要な単語も削除したい。

どのように解決するのですか?

ストップワード・リストから取り出すオペレータ・ワードのリストを自分で作ることをお勧めします。セットは便利に引き算することができますので。

operators = set(('and', 'or', 'not'))
stop = set(stopwords...) - operators

そうすると、単純にある単語が in または not in を使えば、オペレータがストップワードリストの一部であるかどうかに依存することなく、セットを作成することができます。その後、後で別のストップワードリストに切り替えたり、演算子を追加したりすることができます。

if word.lower() not in stop:
    # use word