Rumah >Peranti teknologi >industri IT >Bermula dengan pemprosesan bahasa semula jadi di Python

Bermula dengan pemprosesan bahasa semula jadi di Python

Joseph Gordon-Levitt
Joseph Gordon-Levittasal
2025-02-10 10:51:09747semak imbas

Getting Started with Natural Language Processing in Python

Di dunia hari ini, sejumlah besar data tidak berstruktur, seperti data teks seperti komen media sosial, sejarah pelayaran, dan maklum balas pelanggan. Menghadapi data teks besar -besaran, saya tidak tahu di mana untuk mula menganalisisnya? Teknologi pemprosesan bahasa semulajadi Python (NLP) dapat membantu anda!

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!

mata teras

    Pemprosesan Bahasa Semula Jadi Python (NLP) melibatkan melanggar teks ke dalam elemen perkataan, menormalkan kata -kata ke dalam bentuk batang, dan membersihkan dokumen untuk analisis lanjut. Kami akan menggunakan perpustakaan NLTK Python untuk melaksanakan operasi ini.
  • Dua teknik untuk menukar kata -kata ke dalam bentuk batang adalah pengekstrakan batang dan pemulihan bentuk leksikal. Pengekstrakan batang adalah algoritma mudah yang menghilangkan afiks perkataan;
  • Pembersihan data di NLP melibatkan menghapuskan tanda baca dan menghentikan kata -kata (seperti kata -kata biasa seperti "i," "A" dan "The"), kerana kata -kata ini memberikan sedikit makna apabila menganalisis teks.
  • Selepas membersihkan teks, anda boleh menggunakan kelas NLTK
  • untuk mencari kekerapan perkataan. Ini sangat berguna untuk mencari istilah biasa dalam teks. FreqDist

Langkah berjaga -jaga

Tutorial ini menggunakan perpustakaan NLTK Python untuk melaksanakan semua operasi NLP pada teks. Apabila menulis tutorial ini, kami menggunakan versi NLTK 3.4. Anda boleh memasang perpustakaan menggunakan arahan PIP di terminal:

<code class="language-bash">pip install nltk==3.4</code>
Untuk memeriksa versi NLTK yang dipasang di dalam sistem, anda boleh mengimport perpustakaan ke dalam jurubahasa Python dan periksa versi:

<code class="language-python">import nltk
print(nltk.__version__)</code>
Dalam tutorial ini, untuk melaksanakan operasi tertentu di NLTK, anda mungkin perlu memuat turun sumber tertentu. Kami akan menerangkan setiap sumber apabila diperlukan.

Walau bagaimanapun, jika anda ingin mengelakkan memuat turun sumber satu persatu di peringkat kemudian tutorial, kini anda boleh memuat turun semua sumber sekali:

<code class="language-bash">python -m nltk.downloader all</code>
Langkah 1: Metamorfosis perkataan

sistem komputer tidak dapat memahami bahasa semula jadi dengan sendirinya. Langkah pertama dalam menangani bahasa semulajadi adalah untuk menukar teks asal menjadi elemen perkataan. Elemen perkataan adalah gabungan aksara berterusan dengan beberapa makna. Terserah kepada anda untuk memecahkan ayat -ayat ke dalam unsur -unsur leksikal. Sebagai contoh, cara yang mudah adalah untuk memecah kalimat dengan ruang untuk memecahkannya ke dalam satu perkataan.

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()

Seterusnya, anda perlu mengimport
<code class="language-bash">nltk.download('punkt')</code>
dari

untuk menggunakannya: nltk.tokenize word_tokenize Output kod

adalah seperti berikut:
<code class="language-python">from nltk.tokenize import word_tokenize
print(word_tokenize("Hi, this is a nice hotel."))</code>
<code class="language-bash">pip install nltk==3.4</code>

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.

Langkah 2: Tukar perkataan ke bentuk batang

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:

<code class="language-python">import nltk
print(nltk.__version__)</code>

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:

<code class="language-bash">python -m nltk.downloader all</code>

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:

<code class="language-bash">nltk.download('punkt')</code>

Selepas muat turun selesai, anda perlu mengimport kelas WordNetLemmatizer dan memulakannya:

<code class="language-python">from nltk.tokenize import word_tokenize
print(word_tokenize("Hi, this is a nice hotel."))</code>

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:

<code class="language-bash">pip install nltk==3.4</code>

Seterusnya, import fungsi pos_tag() dan jalankan pada ayat:

