Pada artikel ini, saya akan memperkenalkan Anda pada berbagai cara preprocessing teks yang merupakan salah satu level terpenting dan proyek NLP. Di sini kita hanya akan berbicara tentang alat-alat yang berguna untuk bahasa Inggris, meskipun dalam bahasa lain hanya alat-alat yang berbeda dan sebagian besar bahasa lain mencakup semua langkah yang akan kami perkenalkan.
Normalisasi teks meliputi
- Mengubah semua huruf menjadi huruf besar atau kecil
- Mengubah angka menjadi kata atau menghapus angka
- Menghilangkan tanda baca, tanda aksen, …
- Memperluas singkatan
- Menghapus kata berhenti, istilah jarang dan kata-kata tertentu
- kanonikalisasi teks
- Berasal
- Tokenisasi
- Lemmatisasi
- …
Konversi teks ke huruf kecil
Bagian ini dapat dengan mudah dilakukan dengan menggunakan metode string dasar Python. Ini contohnya
inp = ”The Eiffel tower is in Paris.”
inp = inp.lower[]
print[inp] # Will print "the eiffel tower is in paris"
Mungkin manipulasi semacam ini tampaknya tidak perlu, dalam beberapa tugas NLP Anda harus mencegah model Anda peka terhadap tingkat huruf besar seperti itu
Menghapus angka
Seperti bagian terakhir, ini juga tidak perlu dan mengambil langkah ini tergantung pada tugas Anda
Hapus nomor apa pun yang tidak terkait dengan penelitian Anda. Ekspresi reguler biasanya digunakan untuk menghilangkan angka
import re
inp = ’Box A contains 3 red and 5 white balls, while Box B contains 4 red and 2 blue balls.’
result = re.sub[r’\d+’, ‘’, inp]
print[result] # Will print "Box A contains red and white balls, while Box B contains red and blue balls."
_Menghapus tanda baca
Menghapus beberapa tanda baca dapat memberikan hasil yang buruk pada model Anda, meskipun dalam beberapa tugas dapat bermanfaat
Kumpulan simbol ini dihapus menggunakan kode berikut [. ”#$ persen &’[]*+,-. /. ;=>?@[] ‘. ]
import string
inp = “This &is [an] example? {of} string. with.? punctuation!!!!”
result = inp.translate[string.maketrans[“”,””], string.punctuation]
print[result]
TokenisasiIni adalah proses memecah materi besar menjadi potongan-potongan kecil, seperti frasa dan kata-kata. Token adalah komponen terkecil. Token dalam kalimat, misalnya, adalah kata, sedangkan kalimat adalah token dalam paragraf. Karena NLP digunakan untuk membuat aplikasi seperti analisis sentimen, sistem jaminan kualitas, terjemahan bahasa, chatbot cerdas, dan sistem suara, sangat penting untuk memahami pola dalam teks untuk membuatnya. Token yang disebutkan di atas cukup membantu dalam mengidentifikasi dan memahami pola-pola ini. Tokenisasi dapat dianggap sebagai langkah pertama dalam resep lain seperti stemming dan lemmatisasi
Token termasuk kata, angka, tanda baca, dan simbol lainnya. Ada berbagai alat di Python untuk tokenisasi. Beberapa dari mereka terdaftar di bawah ini
- NLTK
- Gumpalan teks
- Bait
Tokenisasi menggunakan NLTK
import nltk
from nltk.tokenize import word_tokenize
word_tokenize['Medium provides high quality technical papers.']ptint[word_tokenize]# Output is
['Medium', 'provides', 'high', 'quality', 'technical', 'papers']
Tokenisasi menggunakan TextBlob
from textblob import TextBlobTokenization using Stanza
text = ["Medium is the best blog."]
tb = TextBlob[text]
words = tb.words
print[words]# Output is
['Medium', 'is', 'the', 'best', 'blog']
import stanza
nlp = stanza.Pipeline[lang='en', processors='tokenize']
doc = nlp['This is a test sentence for stanza. This is another sentence.']
for i, sentence in enumerate[doc.sentences]:
print[f'====== Sentence {i+1} tokens =======']
print[*[f'id: {token.id}\ttext: {token.text}' for token in sentence.tokens], sep='\n']# Output
====== Sentence 1 tokens =======
id: 1 text: This
id: 2 text: is
id: 3 text: a
id: 4 text: test
id: 5 text: sentence
id: 6 text: for
id: 7 text: stanza
id: 8 text: .
====== Sentence 2 tokens =======
id: 1 text: This
id: 2 text: is
id: 3 text: another
id: 4 text: sentence
id: 5 text: .
Dari sini saya hanya akan menggunakan NLTK karena ini adalah alat Python NLP yang paling terkenal. Tetapi Anda dapat menemukan informasi untuk TextBlob dengan mudah di internet
Untuk Stanza saya sarankan Anda membaca dokumen mereka dari sini
Stanford NLP
Stanford NLP Group memproduksi dan mengelola berbagai proyek perangkat lunak. Stanford CoreNLP adalah perangkat Java kami…
stanfordnlp. github. io
Menghapus kata berhentiApa itu kata berhenti?
Kata-kata yang paling umum dalam bahasa alami apa pun adalah stopwords. Stopwords ini mungkin tidak memberi banyak nilai pada arti dokumen saat mengevaluasi data teks dan membangun model NLP
Umumnya, kata-kata yang paling umum digunakan dalam sebuah teks adalah "the", "is", "in", "for", "where", "when", "to", "at", dll.
Berikut adalah daftar kata berhenti dalam bahasa Inggris yang mungkin berguna bagi Anda
a about after all also always am an and any are at be been being but by came can cant come could did didn't do does doesn't doing don't else for from get give goes going had happen has have having how i if ill i'm in into is isn't it its i've just keep let like made make
many may me mean more most much no not now of only or our really say see some something take tell than that the their them then they thing this to try up us use used uses very want was way we what when where which who why will with without wont you your youre
_Mengapa kita Perlu Menghapus StopWords?
Di NLP, menghapus stopword bukanlah aturan yang sulit dan cepat. Itu semua tergantung pada proyek yang sedang kita kerjakan. Stopwords dihilangkan atau dihilangkan dari teks yang disediakan untuk kegiatan seperti klasifikasi teks, di mana teks akan dibagi menjadi kelompok-kelompok yang berbeda, sehingga perhatian yang lebih besar dapat diberikan kepada kata-kata yang menentukan makna teks
Stopword tidak boleh dihapus dalam aktivitas seperti terjemahan mesin dan peringkasan teks
from nltk.corpus import stopwordsStemming
from nltk.tokenize import word_tokenizeexample_sent = """This is a sample sentence,showing off the stop words filtration."""stop_words = set[stopwords.words['english']]word_tokens = word_tokenize[example_sent]filtered_sentence = [w for w in word_tokens if not w.lower[] in stop_words]filtered_sentence = []for w in word_tokens:
if w not in stop_words:
filtered_sentence.append[w]print[word_tokens]print[filtered_sentence]# Output['This', 'is', 'a', 'sample', 'sentence', ',', 'showing',
'off', 'the', 'stop', 'words', 'filtration', '.']['This', 'sample', 'sentence', ',', 'showing', 'stop',
'words', 'filtration', '.']
Stemming adalah teknik untuk menghilangkan imbuhan dari kata-kata untuk mendapatkan kembali bentuk dasarnya. Itu sama dengan memangkas dahan pohon sampai ke batangnya. Kata dasar dari kata makan, makan, dan dimakan misalnya adalah makan
Untuk pengindeksan kata, mesin pencari menggunakan stemming. Akibatnya, alih-alih menyimpan semua versi kata, mesin pencari mungkin hanya menyimpan akarnya. Stemming meminimalkan ukuran indeks dan meningkatkan akurasi pengambilan dengan cara ini
Di NLTK, stemmerI, yang memiliki metode stem[], antarmuka memiliki semua stemmer yang akan kita bahas selanjutnya. Mari kita pahami dengan diagram berikut
StemmerI di NLTK
Algoritma stemming Porter adalah salah satu algoritma stemming paling umum yang pada dasarnya dirancang untuk menghapus dan mengganti akhiran kata bahasa Inggris yang terkenal.
import nltk_
from nltk.stem import PorterStemmer
word_stemmer = PorterStemmer[]
word_stemmer.stem['writing']# Output
'write'
Algoritma stemming Lancaster dikembangkan di Lancaster University dan merupakan algoritma stemming yang sangat umum
import nltk_
from nltk.stem import LancatserStemmer
Lanc_stemmer = LancasterStemmer[]
Lanc_stemmer.stem['eats']# Output
'eat'
Menggunakan NLTK dan ekspresi reguler Anda dapat membuat steemer Anda sendiri
import re
inp = ’Box A contains 3 red and 5 white balls, while Box B contains 4 red and 2 blue balls.’
result = re.sub[r’\d+’, ‘’, inp]
print[result] # Will print "Box A contains red and white balls, while Box B contains red and blue balls."
_0LematisasiProses lemmatisasi mirip dengan stemming. Hasil lemmatisasi disebut 'lemma', yang merupakan kata dasar dan bukan kata dasar, yang merupakan hasil dari stemming. Kami akan menerima istilah yang sah yang menandakan hal yang sama setelah lemmatisasi
import re
inp = ’Box A contains 3 red and 5 white balls, while Box B contains 4 red and 2 blue balls.’
result = re.sub[r’\d+’, ‘’, inp]
print[result] # Will print "Box A contains red and white balls, while Box B contains red and blue balls."
1Perbedaan antara Lemmatisasi dan StemmingPada dasarnya, pendekatan stemming hanya mempertimbangkan bentuk kata, tetapi proses lemmatisasi mempertimbangkan makna kata. Ini menunjukkan bahwa kami akan selalu menerima kata yang valid setelah melakukan lemmatisasi
Baik stemming dan lemmatization memiliki tujuan untuk mereduksi bentuk infleksional suatu kata dan kadang-kadang terkait secara derivatif menjadi bentuk dasar tunggal.
Namun, rasa kedua istilah itu berbeda. Stemming adalah prosedur heuristik yang memotong ujung kata dengan harapan dapat melakukannya dengan benar di sebagian besar waktu, dan sering kali mencakup penghilangan afiks turunan. Lemmatization biasanya mengacu pada melakukan hal-hal dengan benar menggunakan studi kosa kata dan morfologi kata-kata, dengan tujuan menghilangkan hanya ujung infleksi dan mengembalikan bentuk dasar atau kamus dari sebuah kata, yang dikenal sebagai lemma.
Bagian dari Penandaan UcapanPenandaan part-of-speech berusaha untuk menetapkan bagian-bagian pidato untuk setiap kata [seperti kata benda, kata kerja, kata sifat, dan lainnya] dalam teks tertentu berdasarkan makna dan konteksnya
import re
inp = ’Box A contains 3 red and 5 white balls, while Box B contains 4 red and 2 blue balls.’
result = re.sub[r’\d+’, ‘’, inp]
print[result] # Will print "Box A contains red and white balls, while Box B contains red and blue balls."
_2MemotongChunking adalah proses bahasa alami yang mendeteksi dan menghubungkan potongan konstituen kalimat [kata benda, kata kerja, kata sifat, dan sebagainya] ke unit urutan yang lebih tinggi dengan makna gramatikal diskrit [kelompok kata benda atau frasa, kelompok kata kerja, dll. ]
import re
inp = ’Box A contains 3 red and 5 white balls, while Box B contains 4 red and 2 blue balls.’
result = re.sub[r’\d+’, ‘’, inp]
print[result] # Will print "Box A contains red and white balls, while Box B contains red and blue balls."
_3Sekarang memotong
import re
inp = ’Box A contains 3 red and 5 white balls, while Box B contains 4 red and 2 blue balls.’
result = re.sub[r’\d+’, ‘’, inp]
print[result] # Will print "Box A contains red and white balls, while Box B contains red and blue balls."
_4Juga ini adalah pohon kalimat
Ringkasan pohon kalimat
Kami membahas persiapan teks dalam posting ini, meliputi normalisasi, tokenization, stemming, lemmatization, chunking, part of speech tagging, name-entity recognition, resolusi coreference, ekstraksi kolokasi, dan ekstraksi koneksi, serta prosedur dasar yang terlibat. Teknik penyusunan teks dan contoh juga disajikan. Dibuat tabel perbandingan
Setelah teks diproses sebelumnya, teks dapat digunakan untuk aktivitas NLP yang lebih lanjut seperti terjemahan mesin atau sintesis bahasa alami