Bagaimana Anda mengekstrak teks dengan python?

Saya seorang bibliofil – saya suka membaca buku di waktu luang saya dan menggali pengetahuan sebanyak yang saya bisa. Namun di era informasi yang berlebihan saat ini, cara kita membaca sesuatu telah berubah. Sebagian besar dari kita cenderung melewatkan keseluruhan teks, entah itu artikel, buku, atau tutorial – dan hanya membaca potongan teks yang relevan

Biarkan saya berbagi contoh pribadi di sekitar ini. Saya baru-baru ini membaca sebuah artikel tentang tur India yang akan datang ke Australia ketika saya menyadari betapa cepatnya saya mencapai akhir teks. Saya membaca sekilas sebagian besar, hanya membaca berita utama dan sedikit tentang Virat Kohli. Berikut kutipan dari artikel tersebut

Bagaimana Anda mengekstrak teks dengan python?

Bisakah Anda menebak mengapa beberapa kata disorot dengan warna merah? . Dan ini membuat saya berpikir – sebagai seseorang di bidang Natural Language Processing (NLP), dapatkah saya membuat model yang dapat mengekstrak potongan-potongan yang relevan ini dari teks tertentu?

Ternyata jawabannya ya – berkat konsep yang disebut Ekstraksi Informasi. Kita akan mempelajari lebih lanjut tentang apa itu ekstraksi informasi nanti, tetapi cukup untuk mengatakan bahwa itu benar-benar membantu saya menyempurnakan keterampilan NLP saya dan membangun model ekstraksi yang kuat yang dapat saya gunakan untuk menguraikan sebagian besar artikel

Dalam artikel ini, saya menyajikan kepada Anda pembelajaran saya sejak saya mengerjakan proyek Ekstraksi Informasi. Ini adalah panduan komprehensif jadi bersiaplah untuk berkendara dan nikmati perjalanan berbahan bakar NLP

Jika Anda belum pernah membaca tentang konsep NLP sebelumnya, saya sarankan untuk memulai kursus gratis di bawah ini

Daftar isi

  • Apa itu Ekstraksi Informasi?
  • Bagaimana cara kerja Ekstraksi Informasi?
  • Mengenal Dataset NLP
  • Pra-Pemrosesan Teks Pidato
  • Memisahkan Teks kita menjadi Kalimat
  • Ekstraksi Informasi menggunakan SpaCy
  • Ekstraksi Informasi #1 – Menemukan penyebutan Perdana Menteri dalam pidato
  • Ekstraksi Informasi #2 – Menemukan inisiatif
  • Menemukan pola dalam pidato
  • Ekstraksi Informasi #3- Aturan tentang frase Noun-Verb-Noun
  • Ekstraksi Informasi #4 – Aturan tentang frase Adjective-Noun
  • Ekstraksi Informasi #5 – Aturan tentang Preposisi

Apa itu Ekstraksi Informasi?

Data teks berisi banyak informasi tetapi tidak semuanya penting bagi Anda. Kami mungkin mencari nama entitas, yang lain ingin mengekstraksi hubungan khusus antara entitas tersebut. Niat kita berbeda sesuai dengan kebutuhan kita

Bayangkan harus melalui semua dokumen hukum untuk menemukan prioritas hukum untuk memvalidasi kasus Anda saat ini. Atau harus melalui semua makalah penelitian untuk menemukan informasi yang relevan untuk menyembuhkan suatu penyakit. Ada banyak lagi contoh seperti pengambilan resume, analisis media, pemindaian email, dll

Tapi bayangkan saja harus menelusuri semua data tekstual secara manual dan mengekstraksi informasi yang paling relevan. Jelas, ini adalah perjuangan yang berat dan Anda bahkan mungkin akan melewatkan beberapa informasi penting

Bagaimana Anda mengekstrak teks dengan python?

Bagi siapa pun yang mencoba menganalisis data tekstual, tugas yang sulit bukanlah menemukan dokumen yang tepat, tetapi menemukan informasi yang tepat dari dokumen-dokumen ini. Memahami hubungan antar entitas, memahami bagaimana suatu peristiwa terjadi, atau sekadar menemukan permata tersembunyi dari informasi, jelas merupakan hal yang dicari setiap orang ketika mereka menelusuri sepenggal teks.

Oleh karena itu, menemukan cara otomatis untuk mengekstraksi informasi dari data tekstual dan menyajikannya secara terstruktur akan membantu kita menuai banyak manfaat dan sangat mengurangi jumlah waktu yang harus kita habiskan untuk menelusuri dokumen teks. Inilah tepatnya yang ingin dicapai oleh ekstraksi informasi

Tugas Ekstraksi Informasi (IE) melibatkan penggalian informasi yang bermakna dari data teks yang tidak terstruktur dan menyajikannya dalam format terstruktur

Menggunakan ekstraksi informasi, kami dapat mengambil informasi yang telah ditentukan sebelumnya seperti nama seseorang, lokasi organisasi, atau mengidentifikasi hubungan antar entitas, dan menyimpan informasi ini dalam format terstruktur seperti database