<code class="language-python">import nltk
print(nltk.__version__)</code>

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:

<code class="language-bash">python -m nltk.downloader all</code>

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():

<code class="language-bash">nltk.download('punkt')</code>

output kod di atas adalah seperti berikut:

<code class="language-python">from nltk.tokenize import word_tokenize
print(word_tokenize("Hi, this is a nice hotel."))</code>

output ini adalah seperti yang diharapkan, dan "membentuk" dan "majistret" ditukarkan kepada "membentuk" dan "majistret" masing -masing.

Langkah 3: Pembersihan Data

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:

<code class="language-python">from nltk.stem.porter import PorterStemmer
stemmer = PorterStemmer()
print(stemmer.stem("going"))</code>

Untuk mengeluarkan tanda baca dari elemen perkataan, anda hanya boleh menjalankan kod berikut:

<code class="language-python">print(stemmer.stem("constitutes"))</code>

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:

<code class="language-bash">nltk.download('wordnet')</code>

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:

<code class="language-python">from nltk.stem.wordnet import WordNetLemmatizer
lem = WordNetLemmatizer()</code>

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:

<code class="language-python">print(lem.lemmatize('constitutes', 'v'))</code>

Output contoh ini adalah seperti berikut:

<code class="language-bash">nltk.download('averaged_perceptron_tagger')</code>

seperti yang anda lihat, kata -kata tanda baca dan berhenti telah dikeluarkan.

Pengagihan frekuensi perkataan

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.

3

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

untuk mencari istilah biasa. Dalam kes ini, mari cuba mencari sepuluh istilah teratas:
<code class="language-bash">pip install nltk==3.4</code>

FreqDist Berikut adalah sepuluh istilah yang paling kerap dilihat dalam kisah dongeng ini: .most_common()

<code class="language-python">import nltk
print(nltk.__version__)</code>
Menurut jangkaan, tiga istilah yang paling biasa adalah tiga watak utama dalam cerita dongeng.

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.
<code class="language-bash">python -m nltk.downloader all</code>

Kesimpulan

Dalam tutorial ini, kita mempunyai pemahaman awal tentang pemprosesan bahasa semulajadi di Python. Kami menukar teks kepada unsur -unsur leksikal, menukar kata -kata ke bentuk batang mereka, dan akhirnya membersihkan teks untuk menghapuskan mana -mana bahagian yang tidak menambah makna kepada analisis. Walaupun kita melihat tugas -tugas NLP yang mudah dalam tutorial ini, terdapat banyak teknik lain untuk diterokai. Sebagai contoh, kami mungkin mahu melakukan pemodelan topik pada data teks, dengan matlamat mencari topik umum yang boleh dibincangkan oleh teks. Tugas yang lebih kompleks dalam NLP adalah untuk melaksanakan model analisis sentimen untuk menentukan emosi di sebalik mana -mana teks.

ada komen atau soalan? Jangan ragu untuk menghubungi saya di Twitter.

Soalan -soalan yang sering ditanya mengenai pemprosesan bahasa semulajadi dengan python (FAQ)

Apakah perbezaan utama antara pemprosesan bahasa semulajadi (NLP) dan pemahaman bahasa semulajadi (NLU)? pemprosesan bahasa semulajadi (NLP) dan pemahaman bahasa semulajadi (NLU) adalah dua sub-bidang kecerdasan buatan yang sering dikelirukan. NLP adalah konsep yang lebih luas yang mengandungi semua kaedah untuk berinteraksi dengan komputer menggunakan bahasa semula jadi. Ini termasuk pemahaman dan menjana bahasa manusia. NLU, sebaliknya, adalah subset NLP yang mengkhususkan diri dalam aspek pemahaman. Ia melibatkan penggunaan algoritma untuk memahami dan mentafsir bahasa manusia dengan cara yang berharga.

Bagaimana untuk meningkatkan ketepatan model NLP dalam Python?

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.

Apakah aplikasi biasa NLP di dunia nyata?

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.

Bagaimana leksikalisasi dalam kerja NLP?

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.

Apakah peranan kata -kata berhenti di NLP?

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.

Bagaimana menangani pelbagai bahasa di 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.

Apakah pengekstrakan batang dan pemulihan leksikal di NLP?

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.

Bagaimana menggunakan NLP untuk analisis sentimen?

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.

Apakah sintaks n-meta di NLP?

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.

Bagaimana menggunakan NLP untuk klasifikasi teks?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn