


Penggantian dan Pembetulan Perkataan dengan NLTK dalam Python
Apabila kita bercakap tentang pemprosesan bahasa semula jadi (NLP), salah satu tugas yang paling penting ialah menggantikan dan membetulkan perkataan. Ini melibatkan teknik seperti stemming, lemmatization, pembetulan ejaan, dan penggantian perkataan berdasarkan sinonim dan antonim. Menggunakan teknik ini boleh meningkatkan kualiti analisis teks, sama ada untuk enjin carian, chatbots atau analisis sentimen. Mari terokai cara pustaka NLTK dalam Python membantu dengan tugasan ini.
Berpunca: Memotong Akhiran
Stemming ialah teknik yang membuang akhiran daripada perkataan, hanya meninggalkan akar. Sebagai contoh, perkataan "berlari" mempunyai akar "corr". Ini berguna untuk mengurangkan jumlah perkataan yang perlu diindeks oleh enjin carian.
Dalam NLTK, kita boleh menggunakan PorterStemmer untuk melakukan stemming. Jom lihat cara ia berfungsi:
from nltk.stem import PorterStemmer stemmer = PorterStemmer() print(stemmer.stem("correndo")) # Saída: corr print(stemmer.stem("correção")) # Saída: correc
Di sini, kita melihat bahawa stemming memotong akhiran dan hanya meninggalkan akar perkataan. Ini membantu anda kekal fokus pada makna utama perkataan, tanpa perlu risau tentang variasinya.
Lemmatisasi: Kembali ke Bentuk Asas
Lemmatisasi adalah serupa dengan berpunca, tetapi bukannya memotong akhiran, ia menukar perkataan itu kepada bentuk dasarnya, atau lemma. Sebagai contoh, "berlari" menjadi "lari". Ini lebih bijak sedikit daripada berpunca, kerana ia mengambil kira konteks perkataan.
Untuk melakukan lemmatisasi dalam NLTK, kami menggunakan WordNetLemmatizer:
from nltk.stem import WordNetLemmatizer lemmatizer = WordNetLemmatizer() print(lemmatizer.lemmatize("correndo", pos='v')) # Saída: correr print(lemmatizer.lemmatize("correções")) # Saída: correção
Dalam contoh ini, kami menggunakan fungsi lemmatize dan, untuk kata kerja, kami menentukan bahagian pertuturan (pos) sebagai 'v'. Ini membantu NLTK memahami konteks perkataan dengan lebih baik.
Ungkapan Biasa untuk Penggantian
Kadangkala, kami ingin menggantikan perkataan atau corak tertentu dalam teks. Untuk ini, ungkapan biasa (regex) sangat berguna. Contohnya, kita boleh menggunakan regex untuk mengembangkan pengecutan, seperti "tidak" kepada "tidak".
Berikut ialah cara kita boleh melakukannya dengan NLTK:
import re texto = "Eu não posso ir à festa. Você não vai?" expansoes = [("não", "não")] def expandir_contracoes(texto, expansoes): for (contraido, expandido) in expansoes: texto = re.sub(r'\b' + contraido + r'\b', expandido, texto) return texto print(expandir_contracoes(texto, expansoes)) # Saída: Eu não posso ir à festa. Você não vai?
Dalam contoh ini, fungsi expand_contracoes menggunakan regex untuk mencari dan menggantikan perkataan yang dikontrak dalam teks.
Semak Ejaan dengan Enchant
Satu lagi tugas penting ialah pembetulan ejaan. Kadangkala teks mempunyai kesilapan menaip atau ejaan, dan membetulkannya adalah penting untuk analisis teks. Perpustakaan pyenchant sangat bagus untuk ini.
Pertama, kita perlu memasang pustaka pyenchant:
pip install pyenchant
Selepas itu, kita boleh menggunakan Enchant untuk membetulkan perkataan:
import enchant d = enchant.Dict("pt_BR") palavra = "corrigindo" if d.check(palavra): print(f"{palavra} está correta") else: print(f"{palavra} está incorreta, sugestões: {d.suggest(palavra)}")
Jika perkataan itu salah, Enchant mencadangkan pembetulan.
Penggantian Sinonim
Menggantikan perkataan dengan sinonimnya boleh memperkayakan teks, mengelakkan pengulangan dan menambah baik gaya. Dengan WordNet, kita boleh mencari sinonim dengan mudah.
Begini cara kami boleh melakukannya:
from nltk.corpus import wordnet def substituir_sinonimos(palavra): sinonimos = [] for syn in wordnet.synsets(palavra, lang='por'): for lemma in syn.lemmas(): sinonimos.append(lemma.name()) return set(sinonimos) print(substituir_sinonimos("bom")) # Saída: {'bom', 'legal', 'ótimo', 'excelente'}
Dalam contoh ini, fungsi replace_synonyms mengembalikan senarai sinonim untuk perkataan yang diberikan.
Menggantikan Antonim
Seperti sinonim, antonim juga berguna, terutamanya untuk tugasan seperti analisis sentimen. Kita boleh menggunakan WordNet untuk mencari antonim:
def substituir_antonimos(palavra): antonimos = [] for syn in wordnet.synsets(palavra, lang='por'): for lemma in syn.lemmas(): if lemma.antonyms(): antonimos.append(lemma.antonyms()[0].name()) return set(antonimos) print(substituir_antonimos("bom")) # Saída: {'mau', 'ruim'}
Fungsi ini mencari antonim untuk perkataan yang diberikan.
Aplikasi Praktikal
Jom lihat beberapa aplikasi praktikal teknik ini.
Analisis Sentimen
Analisis sentimen melibatkan penentuan kekutuban (positif, negatif atau neutral) teks. Penggantian perkataan boleh menambah baik analisis ini.
texto = "Eu adorei o filme, mas a comida estava ruim." palavras = word_tokenize(texto, language='portuguese') polaridade = 0 for palavra in palavras: sinsets = wordnet.synsets(palavra, lang='por') if sinsets: for syn in sinsets: polaridade += syn.pos_score() - syn.neg_score() print("Polaridade do texto:", polaridade) # Saída: Polaridade do texto: 0.25 (por exemplo)
Normalisasi Teks
Penormalan teks melibatkan penukaran teks kepada bentuk yang konsisten. Ini mungkin termasuk membetulkan ejaan, mengalih keluar kata henti dan menggantikan sinonim.
stopwords = set(stopwords.words('portuguese')) texto = "A análise de textos é uma área fascinante do PLN." palavras = word_tokenize(texto, language='portuguese') palavras_filtradas = [w for w in palavras se não w in stopwords] texto_normalizado = " ".join(palavras_filtradas) print(texto_normalizado) # Saída: "análise textos área fascinante PLN"
Carian Teks yang Diperbaiki
Dalam enjin carian, menggantikan sinonim boleh meningkatkan hasil carian dengan mencari dokumen yang menggunakan sinonim untuk kata kunci yang dicari.
consulta = "bom filme" consulta_expandidas = [] for palavra em consulta.split(): sinonimos = substituir_sinonimos(palavra) consulta_expandidas.extend(sinonimos) print("Consulta expandida:", " ".join(consulta_expandidas)) # Saída: "bom legal ótimo excelente filme"
Kesimpulan
Dalam teks ini, kami meneroka pelbagai penggantian perkataan dan teknik pembetulan menggunakan perpustakaan NLTK dalam Python. Kami melihat cara melakukan stemming, lemmatization, menggunakan ungkapan biasa untuk menggantikan perkataan, pembetulan ejaan dengan Enchant dan menggantikan sinonim dan antonim dengan WordNet. Kami juga membincangkan aplikasi praktikal teknik ini dalam analisis sentimen, penormalan teks dan enjin carian.
Menggunakan teknik ini boleh meningkatkan kualiti analisis teks dengan ketara, menjadikan keputusan lebih tepat dan relevan. NLTK menawarkan rangkaian alat yang berkuasa untuk mereka yang bekerja dengan pemprosesan bahasa semula jadi dan memahami cara menggunakan alatan ini adalah penting untuk mana-mana projek NLP.
Atas ialah kandungan terperinci Penggantian dan Pembetulan Perkataan dengan NLTK dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Cara Menggunakan Python untuk Mencari Pengagihan Zipf Fail Teks

Bagaimana saya menggunakan sup yang indah untuk menghuraikan html?

Cara Bekerja Dengan Dokumen PDF Menggunakan Python

Cara Cache Menggunakan Redis dalam Aplikasi Django

Memperkenalkan Toolkit Bahasa Alam (NLTK)

Bagaimana untuk melakukan pembelajaran mendalam dengan Tensorflow atau Pytorch?