Izinkan saya menunjukkan contoh lain yang saya ambil dari artikel berita kriket

Bagaimana Anda mengekstrak teks dengan python?

Kami dapat mengekstrak informasi berikut dari teks

  • Negara – India, Kapten – Virat Kohli
  • Batsman – Virat Kohli, Lari – 2
  • Bowler – Kyle Jamieson
  • Tempat pertandingan – Wellington
  • Seri pertandingan – Selandia Baru
  • Sorotan seri – lima puluh tunggal, 8 babak, 3 format

Hal ini memungkinkan kami memperoleh manfaat dari alat kueri canggih seperti SQL untuk analisis lebih lanjut. Membuat data terstruktur seperti itu menggunakan ekstraksi informasi tidak hanya akan membantu kita dalam menganalisis dokumen dengan lebih baik tetapi juga membantu kita dalam memahami hubungan tersembunyi dalam teks.

Bagaimana cara kerja Ekstraksi Informasi?

Mengingat sifat berubah-ubah dari data teks yang berubah tergantung pada penulis atau konteksnya, Ekstraksi Informasi tampak seperti tugas yang menakutkan. Tapi tidak harus seperti itu

Kita semua tahu bahwa kalimat terdiri dari kata-kata yang termasuk dalam Parts of Speech (POS) yang berbeda. Ada delapan POS berbeda dalam bahasa Inggris. kata benda, kata ganti, kata kerja, kata sifat, kata keterangan, preposisi, konjungsi, dan persimpangan

POS menentukan bagaimana kata tertentu berfungsi dalam arti dalam kalimat tertentu. Misalnya, ambil kata "benar". Dalam kalimat, “Bocah itu dianugerahi cokelat karena memberikan jawaban yang benar”, “benar” digunakan sebagai kata sifat. Sedangkan pada kalimat, “Anda berhak mengatakan apapun yang Anda inginkan”, “benar” diperlakukan sebagai kata benda

Ini menunjukkan bahwa tag POS dari sebuah kata memiliki banyak arti ketika harus memahami arti dari sebuah kalimat. Dan kita dapat memanfaatkannya untuk mengekstrak informasi yang bermakna dari teks kita

Mari kita ambil contoh untuk memahami ini. Kami akan menggunakan perpustakaan spaCy yang populer di sini

Kode Piton

Kami dengan mudah dapat menentukan tag POS dari semua kata dalam kalimat. Tapi bagaimana itu membantu dalam Ekstraksi Informasi?

Nah, jika kita ingin mengekstraksi kata benda dari kalimat, kita bisa melihat tag POS dari kata/token dalam kalimat tersebut, menggunakan atribut. pos_, dan ekstrak sesuai

Bagaimana Anda mengekstrak teks dengan python?

Sangat mudah untuk mengekstrak kata-kata berdasarkan tag POS mereka. Namun terkadang mengekstraksi informasi murni berdasarkan tag POS saja tidak cukup. Lihatlah kalimat di bawah ini

Bagaimana Anda mengekstrak teks dengan python?

Jika saya ingin mengekstrak subjek dan objek dari sebuah kalimat, saya tidak dapat melakukannya berdasarkan tag POS mereka. Untuk itu, saya perlu melihat bagaimana kata-kata ini terkait satu sama lain. Ini disebut Dependensi

Kita dapat menggunakan visualisator displacy spaCy yang menampilkan dependensi kata secara grafis

Bagaimana Anda mengekstrak teks dengan python?

Cukup keren. Grafik berarah ini dikenal sebagai grafik ketergantungan. Ini mewakili hubungan antara kata-kata yang berbeda dari sebuah kalimat

Setiap kata adalah simpul dalam grafik Ketergantungan. Hubungan antara kata-kata dilambangkan dengan tepi. Misalnya, "The" adalah penentu di sini, "anak-anak" adalah subjek kalimat, "biskuit" adalah objek kalimat, dan "krim" adalah kata majemuk yang memberi kita lebih banyak informasi tentang objek tersebut.

Panah membawa banyak arti di sini

  • Panah menunjuk ke kata-kata yang bergantung pada kata yang ditunjukkan oleh asal panah
  • Yang pertama disebut sebagai simpul anak dari yang terakhir. Misalnya, "anak-anak" adalah simpul anak dari "cinta"
  • Kata yang tidak memiliki panah masuk disebut simpul akar kalimat

Mari kita lihat bagaimana kita dapat mengekstrak subjek dan objek dari kalimat. Seperti kami memiliki atribut untuk POS di token SpaCy, kami juga memiliki atribut untuk mengekstrak ketergantungan token yang dilambangkan dengan dep_

Bagaimana Anda mengekstrak teks dengan python?

Voila. Kami memiliki subjek dan objek kalimat kami

Menggunakan tag POS dan tag Ketergantungan, kita dapat mencari hubungan antara entitas yang berbeda dalam sebuah kalimat. Misalnya, dalam kalimat "Kucing hinggap di ambang jendela", kita memiliki subjek "kucing", objek "kusen jendela", terkait dengan preposisi "di". Kita dapat mencari hubungan semacam itu dan lebih banyak lagi untuk mengekstrak informasi yang bermakna dari data teks kita

