Minggu, 19 Mei 2019

STEMMING IN PYTHON

Install LIB:
pip install -U nltk
pip install Sastrawi  

Selanjutnya kita diharuskan mengunduh paket tambahan dari modul NLTK ini dengan menjalankan kode dibawah.
import nltk

nltk.download()



#######################CODE:

from nltk.tokenize import sent_tokenize, word_tokenize
from nltk.corpus import stopwords
from nltk.stem import PorterStemmer

import nltk
import string

kalimat = "[MOJOK.co] Manfaat monitoring, singing dan jogging setiap pagi yang pertama adalah meredakan stres. Olahraga itu seperti kode bagi tubuh untuk memproduksi hormon endorfin, agen perangsang rasa bahagia. Dilakukan di pagi hari, ketika udara masih bersih, sejuk, jalanan lengang, gunung terlihat jelas di sebelah utara, manfaat jogging bisa kamu rasakan secara maksimal."
kalimat = kalimat.translate(str.maketrans('','',string.punctuation)).lower() #menghilangkan tanda baca
case_folding = kalimat.lower() #casefolding

tokens = nltk.tokenize.word_tokenize(case_folding) #list
#print(tokens)

kemunculan = nltk.FreqDist(tokens)
#print(kemunculan.most_common())

listStopword =  set(stopwords.words('indonesian'))
st = PorterStemmer()

removed = []
stemmed = []
for t in tokens:
    if t not in listStopword:
        removed.append(t)
        stemmed.append(st.stem(t))   #include STEMMING in English
     
#print(removed) #list
#print(stemmed) #list

kemunculan = nltk.FreqDist(stemmed)
print(kemunculan.most_common())

mydistinct = set(stemmed)                #type SET
kemunculan = nltk.FreqDist(mydistinct)
print(kemunculan.most_common())
#print(mydistinct)
######################################Convert  SET to List
listdata=[]
for letter in set(mydistinct):
    listdata.append(letter)
print(listdata)



OUT:
[('manfaat', 2), ('jog', 2), ('pagi', 2), ('mojokco', 1), ('monitor', 1), ('sing', 1), ('meredakan', 1), ('stre', 1), ('olahraga', 1), ('kode', 1), ('tubuh', 1), ('memproduksi', 1), ('hormon', 1), ('endorfin', 1), ('agen', 1), ('perangsang', 1), ('bahagia', 1), ('udara', 1), ('bersih', 1), ('sejuk', 1), ('jalanan', 1), ('lengang', 1), ('gunung', 1), ('sebelah', 1), ('utara', 1), ('rasakan', 1), ('maksim', 1)]
[('maksim', 1), ('bahagia', 1), ('hormon', 1), ('stre', 1), ('memproduksi', 1), ('utara', 1), ('rasakan', 1), ('kode', 1), ('manfaat', 1), ('gunung', 1), ('endorfin', 1), ('jog', 1), ('lengang', 1), ('mojokco', 1), ('tubuh', 1), ('perangsang', 1), ('sejuk', 1), ('meredakan', 1), ('udara', 1), ('agen', 1), ('bersih', 1), ('jalanan', 1), ('sing', 1), ('olahraga', 1), ('sebelah', 1), ('pagi', 1), ('monitor', 1)]
['maksim', 'bahagia', 'hormon', 'mojokco', 'stre', 'memproduksi', 'utara', 'tubuh', 'rasakan', 'kode', 'perangsang', 'manfaat', 'gunung', 'sejuk', 'meredakan', 'udara', 'agen', 'bersih', 'jalanan', 'sing', 'olahraga', 'sebelah', 'endorfin', 'jog', 'pagi', 'monitor', 'lengang']

++++++++++++



STEMMING INDONESIA

from nltk.tokenize import sent_tokenize, word_tokenize
from nltk.corpus import stopwords
from nltk.stem import PorterStemmer
from Sastrawi.Stemmer.StemmerFactory import StemmerFactory

import nltk
import string

#sastrawi
factory = StemmerFactory()
stemmerIndonesia = factory.create_stemmer()

kalimat = "[MOJOK.co] Manfaat monitoring, singing dan jogging setiap pagi yang pertama adalah meredakan stres. Olahraga itu seperti kode bagi tubuh untuk memproduksi hormon endorfin, agen perangsang rasa bahagia. Dilakukan di pagi hari, ketika udara masih bersih, sejuk, jalanan lengang, gunung terlihat jelas di sebelah utara, manfaat jogging bisa kamu rasakan secara maksimal."
kalimat = kalimat.translate(str.maketrans('','',string.punctuation)).lower() #menghilangkan tanda baca
case_folding = kalimat.lower() #casefolding

tokens = nltk.tokenize.word_tokenize(case_folding) #list
#print(tokens)

kemunculan = nltk.FreqDist(tokens)
#print(kemunculan.most_common())

listStopword =  set(stopwords.words('indonesian'))
stemmerEnglish = PorterStemmer()

removed = []
stemmed = []
for t in tokens:
    if t not in listStopword:
        removed.append(t)
        t2=stemmerEnglish.stem(t)                #Stem in English
        t3=stemmerIndonesia.stem(t2)             #Stem in sastrawi
        stemmed.append(t3)
 
#print(removed) #list
#print(stemmed) #list

kemunculan = nltk.FreqDist(stemmed)
print(kemunculan.most_common())

mydistinct = set(stemmed)                #type SET
kemunculan = nltk.FreqDist(mydistinct)
print(kemunculan.most_common())
#print(mydistinct)
#####################################stemming
listdata=[]
for letter in set(mydistinct):#Convert  SET to List
    listdata.append(letter)
print(listdata)

out
[('manfaat', 2), ('jog', 2), ('pagi', 2), ('mojokco', 1), ('monitor', 1), ('sing', 1), ('reda', 1), ('stre', 1), ('olahraga', 1), ('kode', 1), ('tubuh', 1), ('produksi', 1), ('hormon', 1), ('endorfin', 1), ('agen', 1), ('rangsang', 1), ('bahagia', 1), ('udara', 1), ('bersih', 1), ('sejuk', 1), ('jalan', 1), ('lengang', 1), ('gunung', 1), ('belah', 1), ('utara', 1), ('rasa', 1), ('maksim', 1)]
[('maksim', 1), ('bahagia', 1), ('hormon', 1), ('stre', 1), ('utara', 1), ('kode', 1), ('manfaat', 1), ('gunung', 1), ('reda', 1), ('endorfin', 1), ('jog', 1), ('lengang', 1), ('rangsang', 1), ('jalan', 1), ('mojokco', 1), ('tubuh', 1), ('belah', 1), ('sejuk', 1), ('udara', 1), ('bersih', 1), ('agen', 1), ('sing', 1), ('produksi', 1), ('rasa', 1), ('olahraga', 1), ('pagi', 1), ('monitor', 1)]
['maksim', 'jalan', 'bahagia', 'hormon', 'mojokco', 'stre', 'tubuh', 'utara', 'belah', 'kode', 'manfaat', 'gunung', 'sejuk', 'udara', 'reda', 'bersih', 'agen', 'sing', 'produksi', 'rasa', 'olahraga', 'endorfin', 'jog', 'pagi', 'monitor', 'lengang', 'rangsang']

Reff: https://github.com/sastrawi/sastrawi


Tidak ada komentar:

Posting Komentar