Python

Cara Mengekstrak Kalimat dari Teks Menggunakan Modul Python NLTK

Cara Mengekstrak Kalimat dari Teks Menggunakan Modul Python NLTK
Natural Language Toolkit (NLTK) adalah modul pemrosesan bahasa dan teks untuk Python. NLTK dapat menganalisis, memproses, dan menandai teks yang tersedia dalam banyak bahasa berbeda menggunakan perpustakaan korpora bawaan dan kumpulan data leksikal yang besar. Python adalah salah satu bahasa pemrograman paling populer yang digunakan dalam ilmu data dan pemrosesan bahasa, terutama karena fleksibilitas bahasa dan ketersediaan modul yang berguna seperti NLTK. Artikel ini akan menjelaskan cara mengekstrak kalimat dari paragraf teks menggunakan NLTK. Kode dalam panduan ini telah diuji dengan Python 3.8.2 dan NLTK 3.4.5 di Ubuntu 20.04 LTS.

Menginstal NLTK di Linux

Untuk menginstal NLTK di Ubuntu, jalankan perintah di bawah ini:

$ sudo apt install python3-nltk

Paket NLTK tersedia di semua distribusi Linux utama. Cari kata kunci “NLTK” di manajer paket untuk menginstal paket. Jika karena alasan tertentu, NLTK tidak tersedia di repositori distribusi Anda, Anda dapat menginstalnya dari manajer paket pip dengan menjalankan perintah di bawah ini:

$ pip install --user -U nltk

Perhatikan bahwa pertama-tama Anda harus menginstal pip dari manajer paket Anda agar perintah di atas berfungsi. Pada beberapa distribusi, ini bisa disebut pip3. Anda juga dapat mengikuti petunjuk pemasangan terperinci yang tersedia di available situs resmi dari NLTK.

Mengekstrak Kalimat dari Paragraf Menggunakan NLTK

Untuk paragraf tanpa tanda baca dan spasi yang rumit, Anda dapat menggunakan tokenizer kalimat NLTK bawaan, yang disebut “Punkt tokenizer,” yang hadir dengan model yang telah dilatih sebelumnya. Anda juga dapat menggunakan model data terlatih Anda sendiri untuk menandai teks menjadi kalimat. Model data yang dilatih khusus berada di luar cakupan artikel ini, jadi kode di bawah ini akan menggunakan tokenizer Punkt English bawaan. Untuk mengunduh file sumber daya Punkt, jalankan tiga perintah berikut secara berurutan, dan tunggu hingga unduhan selesai:

$ python3
$ impor nltk
$nltk.unduh ('punkt')

Sebuah paragraf dari "Alice's Adventures in Wonderland" akan digunakan dalam contoh kode di bawah ini:

impor nltk
para = "Sumur itu sangat dalam, atau dia jatuh sangat lambat, karena dia telah
banyak waktu saat dia turun untuk melihat sekelilingnya dan bertanya-tanya apa yang sedang terjadi
terjadi selanjutnya. Pertama, dia mencoba melihat ke bawah dan melihat apa yang akan dia tuju,
tapi terlalu gelap untuk melihat apa pun; lalu dia melihat ke sisi sumur, dan—
memperhatikan bahwa mereka dipenuhi dengan lemari dan rak buku; di sana-sini dia
melihat peta dan gambar tergantung di pasak. Dia mengambil toples dari salah satu rak
saat dia lewat; itu diberi label 'MARMALADE ORANGE', tapi dia sangat kecewa
kosong: dia tidak suka menjatuhkan toples karena takut membunuh seseorang, jadi berhasil
untuk memasukkannya ke salah satu lemari saat dia jatuh melewatinya."
token = nltk.dikirim_tokenize(para)
untuk t dalam token:
cetak (t, "\n")

Menjalankan kode di atas akan memberi Anda output berikut:

Entah sumur itu sangat dalam, atau dia jatuh sangat lambat, karena dia punya banyak waktu sebagai
dia turun untuk melihat sekelilingnya dan bertanya-tanya apa yang akan terjadi selanjutnya.
Pertama, dia mencoba melihat ke bawah dan melihat apa yang dia tuju, tetapi terlalu gelap
untuk melihat apa pun; kemudian dia melihat ke sisi sumur, dan memperhatikan bahwa itu adalah—
diisi dengan lemari dan rak buku; di sana-sini dia melihat peta dan gambar digantung
di atas pasak.
Dia menurunkan sebuah toples dari salah satu rak saat dia lewat; itu diberi label 'ORANGEMARMALADE',
tapi dia sangat kecewa karena botol itu kosong: dia tidak suka menjatuhkan toples karena takut fear
membunuh seseorang, jadi berhasil memasukkannya ke salah satu lemari saat dia jatuh melewatinya.