Saya sarankan melalui tutorial luar biasa ini yang menjelaskan Ekstraksi Informasi secara detail dengan banyak contoh

Kemana Kita Pergi dari Sini?

Kami telah berbicara secara singkat tentang teori tentang Ekstraksi Informasi yang menurut saya penting untuk dipahami sebelum terjun ke inti artikel ini

“Satu ons praktik umumnya bernilai lebih dari satu ton teori. ” –E. F. Schumacher

Pada bagian berikut, saya akan menjelajahi kumpulan data teks dan menerapkan teknik ekstraksi informasi untuk mengambil beberapa informasi penting, memahami struktur kalimat, dan hubungan antar entitas.

Jadi, tanpa basa-basi lagi, mari kita pecahkan kodenya

Menjadi Akrab dengan Kumpulan Data Teks

Kumpulan data yang akan kami kerjakan adalah Korpus Debat Umum PBB. Ini berisi pidato yang dibuat oleh perwakilan dari semua negara anggota dari tahun 1970 hingga 2018 di Debat Umum sesi tahunan Majelis Umum Perserikatan Bangsa-Bangsa

Tapi kami akan mengambil subset dari kumpulan data ini dan bekerja dengan pidato yang dibuat oleh India pada debat ini. Ini akan memungkinkan kita untuk tetap di jalur dan lebih memahami tugas yang ada dalam memahami Ekstraksi Informasi. Ini menyisakan 49 pidato yang dibuat oleh India selama bertahun-tahun, setiap pidato berkisar antara 2000 hingga 6000+ kata

Karena itu, mari kita lihat dataset kita

Bagaimana Anda mengekstrak teks dengan python?

Saya akan mencetak snapshot dari salah satu pidato untuk memberi Anda gambaran seperti apa datanya

Bagaimana Anda mengekstrak teks dengan python?

Sekarang mari kita mulai bekerja dengan kumpulan data kita

Pra-Pemrosesan Teks Pidato

Pertama, kita perlu membersihkan data teks kita. Ketika saya membahas beberapa pidato, saya menemukan setiap paragraf dalam pidato diberi nomor untuk mengidentifikasinya dengan jelas. Jelas ada karakter yang tidak diinginkan seperti karakter baris baru, tanda hubung, salam, dan apostrof, seperti di kumpulan data teks lainnya

Tetapi informasi unik dan tidak diinginkan lainnya yang ada adalah referensi yang dibuat dalam setiap pidato ke dokumen lain. Kami jelas tidak menginginkan itu juga

Saya telah menulis sebuah fungsi sederhana untuk membersihkan pidato. Poin penting di sini adalah saya belum menggunakan lemmatisasi atau mengubah kata menjadi huruf kecil karena berpotensi mengubah tag POS dari kata tersebut. Kami tentu tidak ingin melakukan itu seperti yang akan Anda lihat di subbagian yang akan datang

Benar, sekarang setelah pidato kita dibersihkan secara minimal, kita dapat membaginya menjadi beberapa kalimat terpisah

Pisahkan Pidato menjadi Kalimat yang Berbeda

Memisahkan pidato kami menjadi kalimat terpisah akan memungkinkan kami untuk mengekstrak informasi dari setiap kalimat. Nanti, kami dapat menggabungkannya untuk mendapatkan informasi kumulatif untuk tahun tertentu

Terakhir, kita dapat membuat kerangka data yang berisi kalimat-kalimat dari tahun yang berbeda

Bagaimana Anda mengekstrak teks dengan python?

Setelah melakukan operasi ini, kami mendapatkan 7150 kalimat. Menyelidikinya dan mengekstraksi informasi secara manual akan menjadi tugas yang sulit. Itu sebabnya kami melihat Ekstraksi Informasi menggunakan teknik NLP

Ekstraksi Informasi menggunakan SpaCy

Sekarang, kita dapat mulai mengerjakan tugas Ekstraksi Informasi. Kami akan menggunakan perpustakaan spaCy untuk bekerja dengan data teks. Itu memiliki semua alat yang diperlukan yang dapat kita manfaatkan untuk semua tugas yang kita butuhkan untuk ekstraksi informasi

Biarkan saya mengimpor modul SpaCy yang relevan yang akan kami perlukan untuk tugas selanjutnya

Kita membutuhkan kelas spaCy Matcher untuk membuat pola untuk mencocokkan frasa dalam teks. Kami juga memerlukan modul displaCy untuk memvisualisasikan grafik ketergantungan kalimat

Pustaka visualise_spacy_tree akan diperlukan untuk membuat struktur seperti pohon dari grafik Ketergantungan. Ini membantu dalam memvisualisasikan grafik dengan cara yang lebih baik. Terakhir, kelas IPython Image dan display diperlukan untuk menampilkan pohon

Tetapi Anda tidak perlu terlalu khawatir tentang ini. Ini akan menjadi jelas saat Anda melihat kodenya

