Python-ステミングとレマタイゼーション
自然言語処理の分野では、2つ以上の単語が共通のルートを持っている状況に遭遇します。たとえば、「同意する」、「同意する」、「同意する」の3つの単語は、同じ語根の「同意する」です。これらの単語のいずれかを含む検索では、それらをルート単語である同じ単語として扱う必要があります。したがって、すべての単語をそれらのルート単語にリンクすることが不可欠になります。NLTKライブラリには、このリンクを実行し、ルートワードを示す出力を提供するメソッドがあります。
以下のプログラムは、ステミングにポーターステミングアルゴリズムを使用しています。
import nltk
from nltk.stem.porter import PorterStemmer
porter_stemmer = PorterStemmer()
word_data = "It originated from the idea that there are readers who prefer learning new skills from the comforts of their drawing rooms"
# First Word tokenization
nltk_tokens = nltk.word_tokenize(word_data)
#Next find the roots of the word
for w in nltk_tokens:
print "Actual: %s Stem: %s" % (w,porter_stemmer.stem(w))
上記のコードを実行すると、次のような結果になります。
Actual: It Stem: It
Actual: originated Stem: origin
Actual: from Stem: from
Actual: the Stem: the
Actual: idea Stem: idea
Actual: that Stem: that
Actual: there Stem: there
Actual: are Stem: are
Actual: readers Stem: reader
Actual: who Stem: who
Actual: prefer Stem: prefer
Actual: learning Stem: learn
Actual: new Stem: new
Actual: skills Stem: skill
Actual: from Stem: from
Actual: the Stem: the
Actual: comforts Stem: comfort
Actual: of Stem: of
Actual: their Stem: their
Actual: drawing Stem: draw
Actual: rooms Stem: room
Lemmatizationは、ステミングと似ていますが、単語にコンテキストをもたらします。したがって、同じ意味の単語を1つの単語にリンクすることで、さらに一歩進んでいます。たとえば、段落に車、電車、自動車などの単語が含まれている場合、それらすべてが自動車にリンクされます。以下のプログラムでは、語彙化のためにWordNet字句データベースを使用します。
import nltk
from nltk.stem import WordNetLemmatizer
wordnet_lemmatizer = WordNetLemmatizer()
word_data = "It originated from the idea that there are readers who prefer learning new skills from the comforts of their drawing rooms"
nltk_tokens = nltk.word_tokenize(word_data)
for w in nltk_tokens:
print "Actual: %s Lemma: %s" % (w,wordnet_lemmatizer.lemmatize(w))
上記のコードを実行すると、次のような結果になります。
Actual: It Lemma: It
Actual: originated Lemma: originated
Actual: from Lemma: from
Actual: the Lemma: the
Actual: idea Lemma: idea
Actual: that Lemma: that
Actual: there Lemma: there
Actual: are Lemma: are
Actual: readers Lemma: reader
Actual: who Lemma: who
Actual: prefer Lemma: prefer
Actual: learning Lemma: learning
Actual: new Lemma: new
Actual: skills Lemma: skill
Actual: from Lemma: from
Actual: the Lemma: the
Actual: comforts Lemma: comfort
Actual: of Lemma: of
Actual: their Lemma: their
Actual: drawing Lemma: drawing
Actual: rooms Lemma: room