Bidang kecerdasan buatan yang dikenali sebagai "pemprosesan bahasa semula jadi" (NLP) memfokuskan pada cara komputer berinteraksi dengan bahasa manusia. Ia melibatkan penciptaan algoritma dan model yang membolehkan komputer memahami, mentafsir dan menjana bahasa manusia. Pustaka Natural Language Toolkit (NLTK) dan Python, bahasa pengaturcaraan tujuan umum, menyediakan alatan dan sumber yang berkuasa untuk tugasan NLP. Dalam artikel ini, kami akan meneroka asas NLP menggunakan Python dan NLTK dan bagaimana ia boleh digunakan dalam pelbagai aplikasi NLP.
Pemprosesan bahasa semula jadi merangkumi pelbagai tugas yang pelbagai, termasuk menjawab soalan, terjemahan mesin, analisis sentimen, pengecaman entiti bernama dan klasifikasi teks. Pemahaman dan penghasilan bahasa adalah dua kategori luas di mana tugas-tugas ini boleh dibahagikan.
Memahami bahasa ialah langkah pertama dalam pemprosesan bahasa semula jadi. Pembahagian perkataan, penyusunan, lemmatisasi, penandaan sebahagian daripada pertuturan dan analisis sintaksis adalah beberapa tugas yang terlibat. NLTK menyediakan alat dan sumber lengkap yang diperlukan untuk menyelesaikan tugasan ini dengan cepat.
Mari kita menyelami beberapa contoh kod untuk melihat cara NLTK boleh digunakan untuk menyelesaikan tugasan ini:
Tokenisasi ialah proses memecahkan teks kepada perkataan atau ayat komponennya. NLTK menyediakan beberapa tokenizer yang boleh mengendalikan pelbagai bahasa dan keperluan tokenisasi. Contoh pembahagian ayat kepada perkataan adalah seperti berikut:
import nltk nltk.download('punkt') from nltk.tokenize import word_tokenize sentence = "Natural Language Processing is amazing!" tokens = word_tokenize(sentence) print(tokens)
['Natural', 'Language', 'Processing', 'is', 'amazing', '!']
Stemming dan lemmatisasi bertujuan untuk mengurangkan perkataan kepada bentuk akarnya. NLTK menyediakan algoritma untuk stemming dan lemmatization, seperti PorterStemmer dan WordNetLemmatizer. Berikut adalah contoh:
from nltk.stem import PorterStemmer, WordNetLemmatizer stemmer = PorterStemmer() lemmatizer = WordNetLemmatizer() word = "running" stemmed_word = stemmer.stem(word) lemmatized_word = lemmatizer.lemmatize(word) print("Stemmed Word:", stemmed_word) print("Lemmatized Word:", lemmatized_word)
Stemmed Word: run Lemmatized Word: running
Pelabelan sebahagian daripada pertuturan memberikan label tatabahasa kepada perkataan dalam ayat, seperti kata nama, kata kerja, kata adjektif, dsb. Ia membantu dalam memahami struktur sintaksis ayat dan penting untuk tugasan seperti mengenal pasti entiti yang dinamakan dan ringkasan teks. Berikut adalah contoh:
nltk.download('averaged_perceptron_tagger') from nltk import pos_tag from nltk.tokenize import word_tokenize sentence = "NLTK makes natural language processing easy." tokens = word_tokenize(sentence) pos_tags = pos_tag(tokens) print(pos_tags)
[('NLTK', 'NNP'), ('makes', 'VBZ'), ('natural', 'JJ'), ('language', 'NN'), ('processing', 'NN'), ('easy', 'JJ'), ('.', '.')]
Untuk mewakili ayat dalam struktur seperti pokok yang dipanggil pokok parse, analisis sintaksis melibatkan menganalisis struktur tatabahasa ayat. Analisis sintaksis disediakan oleh penghurai NLTK. Contoh penggunaan RecursiveDescentParser adalah seperti berikut:
nltk.download('averaged_perceptron_tagger') nltk.download('maxent_ne_chunkchunker') from nltk import pos_tag, RegexpParser from nltk.tokenize import word_tokenize sentence = "The cat is sitting on the mat." tokens = word_tokenize(sentence) pos_tags = pos_tag(tokens) grammar = r""" NP: {<DT>?<JJ>*<NN>} # NP VP: {<VB.*><NP|PP>?} # VP PP: {<IN><NP>} # PP """ parser = RegexpParser(grammar) parse_tree = parser.parse(pos_tags) parse_tree.pretty_print()
S ____________|___ | VP | ___________|____ | | PP | | ____|___ NP | NP | | | _______|___ | DT VBZ JJ NN IN | | | | | The is sitting cat on the mat
Selain pemahaman bahasa, Natural Language Processing (NLP) melibatkan kebolehan mencipta sesuatu yang menyerupai bahasa manusia. Menggunakan kaedah seperti pemodelan bahasa, penjanaan teks dan terjemahan mesin, NLTK menyediakan alatan untuk menjana teks. Rangkaian saraf berulang (RNN) dan pengubah bentuk ialah model bahasa berasaskan pembelajaran mendalam yang membantu meramal dan menjana teks koheren kontekstual.
Analisis Sentimen: Analisis sentimen bertujuan untuk menentukan sentimen yang dinyatakan dalam teks tertentu, sama ada positif, negatif atau neutral. Menggunakan NLTK, anda boleh melatih pengelas pada set data berlabel untuk mengklasifikasikan sentimen secara automatik dalam ulasan pelanggan, siaran media sosial atau sebarang data teks lain.
Klasifikasi Teks: Klasifikasi teks ialah proses mengklasifikasikan dokumen teks ke dalam kategori atau kelas yang telah ditetapkan. NLTK termasuk beberapa algoritma dan teknik, termasuk Naive Bayes, Mesin Vektor Sokongan (SVM) dan Pokok Keputusan, yang boleh digunakan untuk tugas seperti pengesanan spam, klasifikasi topik dan klasifikasi sentimen.
Pengiktirafan Entiti Dinamakan: Pengiktirafan Entiti Dinamakan (NER) dapat mengenal pasti dan mengelaskan entiti yang dinamakan, seperti nama orang, organisasi, lokasi dan tarikh, dalam teks yang diberikan. NLTK menyediakan model dan alatan pra-latihan yang boleh melaksanakan NER pada pelbagai jenis data teks untuk mencapai aplikasi seperti pengekstrakan maklumat dan menjawab soalan.
Terjemahan Mesin: NLTK membolehkan pengaturcara mencipta aplikasi yang boleh menterjemah teks secara automatik daripada satu bahasa ke bahasa lain dengan menyediakan akses kepada alatan terjemahan mesin seperti Terjemahan Google. Untuk menghasilkan terjemahan yang tepat, sistem ini menggunakan model berasaskan statistik dan rangkaian saraf yang berkuasa.
Ringkasan Teks: Menggunakan Pemprosesan Bahasa Semulajadi (NLP) untuk menjana ringkasan dokumen atau artikel yang panjang secara automatik. Algoritma NLP boleh menghasilkan ringkasan ringkas yang menangkap intipati kandungan asal dengan sempurna dengan menyerlahkan ayat atau frasa utama yang paling kritikal dalam teks. Ini sangat membantu untuk projek seperti pengagregatan berita, klasifikasi dokumen atau ringkasan ringkas teks panjang.
Sistem Soal Jawab: Membina sistem soal jawab yang boleh memahami pertanyaan pengguna dan memberikan jawapan yang relevan boleh memanfaatkan teknologi pemprosesan bahasa semula jadi. Program ini memeriksa pertanyaan, mencari data yang berkaitan dan menjana jawapan ringkas. Pengguna boleh mendapatkan maklumat khusus dengan cepat dan cekap dengan menggunakannya dalam chatbots, pembantu maya dan sistem mendapatkan maklumat.
Pengeluaran Maklumat: Pemprosesan bahasa semula jadi memungkinkan untuk mengekstrak data berstruktur daripada data teks tidak berstruktur. Dengan menggunakan kaedah seperti pengecaman entiti yang dinamakan dan pengekstrakan perhubungan, algoritma NLP boleh mengenal pasti entiti tertentu, seperti orang, organisasi dan tempat serta perhubungan mereka dalam teks tertentu. Perlombongan data, perolehan maklumat dan pembinaan graf pengetahuan semuanya boleh menggunakan data ini.
Bidang pemprosesan bahasa semula jadi yang menarik membolehkan komputer memahami, menghuraikan dan menjana bahasa manusia. Apabila digabungkan dengan pustaka NLTK, Python menyediakan set lengkap alatan dan sumber untuk tugasan NLP. Untuk menyelesaikan pelbagai aplikasi NLP, NLTK menyediakan algoritma dan model yang diperlukan untuk penandaan sebahagian daripada pertuturan, analisis sentimen dan terjemahan mesin. Dengan menggunakan contoh kod, Python dan NLTK, kami boleh mengeluarkan cerapan baharu daripada data teks dan mencipta sistem pintar yang berkomunikasi dengan orang dengan cara yang lebih semula jadi dan intuitif. Jadi, sediakan Python IDE anda, import NLTK dan mulakan perjalanan untuk menemui misteri pemprosesan bahasa semula jadi.
Atas ialah kandungan terperinci Pemprosesan bahasa semula jadi dengan Python dan NLTK. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!