Ekstraksi Informasi #1 – Menemukan Sebutan Perdana Menteri dalam Pidato

Saat mengerjakan tugas ekstraksi informasi, penting untuk secara manual memeriksa subset dari kumpulan data untuk memahami seperti apa teks itu dan menentukan apakah ada sesuatu yang menarik perhatian Anda pada pandangan pertama. Ketika saya pertama kali membahas pidato, saya menemukan banyak dari mereka merujuk pada apa yang dikatakan, dipikirkan, atau dicapai Perdana Menteri di masa lalu.

Kita tahu bahwa sebuah negara bukanlah apa-apa tanpa pemimpinnya. Tujuan akhir suatu negara pada umumnya adalah hasil dari bimbingan yang cakap dari pemimpinnya. Oleh karena itu, saya yakin penting untuk mengekstrak kalimat-kalimat tersebut dari pidato yang merujuk pada Perdana Menteri India, dan mencoba memahami apa pemikiran dan perspektif mereka, dan juga mencoba mengungkap kepercayaan yang sama atau berbeda selama bertahun-tahun.

Untuk mencapai tugas ini, saya menggunakan kelas Matcher SpaCy. Ini memungkinkan kita untuk mencocokkan urutan kata berdasarkan pola tertentu. Untuk tugas saat ini, kami tahu bahwa setiap kali Perdana Menteri disebut dalam pidato, itu akan dilakukan dengan salah satu cara berikut

  • Perdana Menteri [Negara] …
  • Perdana Menteri [Nama] …

Dengan menggunakan pemahaman umum ini, kita dapat menemukan sebuah pola

Bagaimana Anda mengekstrak teks dengan python?

Biarkan saya memandu Anda melalui pola ini

  • Di sini, setiap kamus dalam daftar cocok dengan kata yang unik
  • Kamus pertama dan kedua cocok dengan kata kunci "Perdana Menteri" terlepas dari apakah itu dalam huruf besar atau tidak, itulah sebabnya saya memasukkan kunci "RENDAH"
  • Kamus ketiga cocok dengan kata yang merupakan preposisi. Apa yang saya cari di sini adalah kata "dari". Sekarang, seperti yang dibahas sebelumnya, itu mungkin ada atau tidak ada dalam pola, oleh karena itu, kunci tambahan, "OP" atau opsional, disebutkan untuk menunjukkan hal itu
  • Akhirnya, kamus terakhir dalam pola harus menjadi kata benda yang tepat. Ini bisa berupa nama negara atau nama perdana menteri
  • Kata kunci yang cocok harus dalam kelanjutan jika pola tidak akan cocok dengan frase

Berikut beberapa contoh kalimat dari tahun 1989 yang cocok dengan pola kita

Bagaimana Anda mengekstrak teks dengan python?

Sekarang, karena hanya 58 kalimat dari total 7150 kalimat yang memberikan keluaran yang sesuai dengan pola kita, saya telah merangkum informasi yang relevan dari keluaran ini di sini

  • PM Indira Gandhi dan PM Jawaharlal Nehru percaya dalam bekerja sama dalam kesatuan dan dengan prinsip-prinsip PBB
  • PM Indira Gandhi percaya pada keseimbangan antara produksi dan konsumsi global. Dia menetapkan kebijakan yang didedikasikan untuk rekonstruksi nasional dan konsolidasi sistem politik sekuler dan pluralistik
  • PM Indira Gandhi menegaskan bahwa India tidak mengintervensi urusan dalam negeri negara lain. Namun, pendirian kebijakan luar negeri ini berbalik arah di bawah PM Rajiv Gandhi ketika dia menandatangani perjanjian dengan Perdana Menteri Sri Lanka yang membawa perdamaian ke Sri Lanka
  • Baik PM Indira Gandhi maupun PM Rajiv Gandhi meyakini hubungan antara pembangunan ekonomi dan perlindungan lingkungan
  • PM Rajiv Gandhi mengadvokasi perlucutan senjata nuklir, keyakinan yang dipegang teguh oleh India selama bertahun-tahun
  • India, di bawah PM yang berbeda, selalu mengulurkan tangan perdamaian ke Pakistan selama bertahun-tahun
  • PM Narendra Modi percaya bahwa pemberdayaan ekonomi dan peningkatan bangsa mana pun melibatkan pemberdayaan perempuannya
  • PM Narendra Modi telah meluncurkan beberapa skema yang akan membantu India mencapai tujuan SGD-nya

Dengan menggunakan ekstraksi informasi, kami dapat mengisolasi hanya beberapa kalimat yang kami perlukan yang memberi kami hasil maksimal

Ekstraksi Informasi #2 – Menemukan Inisiatif

Hal menarik kedua yang saya perhatikan selama pidato adalah bahwa ada banyak inisiatif, skema, kesepakatan, konferensi, program, dll. yang disebutkan dalam pidato. Misalnya, 'Perjanjian Paris', 'Perjanjian Simla', 'Konferensi Dewan Keamanan', 'Konferensi Negara Non Blok', 'Aliansi Surya Internasional', 'Inisiatif Keterampilan India', dll.

