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