Skip to main content

Advanced Indonesian Natural Language Processing Library

Project description

nahiarhdNLP - Advanced Indonesian Natural Language Processing Library

Advanced Indonesian Natural Language Processing Library dengan fitur preprocessing teks, normalisasi slang, konversi emoji, koreksi ejaan, dan banyak lagi.

๐Ÿš€ Instalasi

pip install nahiarhdNLP

๐Ÿ“ฆ Import Library

# Import module preprocessing
from nahiarhdNLP import preprocessing

# Import fungsi spesifik
from nahiarhdNLP.preprocessing import (
    # Fungsi pembersihan dasar
    remove_html, remove_url, remove_mentions, remove_hashtags,
    remove_numbers, remove_punctuation, remove_extra_spaces,
    remove_special_chars, remove_whitespace, to_lowercase,
    # Fungsi normalisasi dan koreksi
    replace_slang, replace_word_elongation, correct_spelling,
    # Fungsi emoji
    emoji_to_words, words_to_emoji,
    # Fungsi linguistic
    remove_stopwords, stem_text, tokenize,
    # Fungsi all-in-one
    clean_text
)

# Import kelas untuk penggunaan advanced
from nahiarhdNLP.preprocessing import (
    TextCleaner, SpellCorrector, StopwordRemover,
    Stemmer, EmojiConverter, Tokenizer
)

# Import dataset loader (dua cara)
from nahiarhdNLP.datasets import DatasetLoader
# atau
from nahiarhdNLP.datasets.loaders import DatasetLoader

๐Ÿ“‹ Contoh Penggunaan

1. ๐Ÿงน TextCleaner - Membersihkan Teks

from nahiarhdNLP.preprocessing import TextCleaner

cleaner = TextCleaner()

# Membersihkan URL
url_text = "kunjungi https://google.com sekarang!"
clean_result = cleaner.clean_urls(url_text)
print(clean_result)
# Output: "kunjungi  sekarang!"

# Membersihkan mentions
mention_text = "Halo @user123 apa kabar?"
clean_result = cleaner.clean_mentions(mention_text)
print(clean_result)
# Output: "Halo  apa kabar?"

# Membersihkan teks secara menyeluruh
messy_text = "Halooo!!! @user #trending https://example.com ๐Ÿ˜€"
clean_result = cleaner.clean(messy_text)
print(clean_result)
# Output: teks yang sudah dibersihkan

2. โœ๏ธ SpellCorrector - Koreksi Ejaan & Normalisasi Slang

from nahiarhdNLP.preprocessing import SpellCorrector

spell = SpellCorrector()

# Koreksi kata salah eja
word = "mencri"
corrected = spell.correct_word(word)
print(corrected)
# Output: "mencuri"

# Koreksi kalimat lengkap (termasuk normalisasi slang)
sentence = "gw lg mencri informsi"
corrected = spell.correct_sentence(sentence)
print(corrected)
# Output: "saya lagi mencuri informasi"

3. ๐Ÿšซ StopwordRemover - Menghapus Stopwords

from nahiarhdNLP.preprocessing import StopwordRemover

stopword = StopwordRemover()
stopword._load_data()  # Load dataset stopwords

# Menghapus stopwords
text = "saya suka makan nasi goreng"
result = stopword.remove_stopwords(text)
print(result)
# Output: "suka makan nasi goreng"

# Menambah custom stopwords
stopword.add_custom_stopwords(["adalah", "akan"])

4. ๐Ÿ˜€ EmojiConverter - Konversi Emoji

from nahiarhdNLP.preprocessing import EmojiConverter

emoji = EmojiConverter()
emoji._load_data()  # Load dataset emoji

# Emoji ke teks
emoji_text = "๐Ÿ˜€ ๐Ÿ˜‚ ๐Ÿ˜"
text_result = emoji.emoji_to_text_convert(emoji_text)
print(text_result)
# Output: "wajah_gembira wajah_tertawa wajah_bercinta"

# Teks ke emoji
text = "wajah_gembira"
emoji_result = emoji.text_to_emoji_convert(text)
print(emoji_result)
# Output: "๐Ÿ˜€"

5. ๐Ÿ”ช Tokenizer - Tokenisasi