Mengekstrak ini akan memberi kita gambaran tentang apa yang menjadi prioritas India dan apakah ada pola mengapa hal itu cukup sering disebutkan dalam pidato.

Saya akan mengacu pada semua skema, inisiatif, konferensi, program, dll. kata kunci sebagai inisiatif

Untuk mengekstrak inisiatif dari teks, hal pertama yang akan saya lakukan adalah mengidentifikasi kalimat-kalimat yang berbicara tentang inisiatif. Untuk itu, saya akan menggunakan regex sederhana untuk memilih hanya kalimat yang mengandung kata kunci 'inisiatif', 'skema', 'kesepakatan', dll. Ini akan mengurangi pencarian pola inisiatif yang kita cari

Sekarang, Anda mungkin berpikir bahwa tugas kita sudah selesai di sini karena kita telah mengidentifikasi kalimatnya. Kita dapat dengan mudah mencarinya dan menentukan apa yang sedang dibicarakan dalam kalimat-kalimat ini. Tapi, pikirkanlah, tidak semua ini akan memuat nama inisiatif. Beberapa di antaranya mungkin secara umum berbicara tentang inisiatif tetapi tidak ada nama inisiatif yang ada di dalamnya

Oleh karena itu, kita perlu menemukan solusi yang lebih baik yang hanya mengekstrak kalimat yang berisi nama inisiatif. Untuk itu, saya akan menggunakan spaCy Matcher, sekali lagi, untuk menghasilkan pola yang cocok dengan inisiatif ini

Lihat contoh kalimat berikut dan lihat apakah Anda dapat menemukan pola untuk mengekstrak inisiatif ini

Bagaimana Anda mengekstrak teks dengan python?

Seperti yang mungkin Anda perhatikan, nama inisiatif adalah kata benda yang dimulai dengan penentu dan diakhiri dengan 'inisiatif'/'program'/'perjanjian' dll. kata-kata pada akhirnya. Ini juga termasuk preposisi sesekali di tengah. Saya juga memperhatikan bahwa sebagian besar nama inisiatif memiliki panjang antara dua hingga lima kata. Dengan mengingat hal ini, saya menemukan pola berikut untuk mencocokkan nama inisiatif

Kami mendapat 62 kalimat yang cocok dengan pola kami – lumayan. Lihat output dari tahun 2018

Bagaimana Anda mengekstrak teks dengan python?

Tapi satu hal yang harus saya tekankan di sini adalah bahwa lebih banyak inisiatif dalam pidato yang tidak sesuai dengan pola kita. Misalnya, di tahun 2018, ada juga inisiatif lain seperti “MUDRA”, “Ujjwala”, “Perjanjian Paris”, dll. Jadi apakah ada cara yang lebih baik untuk mengekstraknya?

Ingat bagaimana kita melihat dependensi di awal artikel? . Tetapi sebelum membuat aturan, Anda perlu memahami bagaimana sebuah kalimat disusun, baru setelah itu Anda dapat membuat aturan umum untuk mengekstrak informasi yang relevan.

Untuk memahami struktur kalimat, saya akan mencetak grafik dependensi dari contoh contoh tetapi dengan cara pohon yang memberikan intuisi struktur yang lebih baik. Lihat di bawah

Bagaimana Anda mengekstrak teks dengan python?

Lihat bagaimana 'Ujjwala' adalah simpul anak dari 'program'. Lihat contoh lain

Bagaimana Anda mengekstrak teks dengan python?

Perhatikan bagaimana 'Aliansi Surya Internasional' disusun

Anda pasti sudah mengetahui bahwa nama inisiatif biasanya adalah turunan dari node yang mengandung kata-kata seperti 'inisiatif', 'program', dll. Berdasarkan pengetahuan ini kita dapat mengembangkan aturan kita sendiri

Aturan yang saya sarankan cukup sederhana. Biarkan saya memandu Anda melewatinya

  • Saya akan mencari token dalam kalimat yang mengandung kata kunci inisiatif saya
  • Kemudian saya akan melihat subpohonnya (atau kata-kata yang bergantung padanya) menggunakan token. subtree dan ekstrak hanya simpul/kata yang merupakan kata benda yang tepat, karena kemungkinan besar akan berisi nama inisiatif

Kali ini kami mencocokkan 282 entri. Itu adalah peningkatan yang signifikan dari hasil sebelumnya. Mari kita lihat output 2018 dan lihat apakah kita melakukan yang lebih baik kali ini

Bagaimana Anda mengekstrak teks dengan python?

