Input Teks dan Kata Pencarian
Table of Contents
Mini Proyek 1 Pencarian Kata dalam Teks - This article is part of a series.
Pada bagian ini, kita akan mengembangkan fungsionalitas dari aplikasi pencarian kata. Kita akan memperluas metode pencarian kata dalam teks dengan menggunakan fitur-fitur NLTK yang lebih canggih. Salah satu aspek yang akan kita tambahkan adalah penanganan sinonim menggunakan WordNet, sebuah tesaurus dan database bahasa Inggris yang disediakan oleh NLTK. Walaupun menggunakan bahasa Inggris, tetapi hasilnya masih cukup akurat jika digunakan untuk bahasa Indonesia.
a. Pencarian Kata dengan Sinonim Menggunakan WordNet #
Kita akan menambahkan kemampuan pencarian kata dengan sinonim. Jika kata yang dicari tidak ditemukan dalam teks, kita akan mencoba mencari sinonimnya dan memberikan informasi tentang sinonim yang ditemukan. Buat fungsi search_word_with_synonyms
berikut:
def search_word_with_synonyms(tokens, kata_pencarian):
"""
Fungsi untuk mencari kata dalam teks dengan penanganan sinonim menggunakan WordNet.
"""
# Mencari kata secara langsung
indeks_kata = ' '.join(tokens).lower().find(kata_pencarian.lower())
if indeks_kata != -1:
print(f"Kata '{kata_pencarian}' ditemukan dalam teks pada indeks {indeks_kata}.")
else:
# Jika kata tidak ditemukan, coba cari sinonim menggunakan WordNet
sinonim = find_synonyms(kata_pencarian)
if sinonim:
print(f"Kata '{kata_pencarian}' tidak ditemukan dalam teks.")
print(f"Namun, sinonim yang mungkin adalah: {', '.join(sinonim)}")
else:
print(f"Tidak ditemukan kata atau sinonim untuk '{kata_pencarian}'.")
Pada kode diatas, jika teks tidak ditemukan, kita akan mencari sinonim dari kata tersebut menggunakan fungsi find_synonyms
yang akan kita buat pada langkah selanjutnya.
b. Fungsi untuk Mencari Sinonim dengan WordNet #
Pada bagian ini, kita akan membuat fungsi baru untuk mencari sinonim menggunakan WordNet.
def find_synonyms(word):
"""
Fungsi untuk mencari sinonim menggunakan WordNet.
"""
synonyms = []
# Mendapatkan sinonim dari WordNet
synsets = wordnet.synsets(word)
# Menambahkan sinonim ke daftar
for synset in synsets:
for lemma in synset.lemmas():
synonyms.append(lemma.name())
# Menghapus duplikat dan mengonversi ke huruf kecil
synonyms = list(set(synonyms))
synonyms = [syn.lower() for syn in synonyms]
return synonyms
Penjelasan:
wordnet.synsets(word)
: Mengambil semua sinset (kumpulan sinonim) yang berkaitan dengan kata tertentu dari WordNet.synset.lemmas()
: Mengambil semua lemma (kata-kata dasar) yang terkait dengan sinset tersebut.lemma.name()
: Mengambil nama dari setiap lemma. list(set(synonyms)): Menghapus duplikat dari daftar sinonim.[syn.lower() for syn in synonyms]
: Mengonversi semua sinonim ke huruf kecil untuk keperluan keseragaman.
c. Menjalankan Fungsi Pencarian dengan Sinonim #
Terakhir, kita perlu memperbarui bagian menjalankan fungsi pada fungsi utama.
if __name__ == "__main__":
# Mendapatkan input teks dari pengguna
teks = get_user_text()
# Mendapatkan input kata pencarian dari pengguna
kata_pencarian = get_search_word()
# Tokenisasi teks
tokens = tokenize_text(teks)
# Pencarian kata dalam teks dengan penanganan sinonim
search_word_with_synonyms(tokens, kata_pencarian)
Gunakan perintah berikut untuk menjalankan aplikasi.
python pencarian_kata.py
Berikut adalah contoh hasil print setelah menjalankan aplikasi:
Masukkan teks atau kalimat: Coding adalah salah satu langkah-langkah pemrograman.
Input teks yang dimasukkan:
Coding adalah salah satu langkah-langkah pemrograman.
Masukkan kata yang ingin kamu cari: programming
Kata 'programming' tidak ditemukan dalam teks.
Namun, sinonim yang mungkin adalah: programing, scheduling, programming_language
Dengan penambahan ini, aplikasi akan mencoba mencari kata atau sinonimnya dalam teks dan memberikan informasi yang lebih kaya kepada pengguna. Silakan jalankan kembali aplikasi untuk melihat perbedaannya.