from nahiarhdNLP.preprocessing import Tokenizer

tokenizer = Tokenizer()

# Tokenisasi teks
text = "ini contoh tokenisasi"
tokens = tokenizer.tokenize(text)
print(tokens)
# Output: ['ini', 'contoh', 'tokenisasi']

6. ๐ŸŒฟ Stemmer - Stemming (Memerlukan Sastrawi)

from nahiarhdNLP.preprocessing import Stemmer

try:
    stemmer = Stemmer()
    text = "bermain-main dengan senang"
    result = stemmer.stem(text)
    print(result)
    # Output: "main main dengan senang"
except ImportError:
    print("Install Sastrawi dengan: pip install Sastrawi")

7. ๐Ÿ› ๏ธ Fungsi Individual

from nahiarhdNLP.preprocessing import (
    # Fungsi pembersihan dasar
    remove_html, remove_url, remove_mentions, remove_hashtags,
    remove_numbers, remove_punctuation, remove_extra_spaces,
    remove_special_chars, remove_whitespace, to_lowercase,
    # Fungsi normalisasi dan koreksi
    replace_slang, replace_word_elongation, correct_spelling,
    # Fungsi emoji
    emoji_to_words, words_to_emoji,
    # Fungsi linguistic
    remove_stopwords, stem_text, tokenize,
    # Fungsi all-in-one
    clean_text
)

# ๐Ÿงน FUNGSI PEMBERSIHAN DASAR

# Menghapus HTML tags
html_text = "website <a href='https://google.com'>google</a>"
clean_result = remove_html(html_text)
print(clean_result)
# Output: "website google"

# Menghapus URL
url_text = "kunjungi https://google.com sekarang!"
clean_result = remove_url(url_text)
print(clean_result)
# Output: "kunjungi sekarang!"

# Menghapus mentions (@username)
mention_text = "Halo @user123 dan @admin apa kabar?"
clean_result = remove_mentions(mention_text)
print(clean_result)
# Output: "Halo dan apa kabar?"

# Menghapus hashtags (#tag)
hashtag_text = "Hari ini #senin #libur #weekend"
clean_result = remove_hashtags(hashtag_text)
print(clean_result)
# Output: "Hari ini"

# Menghapus angka
number_text = "Saya berumur 25 tahun dan punya 3 anak"
clean_result = remove_numbers(number_text)
print(clean_result)
# Output: "Saya berumur tahun dan punya anak"

# Menghapus tanda baca
punct_text = "Halo, apa kabar?! Semoga sehat selalu..."
clean_result = remove_punctuation(punct_text)
print(clean_result)
# Output: "Halo apa kabar Semoga sehat selalu"

# Menghapus spasi berlebih
space_text = "Halo    dunia   yang    indah"
clean_result = remove_extra_spaces(space_text)
print(clean_result)
# Output: "Halo dunia yang indah"

# Menghapus karakter khusus
special_text = "Halo @#$%^&*() dunia!!!"
clean_result = remove_special_chars(special_text)
print(clean_result)
# Output: "Halo dunia!!!"

# Membersihkan karakter whitespace (tab, newline, dll)
whitespace_text = "Halo\n\tdunia\r\nyang indah"
clean_result = remove_whitespace(whitespace_text)
print(clean_result)
# Output: "Halo dunia yang indah"

# Konversi ke huruf kecil
upper_text = "HALO Dunia Yang INDAH"
clean_result = to_lowercase(upper_text)
print(clean_result)
# Output: "halo dunia yang indah"

# โœจ FUNGSI NORMALISASI DAN KOREKSI

# Normalisasi slang (menggunakan SpellCorrector)
slang_text = "emg siapa yg nanya?"
normal_text = replace_slang(slang_text)
print(normal_text)
# Output: "memang siapa yang bertanya?"

# Mengatasi perpanjangan kata (word elongation)
elongation_text = "kenapaaa bangettt???"
clean_result = replace_word_elongation(elongation_text)
print(clean_result)
# Output: "kenapa banget??"

# Koreksi ejaan
spell_text = "saya mencri informsi pnting"
corrected = correct_spelling(spell_text)
print(corrected)
# Output: "saya mencuri informasi penting"

# ๐Ÿ˜€ FUNGSI EMOJI