Dari 7000+ kalimat, kami dapat membidik hingga hanya 282 kalimat yang berbicara tentang inisiatif. Saya mengulangi output ini dan di bawah ini adalah bagaimana saya akan meringkas hasilnya

  • Ada banyak inisiatif atau skema internasional berbeda yang disebutkan India dalam pidatonya. Ini menunjukkan bahwa India telah menjadi anggota aktif komunitas internasional yang bekerja untuk membangun masa depan yang lebih baik dengan menyelesaikan masalah melalui inisiatif ini
  • Hal lain yang perlu disoroti di sini adalah bahwa inisiatif yang disebutkan pada tahun-tahun awal lebih difokuskan pada hal-hal yang menyangkut masyarakat internasional. Namun, belakangan ini, terutama setelah 2014, banyak inisiatif domestik telah disebutkan dalam pidato seperti 'Ayushman Bharat', 'Pradhan Mantri Jan Dhan Yojana', dll. Hal ini menunjukkan pergeseran dalam cara negara memandang perannya dalam masyarakat. Dengan menyebutkan banyak inisiatif dalam negeri, India telah mulai menempatkan lebih banyak pekerjaan rumah tangga di depan komunitas internasional untuk disaksikan dan, mungkin, bahkan mengikuti jejak mereka.

Karena itu, hasilnya pasti tidak sempurna. Ada beberapa contoh ketika kata-kata yang tidak diinginkan juga diekstraksi dengan nama inisiatif. Tetapi keluaran yang diperoleh dengan membuat aturan kami sendiri jelas lebih baik daripada yang diperoleh dengan menggunakan pencocokan pola SpaCy. Ini menunjukkan fleksibilitas yang dapat kita capai dengan membuat aturan kita sendiri

Menemukan Pola dalam Pidato

Sejauh ini, kami hanya mengekstraksi informasi yang sesuai dengan mata analitis kami saat kami menelusuri data. Tetapi apakah ada informasi lain yang tersembunyi di kumpulan data kami?

Tapi sebelum itu, saya ingin menunjukkan dua hal

Pertama, ketika kita mencoba untuk memahami struktur pidato, kita tidak dapat melihat seluruh pidato, yang akan memakan waktu lama, dan waktu sangat penting di sini. Apa yang akan kita lakukan sebagai gantinya adalah melihat kalimat acak dari kumpulan data dan kemudian, berdasarkan strukturnya, mencoba membuat aturan umum untuk mengekstraksi informasi.

Tapi bagaimana kita menguji validitas aturan ini? . Tidak semua aturan yang kami buat akan memberikan hasil yang memuaskan. Jadi, untuk menyaring aturan yang tidak relevan, kita bisa melihat persentase kalimat yang cocok dengan aturan kita dari semua kalimat. Ini akan memberi kita gambaran yang adil tentang seberapa baik kinerja aturan, dan apakah, pada kenyataannya, ada struktur umum semacam itu dalam korpus.

Hal lain yang sangat penting yang perlu disoroti di sini adalah bahwa setiap korpus pasti berisi kalimat panjang yang rumit. Bekerja dengan kalimat-kalimat ini untuk mencoba dan memahami strukturnya akan menjadi tugas yang sangat sulit. Oleh karena itu, kita akan melihat kalimat yang lebih kecil. Ini akan memberi kita kesempatan untuk lebih memahami struktur mereka. Jadi apa angka ajaibnya?

Bagaimana Anda mengekstrak teks dengan python?

Melihat histogram, kita dapat melihat bahwa sebagian besar kalimat berkisar antara 15-20 kata. Jadi saya akan bekerja dengan kalimat yang mengandung tidak lebih dari 15 kata

Sekarang, mari tulis fungsi sederhana yang akan menghasilkan kalimat acak dari kerangka data ini

Terakhir, mari buat fungsi untuk mengevaluasi hasil aturan kita

Benar, mari kita turun ke bisnis membuat beberapa aturan

Ekstraksi Informasi #3 – Aturan tentang Frasa Nomina-Kata Kerja-Kata Benda

Ketika Anda melihat sebuah kalimat, umumnya berisi subjek (kata benda), tindakan (kata kerja), dan objek (kata benda). Kata-kata lainnya ada di sana untuk memberi kita informasi tambahan tentang entitas. Oleh karena itu, kita dapat memanfaatkan struktur dasar ini untuk mengekstrak informasi utama dari kalimat. Ambil contoh kalimat berikut

Bagaimana Anda mengekstrak teks dengan python?

Apa yang akan diambil dari contoh kalimat berdasarkan aturan ini adalah – “negara-negara menghadapi ancaman”. Ini seharusnya memberi kita ide yang adil tentang apa yang ingin dikatakan kalimat itu

Jadi mari kita lihat bagaimana aturan ini adil apa yang kita jalankan dengan kalimat pendek yang sedang kita kerjakan

Kami mendapatkan lebih dari 20% kecocokan pola untuk aturan kami dan kami dapat memeriksanya untuk semua kalimat dalam korpus

Kami mendapatkan lebih dari 30% kecocokan untuk aturan kami, yang berarti 2226 dari 7150 kalimat cocok dengan pola ini. Mari kita bentuk kerangka data baru yang hanya berisi kalimat-kalimat yang memiliki keluaran dan kemudian pisahkan kata kerja dari kata benda

Bagaimana Anda mengekstrak teks dengan python?

Mari kita lihat 10 kata kerja paling sering digunakan dalam kalimat

Bagaimana Anda mengekstrak teks dengan python?

