Python - Stemming dan Lemmatization
Di bidang Pemrosesan Bahasa Alami kami menemukan situasi di mana dua atau lebih kata memiliki akar yang sama. Misalnya, tiga kata setuju, setuju dan setuju memiliki akar kata yang sama setuju. Pencarian yang melibatkan salah satu dari kata-kata ini harus memperlakukannya sebagai kata yang sama yang merupakan kata dasar. Jadi menjadi penting untuk menghubungkan semua kata ke dalam akar kata mereka. Pustaka NLTK memiliki metode untuk melakukan penautan ini dan memberikan keluaran yang menunjukkan akar kata.
Program di bawah ini menggunakan Porter Stemming Algorithm untuk stemming.
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))
Ketika kita mengeksekusi kode di atas, hasilnya adalah sebagai berikut.
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
Lemmatisasi mirip dengan stemming tetapi membawa konteks pada kata-kata, jadi ini melangkah lebih jauh dengan menghubungkan kata-kata yang memiliki arti serupa ke satu kata. Misalnya jika sebuah paragraf memiliki kata-kata seperti mobil, kereta api dan mobil, maka itu akan menghubungkan semuanya dengan mobil. Dalam program di bawah ini kami menggunakan database leksikal WordNet untuk lemmatisasi.
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))
Ketika kita mengeksekusi kode di atas, hasilnya adalah sebagai berikut.
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