# Konversi emoji ke kata
emoji_text = "๐Ÿ˜€ ๐Ÿ˜‚ ๐Ÿ˜"
text_result = emoji_to_words(emoji_text)
print(text_result)
# Output: "wajah_gembira wajah_tertawa wajah_bercinta"

# Konversi kata ke emoji
text_to_emoji = "wajah_gembira wajah_sedih"
emoji_result = words_to_emoji(text_to_emoji)
print(emoji_result)
# Output: "๐Ÿ˜€ ๐Ÿ˜ข"

# ๐Ÿ”ฌ FUNGSI LINGUISTIC

# Menghapus stopwords
stopword_text = "saya sangat suka sekali makan nasi goreng"
clean_result = remove_stopwords(stopword_text)
print(clean_result)
# Output: "suka makan nasi goreng"

# Stemming teks (memerlukan Sastrawi)
try:
    stem_text_input = "bermain-main dengan gembira"
    stemmed = stem_text(stem_text_input)
    print(stemmed)
    # Output: "main main dengan gembira"
except ImportError:
    print("Install Sastrawi: pip install Sastrawi")

# Tokenisasi teks
tokenize_text = "Saya suka makan nasi goreng"
tokens = tokenize(tokenize_text)
print(tokens)
# Output: ['Saya', 'suka', 'makan', 'nasi', 'goreng']

# ๐ŸŽฏ FUNGSI ALL-IN-ONE

# Cleaning menyeluruh (gabungan semua fungsi cleaning)
messy_text = "Halooo!!! @user #trending https://example.com ๐Ÿ˜€ 123"
cleaned = clean_text(messy_text)
print(cleaned)
# Output: "haloo" (teks yang sudah dibersihkan menyeluruh)

8. ๐Ÿ“Š Dataset Loader

from nahiarhdNLP.datasets import DatasetLoader

loader = DatasetLoader()

# Load stopwords dari CSV lokal
stopwords = loader.load_stopwords_dataset()
print(f"Jumlah stopwords: {len(stopwords)}")

# Load slang dictionary dari CSV lokal
slang_dict = loader.load_slang_dataset()
print(f"Jumlah slang: {len(slang_dict)}")

# Load emoji dictionary dari CSV lokal
emoji_dict = loader.load_emoji_dataset()
print(f"Jumlah emoji: {len(emoji_dict)}")

# Load wordlist dari JSON lokal
wordlist = loader.load_wordlist_dataset()
print(f"Jumlah kata: {len(wordlist)}")

Catatan: Semua dataset (stopword, slang, emoji, wordlist) di-load langsung dari file CSV/JSON di folder nahiarhdNLP/datasets/. Tidak ada proses cache atau download dari HuggingFace.

๐Ÿšจ Error Handling

try:
    from nahiarhdNLP.preprocessing import SpellCorrector
    spell = SpellCorrector()
    result = spell.correct_sentence("test")
except ImportError:
    print("Package nahiarhdNLP belum terinstall")
    print("Install dengan: pip install nahiarhdNLP")
except Exception as e:
    print(f"Error: {e}")

๐Ÿ’ก Tips Penggunaan

  1. Untuk cleaning dasar: Gunakan clean_text() atau kelas TextCleaner
  2. Untuk kontrol penuh: Gunakan kelas individual (TextCleaner, SpellCorrector, dll)
  3. Untuk spell correction + slang: Gunakan SpellCorrector yang menggabungkan kedua fitur
  4. Untuk stemming: Install Sastrawi terlebih dahulu: pip install Sastrawi
  5. Untuk load dataset: Gunakan DatasetLoader dari nahiarhdNLP.datasets
  6. Untuk inisialisasi kelas: Jangan lupa panggil _load_data() untuk kelas yang memerlukan dataset

โšก Performance & Dataset

Mulai versi terbaru, nahiarhdNLP menggunakan dataset lokal yang sudah disediakan:

  • Stopwords: File stop_word.csv
  • Slang Dictionary: File slang.csv
  • Emoji Mapping: File emoji.csv
  • Wordlist: File wordlist.json
  • KBBI Dictionary: File kata_dasar_kbbi.csv

Semua dataset tersimpan di folder nahiarhdNLP/datasets/ dan diakses melalui DatasetLoader.

