Tutorial ini direka untuk membimbing anda untuk menggunakan konsep teras NLP dan menganalisis data teks dalam Python. Kami akan belajar bagaimana untuk memecahkan teks ke dalam unit yang lebih kecil (metamorfosis perkataan), menormalkan kata -kata ke dalam bentuk batang (pengekstrakan batang dan pemulihan morfologi), dan bagaimana untuk membersihkan dokumen sebagai persediaan untuk analisis lanjut.
mari kita mulakan!
FreqDist
pip install nltk==3.4
import nltk print(nltk.__version__)
python -m nltk.downloader all
Di perpustakaan NLTK, anda boleh menggunakan fungsi
untuk menukar rentetan kepada elemen leksikal. Walau bagaimanapun, anda perlu memuat turun sumber punkt. Jalankan arahan berikut di terminal:
word_tokenize()
nltk.download('punkt')
untuk menggunakannya: nltk.tokenize
word_tokenize
Output kod
from nltk.tokenize import word_tokenize print(word_tokenize("Hi, this is a nice hotel."))
pip install nltk==3.4
anda akan melihat bahawa word_tokenize
bukan sahaja memisahkan rentetan berdasarkan ruang, tetapi juga memisahkan tanda baca ke dalam elemen perkataan. Menjaga atau mengeluarkan tanda baca bergantung kepada keperluan analisis anda.
Apabila berurusan dengan bahasa semulajadi, anda sering menyedari bahawa terdapat pelbagai bentuk tatabahasa kata yang sama. Sebagai contoh, "pergi," "pergi" dan "pergi" adalah semua bentuk yang berbeza dari kata kerja yang sama "pergi".
Walaupun projek anda mungkin perlu mengekalkan pelbagai bentuk kata -kata tatabahasa, mari kita bincangkan cara untuk menukar bentuk tatabahasa yang berbeza dari perkataan yang sama ke dalam bentuk batangnya. Terdapat dua teknik yang boleh anda gunakan untuk menukar perkataan ke dalam bentuk batangnya.
Teknik pertama adalah pengekstrakan. Pengekstrakan batang adalah algoritma mudah yang menghilangkan afiks perkataan. Terdapat pelbagai algoritma pengekstrakan yang terdapat di NLTK. Dalam tutorial ini, kami akan menggunakan algoritma Porter.
Kami mula -mula mengimport nltk.stem.porter
dari PorterStemmer
. Seterusnya, kami memulakan pengekstrakan stemming ke pembolehubah stemmer
, dan kemudian gunakan kaedah .stem()
untuk mencari bentuk berpunca perkataan:
import nltk print(nltk.__version__)
output kod di atas adalah GO. Sekiranya anda menjalankan pengekstrakan yang berpunca untuk bentuk lain "Go" yang diterangkan di atas, anda akan melihat bahawa pengekstrak yang berpunca mengembalikan bentuk yang sama "Go". Walau bagaimanapun, sejak pengekstrakan yang berpunca hanyalah algoritma mudah berdasarkan menghapuskan afiks perkataan, ia gagal apabila kata -kata digunakan kurang kerap dalam bahasa.
Sebagai contoh, apabila anda cuba menggunakan pengekstrakan yang berpunca untuk perkataan "membentuk", ia memberikan hasil yang tidak disengajakan:
python -m nltk.downloader all
anda akan melihat bahawa output adalah "Constitut".
Masalah ini dapat diselesaikan dengan mengambil pendekatan yang lebih kompleks yang melihat bentuk batang perkataan dalam konteks tertentu. Proses ini dipanggil pengurangan bentuk perkataan. Pemulihan bentuk perkataan menormalkan kata -kata berdasarkan konteks dan perbendaharaan kata teks. Di NLTK, anda boleh menggunakan kelas WordNetLemmatizer
untuk melakukan pemulihan ayat morfologi.
Pertama, anda perlu memuat turun sumber WordNet dari pemuat turun NLTK di terminal Python:
nltk.download('punkt')
Selepas muat turun selesai, anda perlu mengimport kelas WordNetLemmatizer
dan memulakannya:
from nltk.tokenize import word_tokenize print(word_tokenize("Hi, this is a nice hotel."))
Untuk menggunakan pemulihan morfologi, gunakan kaedah .lemmatize()
. Ia menerima dua parameter: perkataan dan konteks. Dalam contoh kami, kami akan menggunakan "V" sebagai konteks. Selepas melihat output kaedah .lemmatize()
, kami akan meneroka konteks lagi:
<code>['Hi', ',', 'this', 'is', 'a', 'nice', 'hotel', '.']</code>
anda akan melihat bahawa kaedah .lemmatize()
dengan betul menukarkan perkataan "membentuk" kepada bentuk batangnya "membentuk". Anda juga akan melihat bahawa pemulihan bentuk perkataan mengambil masa lebih lama daripada pengekstrakan yang berpunca kerana algoritma lebih kompleks.
mari kita periksa cara untuk menentukan parameter kedua kaedah .lemmatize()
. NLTK mempunyai fungsi pos_tag()
yang membantu menentukan konteks kata -kata dalam satu ayat. Walau bagaimanapun, anda perlu memuat turun averaged_perceptron_tagger
sumber:
pip install nltk==3.4
Seterusnya, import fungsi pos_tag()
dan jalankan pada ayat:
import nltk print(nltk.__version__)
anda akan melihat bahawa output adalah senarai pasangan. Setiap pasangan mengandungi elemen perkataan dan tagnya yang mewakili konteks elemen perkataan di seluruh teks. Sila ambil perhatian bahawa label tanda baca itu sendiri:
python -m nltk.downloader all
bagaimana untuk menyahkod konteks setiap perkataan? Berikut adalah senarai lengkap semua tag di web dan makna yang sepadan. Sila ambil perhatian bahawa semua kata nama mempunyai label bermula dengan "N" dan semua kata kerja mempunyai label bermula dengan "V". Kita boleh menggunakan maklumat ini dalam parameter kedua kaedah .lemmatize()
:
nltk.download('punkt')
output kod di atas adalah seperti berikut:
from nltk.tokenize import word_tokenize print(word_tokenize("Hi, this is a nice hotel."))
output ini adalah seperti yang diharapkan, dan "membentuk" dan "majistret" ditukarkan kepada "membentuk" dan "majistret" masing -masing.
Langkah seterusnya dalam menyediakan data adalah untuk membersihkan data dan mengeluarkan apa -apa yang tidak akan menambah makna pada analisis anda. Secara keseluruhan, kita akan melihat bagaimana tanda baca dan kata -kata berhenti dapat dikeluarkan dari analisis.
Mengeluarkan tanda baca adalah tugas yang agak mudah. string
Objek punctuation
perpustakaan mengandungi semua tanda baca dalam bahasa Inggeris:
<code>['Hi', ',', 'this', 'is', 'a', 'nice', 'hotel', '.']</code>
output coretan kod ini adalah seperti berikut:
from nltk.stem.porter import PorterStemmer stemmer = PorterStemmer() print(stemmer.stem("going"))
Untuk mengeluarkan tanda baca dari elemen perkataan, anda hanya boleh menjalankan kod berikut:
print(stemmer.stem("constitutes"))
Seterusnya, kita akan memberi tumpuan kepada cara menghapuskan kata -kata berhenti. Kata -kata hentikan kata -kata yang biasa digunakan dalam bahasa, seperti "Saya," "A" dan "The", dan ketika menganalisis teks, kata -kata ini memberikan sedikit makna. Oleh itu, kami akan mengeluarkan kata -kata berhenti dari analisis. Pertama, muat turun sumber stopwords dari NLTK Downloader:
nltk.download('wordnet')
Selepas memuat turun selesai, import nltk.corpus
dari stopwords
dan gunakan kaedah words()
, dengan "Bahasa Inggeris" sebagai parameter. Berikut adalah senarai 179 perkataan berhenti dalam bahasa Inggeris:
from nltk.stem.wordnet import WordNetLemmatizer lem = WordNetLemmatizer()
kita boleh menggabungkan contoh perkataan memulihkan contoh dengan konsep yang dibincangkan dalam bahagian ini untuk membuat fungsi berikut clean_data()
. Di samping itu, kami akan menukar perkataan ke huruf kecil sebelum membandingkan sama ada ia adalah sebahagian daripada senarai Word Stop. Dengan cara ini, jika perkataan berhenti muncul pada permulaan ayat dan memanfaatkan, kita masih boleh menangkapnya:
print(lem.lemmatize('constitutes', 'v'))
Output contoh ini adalah seperti berikut:
nltk.download('averaged_perceptron_tagger')
seperti yang anda lihat, kata -kata tanda baca dan berhenti telah dikeluarkan.
Sekarang anda sudah biasa dengan teknik pembersihan asas di NLP, mari kita cuba mencari kekerapan kata -kata dalam teks. Dalam latihan ini, kami akan menggunakan teks kisah "tikus, burung, dan sosej dongeng", yang boleh didapati secara percuma di projek Gutenberg. Kami akan menyimpan teks kisah dongeng ini dalam rentetan text
.
text
Untuk mencari pengagihan frekuensi perkataan dalam teks, anda boleh menggunakan kelas clean_data
nltk. Inisialisasi kelas dengan elemen perkataan sebagai parameter. Kemudian gunakan kaedah
pip install nltk==3.4
FreqDist
Berikut adalah sepuluh istilah yang paling kerap dilihat dalam kisah dongeng ini: .most_common()
import nltk print(nltk.__version__)
Apabila menganalisis teks, kekerapan perkataan mungkin tidak penting. Secara amnya, langkah seterusnya dalam NLP adalah untuk menjana statistik-TF-IDF (kekerapan dokumen frekuensi word)-yang menunjukkan kepentingan kata-kata dalam satu set dokumen.
python -m nltk.downloader all
Kesimpulan
ada komen atau soalan? Jangan ragu untuk menghubungi saya di Twitter.
Soalan -soalan yang sering ditanya mengenai pemprosesan bahasa semulajadi dengan python (FAQ)
Meningkatkan ketepatan model NLP melibatkan pelbagai strategi. Pertama, anda boleh menggunakan lebih banyak data latihan. Semakin banyak data pembelajaran model anda, semakin baik prestasinya. Kedua, pertimbangkan untuk menggunakan teknik NLP yang berbeza. Sebagai contoh, jika anda menggunakan beg perkataan (busur), anda mungkin ingin mencuba kekerapan dokumen WordFrequency-Inverse (TF-IDF) atau Word2VEC. Akhirnya, penalaan parameter model juga boleh menyebabkan peningkatan yang ketara.
NLP mempunyai aplikasi yang luas di dunia nyata. Ini termasuk terjemahan bahasa, analisis sentimen, chatbots, pembantu suara seperti Siri dan Alexa, ringkasan teks dan pengesanan spam e -mel.
Metamorfosis perkataan adalah proses penguraian teks ke dalam kata -kata tunggal atau elemen perkataan. Ini adalah langkah utama dalam NLP kerana ia membolehkan model memahami dan menganalisis teks. Di Python, anda boleh menggunakan fungsi word_tokenize
perpustakaan NLTK untuk melakukan leksikalisasi.
Kata -kata berhenti adalah kata -kata biasa yang sering ditapis semasa fasa pra -proses NLP kerana ia tidak mengandungi maklumat yang bermakna. Contohnya termasuk "adalah", "", "dan", dan sebagainya. Mengeluarkan kata -kata ini dapat membantu meningkatkan prestasi model NLP.
Melupuskan pelbagai bahasa di NLP boleh mencabar kerana perbezaan tatabahasa, sintaks, dan perbendaharaan kata. Walau bagaimanapun, perpustakaan NLTK Python menyokong pelbagai bahasa. Anda juga boleh menggunakan perpustakaan pengesanan bahasa seperti langdetect
untuk mengenal pasti bahasa teks dan kemudian memprosesnya.
Pengekstrakan batang dan pemulihan morfologi adalah teknik yang digunakan untuk memudahkan kata -kata ke dalam bentuk batang atau akarnya. Perbezaan utama di antara mereka ialah pengekstrakan batang sering mencipta kata-kata yang tidak wujud, sementara prinsip pemulihan bentuk perkataan mengurangkan perkataan itu kepada bentuk akar linguistik yang betul.
Analisis emosi melibatkan menentukan emosi yang dinyatakan dalam teks. Ini boleh dilakukan menggunakan pelbagai teknik NLP. Sebagai contoh, anda boleh dengan mudah melakukan analisis sentimen menggunakan perpustakaan TextBlob di Python.
n metagram adalah urutan berterusan n item berturut -turut dalam teks atau sampel ucapan tertentu. Mereka digunakan untuk NLP untuk meramalkan item seterusnya dalam urutan. Sebagai contoh, dalam tatabahasa binari (n = 2), anda menganggap pasangan perkataan untuk analisis atau ramalan.
Klasifikasi teks melibatkan mengklasifikasikan teks ke dalam kategori yang telah ditetapkan. Ini boleh dilakukan menggunakan pelbagai teknik NLP dan algoritma pembelajaran mesin. Sebagai contoh, anda boleh menggunakan beg perkataan atau TF-IDF untuk pengekstrakan ciri dan kemudian masukkan ciri-ciri ini ke dalam model pembelajaran mesin untuk klasifikasi.
Atas ialah kandungan terperinci Bermula dengan pemprosesan bahasa semula jadi di Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!