Python untuk Pemrosesan Teks Bahasa Indonesia
Upcoming SlideShare
Loading in...5
×
 

Python untuk Pemrosesan Teks Bahasa Indonesia

on

  • 7,674 views

presentasi meetup #3 komunitas id-python

presentasi meetup #3 komunitas id-python

Statistics

Views

Total Views
7,674
Views on SlideShare
3,737
Embed Views
3,937

Actions

Likes
4
Downloads
155
Comments
0

6 Embeds 3,937

http://www.python.or.id 3606
http://pinstream.me 322
http://www.linkedin.com 4
http://a0.twimg.com 2
http://webcache.googleusercontent.com 2
https://si0.twimg.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Python untuk Pemrosesan Teks Bahasa Indonesia Python untuk Pemrosesan Teks Bahasa Indonesia Presentation Transcript

    • Meetup komunitas pengguna python Kampus ITB, 28 Januari 2012Python untuk Pemrosesan Teks Bahasa Indonesia Peb Ruswono Aryan http://about.me/peb
    • Bahasa dan Media : Tulisan Teks gambar Optical Character Recognition, Handwriting RecognitionImage source:http://i717.photobucket.com/albums/ww172/AmandaNichelle/Person.pnghttp://www.school-clipart.com/school_clipart_images/happy_person_in_silhouette_a_woman_clapping_0515-0911-2801-0927_SMU.jpg
    • Bahasa dan Media : Lisan Teks Suara Natural Language Processing (text), Automatic Speech Recognition,Image source:http://i717.photobucket.com/albums/ww172/AmandaNichelle/Person.png Text-to-Speechhttp://www.school-clipart.com/school_clipart_images/happy_person_in_silhouette_a_woman_clapping_0515-0911-2801-0927_SMU.jpg
    • Aplikasi Dialog  Pencarian ( bebas konteks )  Antarmuka kueri basisdata  Antarmuka kueri umum (mis. Wolfram, Siri)  Tanya-Jawab ( ada konteks pembicaraan )  Chatbot (ELIZA, @begobet) Transformasi  Penterjemahan  Peringkasan Klasifikasi  Kategorisasi/Pelabelan Dokumen  Analisis Sentimen
    • Aplikasi : Penerjemahan Otomatis
    • Aplikasi : Tanya Jawab
    • Ragam Tugas Pemrosesan Bahasa Pemrosesan Morfologi  Mencari kata dasar (stemming/lematisasi) Identifikasi  Menentukan batas kalimat  Klasifikasi kata (Part-of-Speech Tagging)  Mencari peranan kata dalam kalimat (Parsing, Semantic Role Labeling)  Ekstraksi Informasi (Orang, Organisasi, Lokasi, Jabatan, Kejadian, Waktu, Hu bungan) ~ Named Entity Recognition
    • Teknik Heuristik (Kaidah) Statistik Template/Pattern  Machine Learning Matching  (lebih) Lambat Cepat  (asumsi) semakin (umumnya relatif) sulit banyak data semakin dikembangkan baik
    • Teknologi (python) NLTK (Natural Language Toolkit)  http://www.nltk.org Whoosh (Text Indexing/Search)  http://pypi.python.org/pypi/Whoosh/  https://bitbucket.org/mchaput/whoosh/ (repo) Topia.Termextract (term/keyword extraction)  http://pypi.python.org/pypi/topia.termextract/  https://github.com/turian/topia.termextract (repo) Pebahasa  http://github.com/pebbie/pebahasa (code repo)  http://pebahasa.appspot.com (demo site)
    • NLTKNatural Language Processing Toolkit
    • Deskripsi Koleksi Algoritma Pemrosesan Teks  Lematisasi, WordNet  Pemisahan Kalimat  POS Tag  Pemotongan Frasa Koleksi Dokumen Teks (Korpus) & Model Bahasa  Berbagai bahasa
    • Referensi  Natural Language Processing with Python (S. Bird, O’Reilly 2009) http://www.nltk.org/book (CC BY-NC-ND 3.0)
    • Peluang berkontribusi Model & Korpus Bahasa Indonesia Penerjemahan Buku ke Bahasa Indonesia
    • WhooshFast, Pure-python Fulltext Search
    • DeskripsiIndexing Pencarian Input :  Input :  Kumpulan dokumen  Kueri pencarian (unicode) (unicode) Output :  Indeks Dokumen  Indeks untuk mempercepat pencarian  Output : Komponen :  Daftar dokumen yang relevan  Tokenisasi (pemotongan)  Struktur data indeks  Komponen : terbalik  Pencocokan kata/segmen  Pengurutan
    • Kode : importfrom whoosh.index import create_in, open_dirfrom whoosh.fields import *from whoosh.qparser import QueryParser
    • Kode : Schemaschema = Schema( title=TEXT(stored=True), cat=TEXT(store d=True), path=TEXT(stored=True), rank=N UMERIC(stored=True, type=float), conten t=TEXT) Parameter stored=True akan membuat Field tersebut ditampilkan dalam hasil Pencarian (result set)
    • Kode : Indexing_ix = Noneif not os.path.exists(indexdir): os.mkdir(indexdir) _ix = create_in(indexdir, schema) w = _ix.writer() for root, dirnames, filenames in os.walk(data): for filename in fnmatch.filter(filenames, *.txt): doc = os.path.join(root, filename) f = open(doc) text = re.sub("[x80-xff]", , f.read()) w.add_document(title=unicode(filename[:- 4]), content=unicode(text, utf8), cat=unicode(artikel), pat h=unicode(doc)) f.close() w.commit()else: _ix = open_dir(indexdir)
    • Kode : Searchs = _ix.searcher()while True: print "?", qs = raw_input().lower().strip() if qs=="exit": break q = QueryParser(content, _ix.schema).parse(u nicode(qs)) r = s.search(q) for rr in r: print rr[title], rr[path]s.close()
    • topia.termextract Term extraction
    • Deskripsi Input : Teks (paragraf) Output : Daftar kata/frasa yang sering muncul Komponen :  POS Tagger  Rule-based Filter  Menggunakan zope.interface  Baru tersedia untuk Bahasa Inggris
    • Kodefrom topia.termextract import extractextractor = extract.TermExtractor()print sorted( extractor( text ) )
    • PebahasaLayanan web pemrosesan teks Bahasa Indonesia
    • Deskripsi Kumpulan Algoritma NLP  Pemenggalan suku kata  deteksi batas kalimat  Penentuan kelas kata (POS tag) berbasis kamus eksternal & HMM (Hidden Markov Model)  Pemotongan kalimat (Chunking) berdasarkan kapitalisasi *  Ekstraksi istilah (modifikasi dari topia.termextract) *  Peringkasan sederhana *  Ekstraksi informasi * Dibungkus menjadi layanan web  Google AppEngine  Bottlepy*) belum ditambahkan ke repo
    • Demoscreenshot
    • Pemenggalan suku kata Aturan pemisahan digunakan untuk pengucapan (text to speech), bukan untuk stemming/mencari Kata dasar
    • POS Tag NN : Kata benda NNP : Proper Noun MD : Modal VBT : kata kerja transitif Alfan Farizki Wicaksono, Ayu Purwarianti. HMM Based POS Tagger for Bahasa Indonesia. On Proceedings of 4th International MALINDO (Malay - Indonesian Language) Workshop. 2nd August 2010.
    • Term ExtractionSumber artikel : Kompas.com
    • PeringkasanSimple extractive summarization
    • Named Entity Recognition keterangan 6 : posisi/jabatan 1 : orang 2 : organisasi 7 : predikat (untuk relasi antar entitas) 8 : abaikan saja
    • Bottle - GAE Tutorial tambahan
    • Bottle Web Microframework :  hanya menyediakan URL routing dan templating (built- in, mako, jinja2)  Hanya 1 file yang perlu diimpor (bottle.py)  Berbasis decorator (@<nama decorator> sebelum definisi fungsi)  Session ditangani oleh WSGIMiddleWare (beaker, gae- sessions) Mendukung berbagai jenis Web Server:  WSGIref, CGI, FCGI  Paste, CherryPy, Twisted, Tornado, Bjoern, ...  GAE (Google App Engine)
    • Kode : app.yamlhandlers:- url: /.* script: main.py
    • Kode : main.pyfrom bottle import *from google.appengine.ext import webappfrom google.appengine.ext.webapp import utilimport suku...util.run_wsgi_app(default_app())
    • Kode : main.py (URL routing)@route(/) decorator@view(‘word_entry’) # views/word_entry.tpldef index(): return { ‘apptitle’:’pebahasa‘ }@post(/penggal)def penggal(): kata = request.forms.get(word, ).strip() fon = suku.pecah(kata) return { ‘asal’:kata, ‘hasil’: fon } dict akan diubah menjadi JSON secara otomatis
    • Kode: views/word_entry.tplrebase akan menggunakan template lain (index.tpl) sebagai pembungkus%rebase index apptitle=apptitle<form method="POST" id="newcat" action="/penggal"> <label for="word">Kata</label> <input type="text" name="word" id="word" size="30"/> <input type="submit"/></form> variabel apptitle bisa diakses di index.tpl
    • Kode: views/index.tpl<!DOCTYPE html><html> <head> Menampilkan isi variabel apptitle (html akan di-escape) <title>{{apptitle}}</title> </head> <body> <div id="content"> %include Template yang memanggil rebase akan Diselipkan di sini </div> </body></html>
    • Terima kasihKomentar , pertanyaan ?