Python Web Scraping - Berurusan dengan Teks
Pada bab sebelumnya, kita telah melihat bagaimana menangani video dan gambar yang kita peroleh sebagai bagian dari konten web scraping. Dalam bab ini kita akan membahas analisis teks dengan menggunakan pustaka Python dan akan mempelajarinya secara mendetail.
pengantar
Anda dapat melakukan analisis teks dengan menggunakan pustaka Python yang disebut Natural Language Tool Kit (NLTK). Sebelum melanjutkan ke konsep NLTK, mari kita pahami hubungan antara analisis teks dan web scraping.
Menganalisis kata-kata dalam teks dapat mengarahkan kita untuk mengetahui kata-kata mana yang penting, kata-kata mana yang tidak biasa, bagaimana kata-kata dikelompokkan. Analisis ini memudahkan tugas pengikisan web.
Memulai dengan NLTK
Perangkat bahasa Alami (NLTK) adalah kumpulan pustaka Python yang dirancang khusus untuk mengidentifikasi dan menandai bagian-bagian ucapan yang ditemukan dalam teks bahasa alami seperti bahasa Inggris.
Menginstal NLTK
Anda dapat menggunakan perintah berikut untuk menginstal NLTK dengan Python -
pip install nltk
Jika Anda menggunakan Anaconda, maka paket conda untuk NLTK dapat dibuat dengan menggunakan perintah berikut -
conda install -c anaconda nltk
Mendownload Data NLTK
Setelah menginstal NLTK, kita harus mendownload repositori teks preset. Tetapi sebelum mengunduh repositori preset teks, kita perlu mengimpor NLTK dengan bantuanimport perintah sebagai berikut -
mport nltk
Sekarang, dengan bantuan perintah berikut, data NLTK dapat diunduh -
nltk.download()
Instalasi semua paket NLTK yang tersedia akan memakan waktu, tetapi selalu disarankan untuk menginstal semua paket.
Menginstal paket lain yang diperlukan
Kami juga membutuhkan beberapa paket Python lainnya seperti gensim dan pattern untuk melakukan analisis teks serta membangun aplikasi pemrosesan bahasa alami dengan menggunakan NLTK.
gensim- Pustaka pemodelan semantik yang kuat yang berguna untuk banyak aplikasi. Itu dapat diinstal dengan perintah berikut -
pip install gensim
pattern - Dulu buat gensimpaket bekerja dengan baik. Itu dapat diinstal dengan perintah berikut -
pip install pattern
Tokenisasi
Proses pemecahan teks yang diberikan, menjadi unit-unit yang lebih kecil yang disebut token, disebut tokenisasi. Token ini bisa berupa kata, angka, atau tanda baca. Itu juga disebutword segmentation.
Contoh
Modul NLTK menyediakan paket yang berbeda untuk tokenisasi. Kami dapat menggunakan paket ini sesuai kebutuhan kami. Beberapa paket dijelaskan di sini -
sent_tokenize package- Paket ini akan membagi teks masukan menjadi beberapa kalimat. Anda dapat menggunakan perintah berikut untuk mengimpor paket ini -
from nltk.tokenize import sent_tokenize
word_tokenize package- Paket ini akan membagi teks masukan menjadi kata-kata. Anda dapat menggunakan perintah berikut untuk mengimpor paket ini -
from nltk.tokenize import word_tokenize
WordPunctTokenizer package- Paket ini akan membagi teks masukan serta tanda baca menjadi kata-kata. Anda dapat menggunakan perintah berikut untuk mengimpor paket ini -
from nltk.tokenize import WordPuncttokenizer
Stemming
Dalam bahasa apa pun, ada berbagai bentuk kata. Suatu bahasa memiliki banyak variasi karena alasan tata bahasa. Misalnya, perhatikan kata-katanyademocracy, democratic, dan democratization. Untuk pembelajaran mesin serta untuk proyek web scraping, penting bagi mesin untuk memahami bahwa kata-kata yang berbeda ini memiliki bentuk dasar yang sama. Oleh karena itu kita dapat mengatakan bahwa mengekstrak bentuk dasar kata-kata sambil menganalisis teks dapat bermanfaat.
Hal ini dapat dicapai dengan stemming yang dapat didefinisikan sebagai proses heuristik penggalian bentuk dasar kata dengan memotong ujung kata.
Modul NLTK menyediakan paket berbeda untuk stemming. Kami dapat menggunakan paket ini sesuai kebutuhan kami. Beberapa dari paket ini dijelaskan di sini -
PorterStemmer package- Algoritma Porter digunakan oleh paket stemming Python ini untuk mengekstrak bentuk dasarnya. Anda dapat menggunakan perintah berikut untuk mengimpor paket ini -
from nltk.stem.porter import PorterStemmer
Misalnya, setelah memberi kata ‘writing’ sebagai masukan untuk stemmer ini, keluarannya adalah kata ‘write’ setelah membendung.
LancasterStemmer package- Algoritma Lancaster digunakan oleh paket stemming Python ini untuk mengekstrak bentuk dasarnya. Anda dapat menggunakan perintah berikut untuk mengimpor paket ini -
from nltk.stem.lancaster import LancasterStemmer
Misalnya, setelah memberi kata ‘writing’ sebagai masukan untuk stemmer ini maka keluarannya adalah kata ‘writ’ setelah membendung.
SnowballStemmer package- Algoritma Snowball digunakan oleh paket stemming Python ini untuk mengekstrak bentuk dasarnya. Anda dapat menggunakan perintah berikut untuk mengimpor paket ini -
from nltk.stem.snowball import SnowballStemmer
Misal, setelah memasukkan kata 'writing' sebagai input pada stemmer ini maka outputnya adalah kata 'write' setelah stemming.
Lemmatisasi
Cara lain untuk mengekstrak bentuk dasar kata adalah dengan lemmatisasi, biasanya bertujuan untuk menghilangkan akhiran infleksional dengan menggunakan kosa kata dan analisis morfologi. Bentuk dasar kata apa pun setelah lemmatisasi disebut lemma.
Modul NLTK menyediakan paket berikut untuk lemmatisasi -
WordNetLemmatizer package- Ini akan mengekstrak bentuk dasar kata tergantung pada apakah itu digunakan sebagai kata benda sebagai kata kerja. Anda dapat menggunakan perintah berikut untuk mengimpor paket ini -
from nltk.stem import WordNetLemmatizer
Memotong
Chunking, yang berarti membagi data menjadi potongan-potongan kecil, adalah salah satu proses penting dalam pemrosesan bahasa alami untuk mengidentifikasi bagian-bagian ucapan dan frasa pendek seperti frasa kata benda. Chunking adalah melakukan pelabelan token. Kita bisa mendapatkan struktur kalimat dengan bantuan proses chunking.
Contoh
Dalam contoh ini, kita akan mengimplementasikan Noun-Phrase chunking dengan menggunakan modul NLTK Python. NP chunking adalah kategori chunking yang akan mencari potongan frase kata benda dalam kalimat.
Langkah-langkah untuk menerapkan pemotongan frase kata benda
Kita perlu mengikuti langkah-langkah yang diberikan di bawah ini untuk menerapkan penggabungan frase kata benda -
Langkah 1 - Definisi tata bahasa potongan
Pada langkah pertama kita akan mendefinisikan tata bahasa untuk chunking. Itu akan terdiri dari aturan-aturan yang harus kita ikuti.
Langkah 2 - Pembuatan parser potongan
Sekarang, kita akan membuat pengurai potongan. Ini akan mengurai tata bahasa dan memberikan hasilnya.
Langkah 3 - Output
Pada langkah terakhir ini, keluaran akan dihasilkan dalam format pohon.
Pertama, kita perlu mengimpor paket NLTK sebagai berikut -
import nltk
Selanjutnya, kita perlu mendefinisikan kalimatnya. Di sini DT: determinan, VBP: kata kerja, JJ: kata sifat, IN: preposisi dan NN: kata benda.
sentence = [("a", "DT"),("clever","JJ"),("fox","NN"),("was","VBP"),("jumping","VBP"),("over","IN"),("the","DT"),("wall","NN")]
Selanjutnya kita berikan tata bahasa dalam bentuk regular expression.
grammar = "NP:{<DT>?<JJ>*<NN>}"
Sekarang, baris kode berikutnya akan menentukan parser untuk mengurai tata bahasa.
parser_chunking = nltk.RegexpParser(grammar)
Sekarang, parser akan mengurai kalimat tersebut.
parser_chunking.parse(sentence)
Selanjutnya, kami memberikan output kami dalam variabel.
Output = parser_chunking.parse(sentence)
Dengan bantuan kode berikut, kita dapat menggambar keluaran kita dalam bentuk pohon seperti gambar di bawah ini.
output.draw()
Model Bag of Word (BoW) Mengekstrak dan mengubah Teks menjadi Bentuk Numerik
Bag of Word (BoW), model yang berguna dalam pemrosesan bahasa alami, pada dasarnya digunakan untuk mengekstrak fitur dari teks. Setelah mengekstraksi fitur dari teks, maka dapat digunakan dalam pemodelan dalam algoritma pembelajaran mesin karena data mentah tidak dapat digunakan dalam aplikasi ML.
Pengerjaan Model BoW
Awalnya, model mengekstrak kosakata dari semua kata dalam dokumen. Nantinya, dengan menggunakan matriks term dokumen, akan dibangun sebuah model. Dengan cara ini, model BoW merepresentasikan dokumen sebagai sekumpulan kata saja dan urutan atau strukturnya dibuang.
Contoh
Misalkan kita memiliki dua kalimat berikut -
Sentence1 - Ini adalah contoh model Bag of Words.
Sentence2 - Kami dapat mengekstrak fitur dengan menggunakan model Bag of Words.
Sekarang, dengan mempertimbangkan dua kalimat ini, kita memiliki 14 kata berbeda berikut -
- This
- is
- an
- example
- bag
- of
- words
- model
- we
- can
- extract
- features
- by
- using
Membangun Model Bag of Words di NLTK
Mari kita lihat skrip Python berikut yang akan membangun model BoW di NLTK.
Pertama, impor paket berikut -
from sklearn.feature_extraction.text import CountVectorizer
Selanjutnya, tentukan kumpulan kalimat -
Sentences=['This is an example of Bag of Words model.', ' We can extract
features by using Bag of Words model.']
vector_count = CountVectorizer()
features_text = vector_count.fit_transform(Sentences).todense()
print(vector_count.vocabulary_)
Keluaran
Ini menunjukkan bahwa kita memiliki 14 kata berbeda dalam dua kalimat di atas -
{
'this': 10, 'is': 7, 'an': 0, 'example': 4, 'of': 9,
'bag': 1, 'words': 13, 'model': 8, 'we': 12, 'can': 3,
'extract': 5, 'features': 6, 'by': 2, 'using':11
}
Pemodelan Topik: Mengidentifikasi Pola dalam Data Teks
Umumnya dokumen dikelompokkan menjadi topik dan pemodelan topik adalah teknik untuk mengidentifikasi pola dalam teks yang sesuai dengan topik tertentu. Dengan kata lain, pemodelan topik digunakan untuk mengungkap tema abstrak atau struktur tersembunyi dalam kumpulan dokumen tertentu.
Anda dapat menggunakan pemodelan topik dalam skenario berikut -
Klasifikasi Teks
Klasifikasi dapat ditingkatkan dengan pemodelan topik karena ini mengelompokkan kata-kata yang mirip secara bersamaan daripada menggunakan setiap kata secara terpisah sebagai fitur.
Sistem Pemberi Rekomendasi
Kami dapat membangun sistem pemberi rekomendasi dengan menggunakan ukuran kesamaan.
Algoritma Pemodelan Topik
Kita dapat mengimplementasikan pemodelan topik dengan menggunakan algoritma berikut -
Latent Dirichlet Allocation(LDA) - Ini adalah salah satu algoritma paling populer yang menggunakan model grafis probabilistik untuk mengimplementasikan pemodelan topik.
Latent Semantic Analysis(LDA) or Latent Semantic Indexing(LSI) - Didasarkan pada Aljabar Linear dan menggunakan konsep SVD (Singular Value Decomposition) pada matriks term dokumen.
Non-Negative Matrix Factorization (NMF) - Ini juga didasarkan pada Aljabar Linear seperti LDA.
Algoritma yang disebutkan di atas akan memiliki elemen-elemen berikut -
- Jumlah topik: Parameter
- Matriks Kata-Dokumen: Masukan
- WTM (Word Topic Matrix) & TDM (Topic Document Matrix): Output