0% menganggap dokumen ini bermanfaat (0 suara)
3 tayangan4 halaman

Kodd Python NLP Atau Text Mining

Dokumen ini menjelaskan proses pengambilan dan pemrosesan data dari dataset '20 Newsgroups' menggunakan Python, termasuk langkah-langkah preprocessing teks seperti penghapusan stopwords dan stemming. Model klasifikasi Naive Bayes dibangun untuk mengklasifikasikan teks ke dalam kategori 'sci.space' dan 'sci.med', dengan evaluasi akurasi model yang dilakukan menggunakan confusion matrix. Selain itu, terdapat contoh penggunaan model untuk memprediksi kategori dari input teks baru.
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
3 tayangan4 halaman

Kodd Python NLP Atau Text Mining

Dokumen ini menjelaskan proses pengambilan dan pemrosesan data dari dataset '20 Newsgroups' menggunakan Python, termasuk langkah-langkah preprocessing teks seperti penghapusan stopwords dan stemming. Model klasifikasi Naive Bayes dibangun untuk mengklasifikasikan teks ke dalam kategori 'sci.space' dan 'sci.med', dengan evaluasi akurasi model yang dilakukan menggunakan confusion matrix. Selain itu, terdapat contoh penggunaan model untuk memprediksi kategori dari input teks baru.
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd

import pandas as pd

from [Link] import fetch_20newsgroups

# 1. Mengambil data asli dari library scikit-learn


# Kita pilih kategori '[Link]' dan '[Link]' agar data terlihat "alami"
categories = ['[Link]', '[Link]']
newsgroups_data = fetch_20newsgroups(subset='train',
categories=categories,
remove=('headers', 'footers', 'quotes'))

# 2. Memasukkan ke dalam DataFrame Pandas agar mudah dilihat di Jupyter


df = [Link]({
'text': newsgroups_data.data,
'target': newsgroups_data.target
})

# Menambahkan kolom nama kategori agar mudah dibaca manusia


df['category_name'] = df['target'].apply(lambda x: newsgroups_data.target_names[x])

# 3. Menampilkan data (kita lihat 10 data pertama)


print(f"Total data yang dimuat: {len(df)} dokumen")
display([Link](10))

# Melihat isi teks pada baris pertama secara lengkap


print("=== CONTOH TEKS ASLI (DOKUMEN KE-0) ===")
print(df['text'].iloc[0])

import nltk
from [Link] import stopwords
from [Link] import PorterStemmer
from [Link] import word_tokenize
import re

# Download resources yang diperlukan


[Link]('punkt')
[Link]('stopwords')

# Inisialisasi
stop_words = set([Link]('english'))
stemmer = PorterStemmer()
import nltk

# Download semua paket dasar yang dibutuhkan untuk tokenisasi dan stopwords
[Link]('punkt')
[Link]('punkt_tab') # Tambahkan ini jika menggunakan versi NLTK terbaru
[Link]('stopwords')

print("Download selesai. Silakan jalankan kembali fungsi preprocessing Anda.")

def preprocess_text(text):
# 1. Case Folding & Cleaning (Lexical Analysis dasar)
# Menghapus karakter non-alfabet (angka dan tanda baca)
text = [Link](r'[^a-zA-Z\s]', '', [Link]())

# 2. Tokenization (Memecah kalimat menjadi kata)


tokens = word_tokenize(text)

# 3. Stopword Removal & Stemming (Sesuai teori slide)


# Kita filter kata yang bukan stopword, lalu kita potong ke kata dasar
cleaned_tokens = [[Link](w) for w in tokens if w not in stop_words]

# Menggabungkan kembali menjadi satu string


return " ".join(cleaned_tokens)

# Mari kita coba pada satu contoh data alami tadi


sample_text = df['text'].iloc[0]
processed_sample = preprocess_text(sample_text)

print("=== PERBANDINGAN SEBELUM & SESUDAH PREPROCESSING ===")


print(f"\nTEKS ASLI (100 karakter pertama):\n{sample_text[:100]}...")
print(f"\nTEKS SETELAH PREPROCESSING (Stopwords hilang & Stemming aktif):\
n{processed_sample[:100]}...")

# Proses ini mungkin memakan waktu beberapa detik karena melakukan stemming ke ribuan kata
df['text_cleaned'] = df['text'].apply(preprocess_text)

# Tampilkan hasil dalam tabel Jupyter


display(df[['category_name', 'text', 'text_cleaned']].head())
from sklearn.model_selection import train_test_split

# Membagi data: 80% untuk latihan, 20% untuk ujian


X_train, X_test, y_train, y_test = train_test_split(
df['text_cleaned'],
df['target'],
test_size=0.2,
random_state=42
)

print(f"Jumlah data latihan: {len(X_train)}")


print(f"Jumlah data ujian: {len(X_test)}")

from sklearn.feature_extraction.text import TfidfVectorizer


from sklearn.naive_bayes import MultinomialNB
from [Link] import Pipeline

# Membuat Pipeline: Indexing (TF-IDF) -> Ranking/Classification (Naive Bayes)


model_final = Pipeline([
('tfidf', TfidfVectorizer()),
('clf', MultinomialNB())
])

# Proses Training (Sisi kanan slide: membangun sistem dari collection)


model_final.fit(X_train, y_train)
print("Model telah berhasil dilatih menggunakan Teorema Bayes.")

from [Link] import classification_report, confusion_matrix, accuracy_score


import seaborn as sns
import [Link] as plt

# Memprediksi data ujian


y_pred = model_final.predict(X_test)

# Menampilkan Laporan Evaluasi (Sesuai terminologi slide)


print("=== LAPORAN EVALUASI MODEL ===")
print(classification_report(y_test, y_pred, target_names=categories))

# Menampilkan Akurasi Akhir


acc = accuracy_score(y_test, y_pred)
print(f"Akurasi Keseluruhan: {acc:.2%}")
cm = confusion_matrix(y_test, y_pred)
[Link](figsize=(6,4))
[Link](cm, annot=True, fmt='d', xticklabels=categories, yticklabels=categories, cmap='Blues')
[Link]('Prediksi Model')
[Link]('Kenyataan (Ground Truth)')
[Link]('Confusion Matrix: Medis vs Antariksa')
[Link]()

# 1. Information Need (Keinginan di kepala user)


# User ingin tahu kategori dari sebuah kalimat baru

# 2. Query Construction (Input teks dari user)


query_baru = "the doctor is examining a patient with a stethoscope"

# 3. Jalur Kiri: Parse & Preprocess (Harus sama dengan proses Collection)
query_bersih = preprocess_text(query_baru) # Fungsi yang tadi kita buat

# 4. Rank/Predict (Bertemu di tengah untuk menentukan kategori)


prediksi = model_final.predict([query_bersih])
hasil_kategori = categories[prediksi[0]]

print(f"Query User: '{query_baru}'")


print(f"Hasil Pencocokan (Relevance): Dokumen ini termasuk kategori {hasil_kategori}")

Anda mungkin juga menyukai