๐Ÿ“ฆ Dependencies

Package ini membutuhkan:

  • pandas - untuk load dan proses dataset CSV/JSON
  • sastrawi - untuk stemming (opsional)
  • rich - untuk output formatting (opsional)

๐Ÿ”ง Struktur Modul

nahiarhdNLP/
โ”œโ”€โ”€ datasets/
โ”‚   โ”œโ”€โ”€ loaders.py          # DatasetLoader class
โ”‚   โ”œโ”€โ”€ emoji.csv           # Dataset emoji
โ”‚   โ”œโ”€โ”€ slang.csv           # Dataset slang
โ”‚   โ”œโ”€โ”€ stop_word.csv       # Dataset stopwords
โ”‚   โ”œโ”€โ”€ wordlist.json       # Dataset wordlist
โ”‚   โ””โ”€โ”€ kata_dasar_kbbi.csv # Dataset KBBI
โ”œโ”€โ”€ preprocessing/
โ”‚   โ”œโ”€โ”€ cleaning/
โ”‚   โ”‚   โ””โ”€โ”€ text_cleaner.py # TextCleaner class
โ”‚   โ”œโ”€โ”€ linguistic/
โ”‚   โ”‚   โ”œโ”€โ”€ stemmer.py      # Stemmer class
โ”‚   โ”‚   โ””โ”€โ”€ stopwords.py    # StopwordRemover class
โ”‚   โ”œโ”€โ”€ normalization/
โ”‚   โ”‚   โ”œโ”€โ”€ emoji.py        # EmojiConverter class
โ”‚   โ”‚   โ””โ”€โ”€ spell_corrector.py # SpellCorrector class
โ”‚   โ”œโ”€โ”€ tokenization/
โ”‚   โ”‚   โ””โ”€โ”€ tokenizer.py    # Tokenizer class
โ”‚   โ””โ”€โ”€ utils.py            # Fungsi utility individual
โ””โ”€โ”€ demo.py                 # File demo penggunaan

๐Ÿ†• Perubahan Versi 1.1.0

  • โœ… Menggabungkan spell correction dan slang normalization dalam SpellCorrector
  • โœ… Semua dataset menggunakan file lokal (CSV/JSON)
  • โœ… Struktur yang lebih terorganisir dengan pemisahan kelas dan fungsi
  • โœ… Penambahan DatasetLoader untuk manajemen dataset terpusat
  • โŒ Menghapus dependency HuggingFace untuk dataset
  • โŒ Menghapus fitur preprocess() all-in-one dan pipeline() (akan ditambahkan di versi mendatang)

๐Ÿ› Troubleshooting

Error saat import dataset:

# Pastikan memanggil _load_data() untuk kelas yang memerlukan dataset
stopword = StopwordRemover()
stopword._load_data()  # Penting!

Error Sastrawi tidak ditemukan:

pip install Sastrawi

Error pandas tidak ditemukan:

pip install pandas

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nahiarhdnlp-1.1.1.tar.gz (782.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nahiarhdnlp-1.1.1-py3-none-any.whl (787.0 kB view details)

Uploaded Python 3

File details

Details for the file nahiarhdnlp-1.1.1.tar.gz.

File metadata

  • Download URL: nahiarhdnlp-1.1.1.tar.gz
  • Upload date:
  • Size: 782.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.6

File hashes

Hashes for nahiarhdnlp-1.1.1.tar.gz
Algorithm Hash digest
SHA256 04295f0d215eeaf6c3657b5f643b66c50073f4d4a54641eca92faa923d956d0d
MD5 f9f3bbc23298f58ca00eb262d58c4062
BLAKE2b-256 4c52bfcc41e06ec7bec7eef057a7512a67ee011e9fe9700f784e45b66bc62db7

See more details on using hashes here.

File details

Details for the file nahiarhdnlp-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: nahiarhdnlp-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 787.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.6

File hashes

Hashes for nahiarhdnlp-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 735de6d0f5b976ad49bfcad333419cdf7da06690a73585849cde7e242f2d3cc8
MD5 061e22efb71be0e149a8333998010634
BLAKE2b-256 8fdf1046d2ffa1e96a55b036468aa6964caa0afec970f5994674919192f1039e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page