Tokenizer kalimat Punkt bawaan berfungsi dengan baik jika Anda ingin menandai paragraf sederhana. Setelah mengimpor modul NLTK, yang perlu Anda lakukan hanyalah menggunakan metode “sent_tokenize()” pada korpus teks besar. Namun, tokenizer kalimat Punkt mungkin tidak mendeteksi kalimat dengan benar ketika ada paragraf kompleks yang berisi banyak tanda baca, tanda seru, singkatan, atau simbol berulang. Tidak mungkin mendefinisikan cara standar untuk mengatasi masalah ini. Anda harus menulis kode khusus untuk mengatasi masalah ini menggunakan regex, manipulasi string, atau dengan melatih model data Anda sendiri alih-alih menggunakan model data Punkt bawaan.

Anda juga dapat mencoba mengubah model Punkt yang ada untuk memperbaiki tokenisasi yang salah dengan menggunakan beberapa parameter tambahan. Untuk melakukannya, ikuti dokumentasi tokenisasi Punkt resmi yang tersedia sini. Untuk menggunakan tweak kustom Anda sendiri, sedikit perubahan pada kode diperlukan:

dari nltk.tokenize.punkt mengimpor PunktSentenceTokenizer, PunktParameters
para = "Sumur itu sangat dalam, atau dia jatuh sangat lambat, karena dia punya banyak
waktu ketika dia turun untuk melihat sekelilingnya dan bertanya-tanya apa yang akan terjadi
lanjut. Pertama, dia mencoba untuk melihat ke bawah dan melihat apa yang dia tuju, tapi itu—
terlalu gelap untuk melihat apa pun; kemudian dia melihat ke sisi sumur, dan memperhatikan
bahwa mereka dipenuhi dengan lemari dan rak buku; di sana-sini dia melihat peta
dan gambar digantung di pasak. Dia mengambil toples dari salah satu rak saat dia
lulus; itu diberi label 'MARMALADE ORANGE', tetapi dia sangat kecewa karena itu
kosong: dia tidak suka menjatuhkan toples karena takut membunuh seseorang, jadi dia berhasil
memasukkannya ke salah satu lemari saat dia jatuh melewatinya."
punkt_params = PunktParameters()
punkt_params.abbrev_types = set(['Mr', 'Mrs', 'LLC'])
tokenizer = PunktSentenceTokenizer(punkt_params)
token = tokenizer.tokenize (para)
untuk t dalam token:
cetak (t, "\n")

Kode di atas melakukan pekerjaan yang sama dengan metode “sent_tokenize()”. Namun, sekarang Anda dapat menentukan aturan Anda sendiri menggunakan metode bawaan dan meneruskannya sebagai argumen, seperti yang dijelaskan dalam dokumentasi. Misalnya, beberapa singkatan telah ditambahkan ke kode di atas. Jika singkatan ini diikuti oleh tanda baca, mereka tidak akan dipecah menjadi kalimat baru. Perilaku normal adalah menggunakan titik atau titik sebagai indikasi akhir kalimat.

Kesimpulan

NLTK dan metode tokenisasinya cukup efisien dalam tokenizing dan pemrosesan data teks. Namun, model pra-terlatih mungkin tidak berfungsi 100% dengan jenis teks yang berbeda. Anda mungkin perlu meningkatkan model yang ada, melatih dan menyediakan sendiri, atau menulis kode Anda sendiri untuk memperbaiki anomali.

Petakan ulang tombol mouse Anda secara berbeda untuk perangkat lunak yang berbeda dengan Kontrol Tombol X-Mouse
Mungkin Anda membutuhkan alat yang dapat membuat kontrol mouse Anda berubah dengan setiap aplikasi yang Anda gunakan. Jika demikian, Anda dapat mencob...
Ulasan Mouse Nirkabel Microsoft Sculpt Touch
Saya baru-baru ini membaca tentang Microsoft Sculpt Touch mouse nirkabel dan memutuskan untuk membelinya. Setelah menggunakannya untuk sementara waktu...
Trackpad dan Mouse Pointer di Layar AppyMouse untuk Tablet Windows
Pengguna tablet sering melewatkan penunjuk mouse, terutama ketika mereka terbiasa menggunakan laptop. Layar sentuh Smartphone dan tablet hadir dengan ...