Sekarang, kita dapat melihat kata kerja tertentu untuk melihat jenis informasi apa yang ada. Misalnya, 'selamat datang' dan 'dukungan' dapat memberi tahu kami apa yang didorong oleh India. Dan kata kerja seperti 'wajah' mungkin bisa memberi tahu kita masalah apa yang kita hadapi di dunia nyata

Bagaimana Anda mengekstrak teks dengan python?

Bagaimana Anda mengekstrak teks dengan python?

Dengan melihat keluarannya, kita dapat mencoba melihat apa konteks kalimatnya. Misalnya, kita dapat melihat bahwa India mendukung 'upaya', 'sudut pandang', 'inisiatif', 'perjuangan', 'keinginan,' aspirasi ', dll. Sementara India percaya bahwa dunia menghadapi 'ancaman', 'konflik', 'kolonialisme', 'pandemi', dll

Kita dapat memilih kalimat untuk dijelajahi secara mendalam dengan melihat outputnya. Ini pasti akan menghemat banyak waktu daripada hanya membaca seluruh teks

Ekstraksi Informasi #4 – Aturan tentang Struktur Kata Sifat

Pada aturan sebelumnya yang kami buat, kami mengekstrak subjek dan objek kata benda, tetapi informasinya tidak terasa lengkap. Ini karena banyak kata benda memiliki kata sifat atau kata dengan ketergantungan majemuk yang menambah arti kata benda. Mengekstraksi ini bersama dengan kata benda akan memberi kita informasi yang lebih baik tentang subjek dan objek

Perhatikan contoh kalimat di bawah ini

Bagaimana Anda mengekstrak teks dengan python?

Apa yang ingin kami capai di sini adalah – “kehidupan yang lebih baik”

Kode untuk aturan ini sederhana, tetapi izinkan saya memandu Anda melalui cara kerjanya

  • Kami mencari token yang memiliki tag Noun POS dan memiliki ketergantungan subjek atau objek
  • Kemudian kami melihat simpul anak dari token ini dan menambahkannya ke frasa hanya jika itu mengubah kata benda

Bagaimana Anda mengekstrak teks dengan python?

51% dari kalimat pendek cocok dengan aturan ini. Kami sekarang dapat mencoba memeriksanya di seluruh korpus

Di seluruh korpus 7150, 76% atau 5117 kalimat cocok dengan aturan pola kami, karena kebanyakan dari kalimat tersebut pasti mengandung kata benda dan pengubahnya

Bagaimana Anda mengekstrak teks dengan python?

Sekarang kita bisa menggabungkan rule ini dengan rule yang kita buat sebelumnya. Ini akan memberi kita perspektif yang lebih baik tentang informasi apa yang ada dalam sebuah kalimat

Kami mendapatkan hasil 31% yang cocok, beberapa di antaranya ditampilkan di bawah ini

Bagaimana Anda mengekstrak teks dengan python?

Di sini, kita berakhir dengan frasa seperti "kami mengambil janji baru", "kami memiliki peningkatan yang cukup besar", "orang mengharapkan kehidupan yang lebih baik", dll. yang termasuk kata benda dan pengubahnya. Ini memberi kami informasi yang lebih baik tentang apa yang sedang diekstraksi di sini

Seperti yang Anda lihat, kami tidak hanya membuat aturan baru untuk memahami struktur kalimat, tetapi juga menggabungkan dua aturan untuk mendapatkan informasi yang lebih baik dari teks yang diekstrak.

Ekstraksi Informasi #5 – Aturan tentang Preposisi

Terima kasih Tuhan untuk preposisi. Mereka memberi tahu kita di mana atau kapan sesuatu berhubungan dengan sesuatu yang lain. Misalnya, Orang-orang India percaya pada prinsip-prinsip Perserikatan Bangsa-Bangsa. Mengekstraksi frase dengan jelas termasuk preposisi akan memberi kita banyak informasi dari kalimat tersebut. Inilah tepatnya yang akan kita capai dengan aturan ini

Mari kita coba memahami bagaimana aturan ini bekerja dengan membahasnya pada contoh kalimat – “India sekali lagi menunjukkan kepercayaan pada demokrasi. ”

  • Kami mengulangi semua token mencari preposisi. Misalnya pada kalimat ini
  • Saat menemukan preposisi, kami memeriksa apakah kata tersebut memiliki kata inti yang merupakan kata benda. Misalnya, kata iman dalam kalimat ini
  • Kemudian kami melihat token anak dari token preposisi yang jatuh di sisi kanannya. Misalnya kata demokrasi

Ini akhirnya harus mengekstrak frase iman dalam demokrasi dari kalimat tersebut. Lihatlah grafik ketergantungan kalimat di bawah ini

Bagaimana Anda mengekstrak teks dengan python?

Sekarang mari terapkan aturan ini pada kalimat pendek kita

Sekitar 48% kalimat mengikuti aturan ini

Bagaimana Anda mengekstrak teks dengan python?

Kita dapat menguji pola ini di seluruh korpus karena kita memiliki banyak kalimat yang cocok dengan aturan tersebut

