Natural Languange Processing atau biasa disingkat dengan NLP adalah ilmu yang mempelajari bagaimana interaksi manusia dengan mesin dengan menggunakan bahasa alami.
Bagaimana cara sistem seperti Google Assistant atau Alexa memahami instruksi yang kita berikan? Natural language processing adalah program yang digunakan untuk memahami instruksi tersebut. Jadi singkatnya NLP adalah jembatan agar manusia dan mesin saling berinteraksi.
Bagaimana cara bekerja dengan Natural Languange Processing?
Untuk bisa bekerja dengan Natural Languange Processing atau NLP kita perlu sebuah bahasa pemrograman python dan menginstall modul library yaitu Spacy atau NLTK.
Perbedaan antara keduanya adalah NLTK atau Natural Languange Toolkit merupakan library yang mempunyai fungsi NLP seperti klasifikasi, tokenization, stemming, tagging, parsing dsb. Sedangkan Spacy adalah library tingkat lanjut dari NLTK.
Pada artikel ini kita akan membahas bagaimana cara memisakan text menjadi sebuah kalimat, cara kerja Tokenization, dan cara kerja tagging. Pada tutorial kali ini kita akan menggunakan tools Colaboratory dari Google.
1. Dividing text into sentences
- Pertama install Spacy dan NLTK terlebih dahulu, Kenapa kita menggunakan dua library? karena kita akan membadingkan kecepatan antara keduanya.
pip install nltkpip install spacy
- Install modul yang diperlukan.
import nltknltk.download(‘punkt’)
!python -m spacy download en_core_web_sm
- Buat script membaca file .txt
filename = “/content/teks.txt”file = open(filename, “r”, encoding=”utf-8”)text = file.read()
- Buat file teks.txt di Colaboratory dan isi dengan 2 atau 3 kalimat didalamnya.
- Inisialisasi model punkt NLTK sebelumnya. (Jika menggunakan NLTK)
tokenizer = nltk.data.load("tokenizers/punkt/english.pickle")
- Mengubah teks menjadi kalimat.
sentences = tokenizer.tokenize(text)
- Untuk Full Codenya sebagai berikut.
import timeimport nltkimport spacytokenizer = nltk.data.load('tokenizers/punkt/english.pickle')nlp = spacy.load("en_core_web_sm")def read_text_file(filename):file = open(filename, "r", encoding="utf-8")return file.read()def preprocess_text(text):text = text.replace("\n", " ")return textdef divide_into_sentences_nltk(text):sentences = tokenizer.tokenize(text)return sentencesdef divide_into_sentences_spacy(text):doc = nlp(text)return [sentence.text for sentence in doc.sents]def divide_into_sentences(text):return divide_into_sentences_nltk(text)def main():txt_text = read_text_file("/content/teks.txt")txt_text = preprocess_text(txt_text)sentences = divide_into_sentences(txt_text)print(sentences)if __name__ == '__main__':start = time.time()main()print("%s s" % (time.time() - start))
- Hasil program ketika running.
2. Dividing sentences into words - Tokenization
- Install modul-modul yang diperlukan seperti langkah sebelumnya (Jika sudah terinstall lanjut step berikutnya)
- Buat script membaca file .txt
filename = “/content/teks.txt”file = open(filename, “r”, encoding=”utf-8”)text = file.read()
- Buat file teks.txt di Colaboratory dan isi dengan 2 atau 3 kalimat seperti pada cara sebelumnya.
- Mengubah teks menjadi kata. (Jika menggunakan NLTK)
words = nltk.tokenize.word_tokenize(text)
- Untuk Full Codenya sebagai berikut.
import nltkimport timeimport spacynlp = spacy.load("en_core_web_sm")def read_text_file(filename):file = open(filename, "r", encoding="utf-8")return file.read()def preprocess_text(text):text = text.replace("\n", " ")return textdef tokenize_nltk(text):return nltk.tokenize.word_tokenize(text)def tokenize_spacy(text):doc = nlp(text)return [token.text for token in doc]def tokenize(text):return tokenize_spacy(text)def main():txt_text = read_text_file("/content/teks.txt")txt_text = preprocess_text(txt_text)words = tokenize(txt_text)print(words)if __name__ == "__main__":start = time.time()main()print("%s s" % (time.time() - start))
- Hasil program ketika running.
3. Tagging
- Install modul-modul yang diperlukan seperti langkah sebelumnya (Jika sudah terinstall lanjut step berikutnya)
- Buat script membaca file .txt
filename = “/content/teks.txt”file = open(filename, “r”, encoding=”utf-8”)text = file.read()
- Buat file teks.txt di Colaboratory dan isi dengan 2 atau 3 kalimat seperti pada cara sebelumnya.
- Inisialisasi Spacy Engine (Jika menggunakan Spacy)
nlp = spacy.load("en_core_web_sm")
- Menggunakan Spacy engine untuk memroses teks
doc = nlp(text)
- Mendapatkan list tuples yang berisi kata dan tag part-of-speech
words = [token.text for token in doc]pos = [token.pos_ for token in doc]word_pos_tuples = list(zip(words, pos))
- Untuk Full Codenya sebagai berikut.
import nltkimport timeimport spacytokenizer = nltk.data.load("tokenizers/punkt/english.pickle")nlp = spacy.load("en_core_web_sm")def read_text_file(filename):file = open(filename, "r", encoding="utf-8")return file.read()def preprocess_text(text):text = text.replace("\n", " ")return textdef divide_into_sentences_nltk(text):sentences = tokenizer.tokenize(text)return sentencesdef tokenize_nltk(text):return nltk.tokenize.word_tokenize(text)def pos_tag_spacy(text):doc = nlp(text)words = [token.text for token in doc]pos = [token.pos_ for token in doc]return list(zip(words, pos))def pos_tag_nltk(text):words = tokenize_nltk(text)words_with_pos = nltk.pos_tag(words)return words_with_posdef pos_tag(text):text = preprocess_text(text)words_with_pos = pos_tag_spacy(text)return words_with_posdef main():txt_text = read_text_file("/content/teks.txt")txt_text = preprocess_text(txt_text)words_with_pos = pos_tag(txt_text)print(words_with_pos)if __name__ == '__main__':start = time.time()main()print("%s s" % (time.time() - start))
- Hasil program ketika running.
thanks
ReplyDelete