74% dari total kalimat cocok dengan pola ini. Mari pisahkan preposisi dari kata benda dan lihat jenis informasi apa yang dapat kami ekstrak

Kerangka data berikut menunjukkan hasil aturan di seluruh korpus, tetapi preposisi dan kata benda dipisahkan untuk analisis yang lebih baik

Bagaimana Anda mengekstrak teks dengan python?

Kita dapat melihat 10 preposisi yang paling banyak muncul di seluruh korpus

Bagaimana Anda mengekstrak teks dengan python?

Kami melihat preposisi tertentu untuk mengeksplorasi kalimat secara rinci. Misalnya, preposisi 'melawan' dapat memberi kita informasi tentang apa yang tidak didukung oleh India

Bagaimana Anda mengekstrak teks dengan python?

Membaca sekilas kata benda, beberapa frasa penting seperti

  • upaya melawan proliferasi
  • perang melawan terorisme, aksi melawan terorisme, perang melawan terorisme
  • diskriminasi terhadap perempuan
  • perang melawan kemiskinan
  • perjuangan melawan kolonialisme

… dan seterusnya. Ini seharusnya memberi kita ide yang adil tentang kalimat mana yang ingin kita jelajahi secara mendetail. Misalnya, upaya melawan proliferasi berbicara tentang upaya pelucutan senjata nuklir. Atau kalimat perjuangan melawan kolonialisme berbicara tentang hubungan historis antara India dan Afrika yang lahir dari perjuangan bersama mereka melawan kolonialisme

Bagaimana Anda mengekstrak teks dengan python?

Seperti yang Anda lihat, preposisi memberi kita hubungan penting antara dua kata benda. Dan dengan sedikit pengetahuan domain, kita dapat dengan mudah menyaring data yang luas dan menentukan apa yang didukung atau tidak didukung India, antara lain

Tetapi hasilnya tampaknya agak tidak lengkap. Misalnya, dalam kalimat upaya melawan proliferasi, proliferasi seperti apa yang kita bicarakan? . Ini pasti akan meningkatkan pemahaman dari frase yang diekstraksi

Aturan ini dapat dengan mudah dimodifikasi untuk memasukkan perubahan baru. Saya telah membuat fungsi baru untuk mengekstrak pengubah kata benda untuk kata benda yang kami ekstrak dari Ekstraksi Informasi #4

Yang harus kita lakukan adalah memanggil fungsi ini setiap kali kita menemukan kata benda dalam frase kita

Bagaimana Anda mengekstrak teks dengan python?

Ini pasti memiliki lebih banyak informasi daripada sebelumnya. Misalnya, 'hambatan dalam pembangunan ekonomi' daripada 'hambatan dalam pembangunan' dan 'pelanggar hak asasi manusia yang lebih besar' daripada 'pelanggar hak'

Sekali lagi, menggabungkan aturan telah memberi kami lebih banyak kekuatan dan fleksibilitas untuk mengeksplorasi hanya kalimat-kalimat itu secara mendetail yang memiliki frase yang diekstrak bermakna

Kode

Anda dapat menemukan file kode lengkap di sini

Catatan Akhir

Ekstraksi informasi sama sekali bukan tugas NLP yang mudah untuk dilakukan. Anda perlu menghabiskan waktu dengan data untuk lebih memahami strukturnya dan apa yang ditawarkannya

Dalam artikel ini, kami menggunakan pengetahuan teoretis dan menerapkannya secara praktis. Kami bekerja dengan kumpulan data teks dan mencoba mengekstrak informasi menggunakan teknik ekstraksi informasi tradisional

Kami mencari frase kunci dan hubungan dalam data teks untuk mencoba mengekstrak informasi dari teks. Jenis pendekatan ini membutuhkan kombinasi komputer dan upaya manusia untuk mengekstrak informasi yang relevan

Bagaimana cara mengekstrak data dari Python?

Untuk mengekstrak data menggunakan pengikisan web dengan python, Anda harus mengikuti langkah-langkah dasar ini. .
Temukan URL yang ingin Anda kikis
Memeriksa Halaman
Temukan data yang ingin Anda ekstrak
Tulis kodenya
Jalankan kode dan ekstrak datanya
Simpan data dalam format yang diperlukan

Bagaimana Anda mengekstrak nilai dari string dengan Python?

Ringkasan. Untuk mengekstrak angka dari string yang diberikan dengan Python, Anda dapat menggunakan salah satu metode berikut. .
Gunakan modul regex
Gunakan fungsi split() dan append() pada daftar
Gunakan Pemahaman Daftar dengan fungsi isdigit() dan split()
Gunakan modul num_from_string

Bagaimana cara mengekstrak kata dari daftar dengan Python?

Kita dapat menggunakan metode search() dari modul re untuk menemukan kemunculan kata pertama dan kemudian kita dapat memperoleh kata menggunakan slicing . ulang. metode search() akan mengambil kata yang akan diekstraksi dalam bentuk ekspresi reguler dan string sebagai input dan dan mengembalikan a re.