Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Meetup komunitas pengguna python  Kampus ITB, 28 Januari 2012Python untuk Pemrosesan Teks            Bahasa Indonesia     ...
Bahasa dan Media : Tulisan                                                                                                ...
Bahasa dan Media : Lisan                                                                                                  ...
Aplikasi   Dialog       Pencarian ( bebas konteks )           Antarmuka kueri basisdata           Antarmuka kueri umum...
Aplikasi : Penerjemahan Otomatis
Aplikasi : Tanya Jawab
Ragam Tugas Pemrosesan Bahasa   Pemrosesan Morfologi       Mencari kata dasar (stemming/lematisasi)   Identifikasi    ...
Teknik      Heuristik (Kaidah)                Statistik   Template/Pattern             Machine Learning    Matching     ...
Teknologi (python)   NLTK (Natural Language Toolkit)       http://www.nltk.org   Whoosh (Text Indexing/Search)       h...
NLTKNatural Language Processing Toolkit
Deskripsi   Koleksi Algoritma Pemrosesan Teks       Lematisasi, WordNet       Pemisahan Kalimat       POS Tag       P...
Referensi               Natural Language Processing with                Python (S. Bird, O’Reilly 2009)                ht...
Peluang berkontribusi   Model & Korpus Bahasa Indonesia   Penerjemahan Buku ke Bahasa Indonesia
WhooshFast, Pure-python Fulltext Search
DeskripsiIndexing                          Pencarian   Input :                          Input :       Kumpulan dokumen ...
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(store...
Kode : Indexing_ix = Noneif not os.path.exists(indexdir):    os.mkdir(indexdir)    _ix = create_in(indexdir, schema)    w ...
Kode : Searchs = _ix.searcher()while True:    print "?",    qs = raw_input().lower().strip()    if qs=="exit":        brea...
topia.termextract        Term extraction
Deskripsi   Input : Teks (paragraf)   Output : Daftar kata/frasa yang sering muncul   Komponen :       POS Tagger    ...
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 ...
Demoscreenshot
Pemenggalan suku kata         Aturan pemisahan digunakan untuk pengucapan         (text to speech), bukan untuk stemming/m...
POS Tag                                                         NN : Kata benda                                           ...
Term ExtractionSumber artikel : Kompas.com
PeringkasanSimple extractive summarization
Named Entity Recognition   keterangan   6 : posisi/jabatan   1 : orang   2 : organisasi   7 : predikat (untuk relasi antar...
Bottle - GAE  Tutorial tambahan
Bottle   Web Microframework :       hanya menyediakan URL routing dan templating (built-        in, mako, jinja2)      ...
Kode : app.yamlhandlers:- url: /.*  script: main.py
Kode : main.pyfrom bottle import *from google.appengine.ext import webappfrom google.appengine.ext.webapp import utilimpor...
Kode : main.py (URL routing)@route(/)                                      decorator@view(‘word_entry’) # views/word_entry...
Kode: views/word_entry.tplrebase akan menggunakan template lain (index.tpl) sebagai pembungkus%rebase index apptitle=appti...
Kode: views/index.tpl<!DOCTYPE html><html> <head>     Menampilkan isi variabel apptitle (html akan di-escape)     <title>{...
Terima kasihKomentar , pertanyaan ?
Upcoming SlideShare
Loading in …5
×

Python untuk Pemrosesan Teks Bahasa Indonesia

12,288 views

Published on

presentasi meetup #3 komunitas id-python

Published in: Technology, Education

Python untuk Pemrosesan Teks Bahasa Indonesia

  1. 1. Meetup komunitas pengguna python Kampus ITB, 28 Januari 2012Python untuk Pemrosesan Teks Bahasa Indonesia Peb Ruswono Aryan http://about.me/peb
  2. 2. 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
  3. 3. 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
  4. 4. 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
  5. 5. Aplikasi : Penerjemahan Otomatis
  6. 6. Aplikasi : Tanya Jawab
  7. 7. 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
  8. 8. Teknik Heuristik (Kaidah) Statistik Template/Pattern  Machine Learning Matching  (lebih) Lambat Cepat  (asumsi) semakin (umumnya relatif) sulit banyak data semakin dikembangkan baik
  9. 9. 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)
  10. 10. NLTKNatural Language Processing Toolkit
  11. 11. Deskripsi Koleksi Algoritma Pemrosesan Teks  Lematisasi, WordNet  Pemisahan Kalimat  POS Tag  Pemotongan Frasa Koleksi Dokumen Teks (Korpus) & Model Bahasa  Berbagai bahasa
  12. 12. Referensi  Natural Language Processing with Python (S. Bird, O’Reilly 2009) http://www.nltk.org/book (CC BY-NC-ND 3.0)
  13. 13. Peluang berkontribusi Model & Korpus Bahasa Indonesia Penerjemahan Buku ke Bahasa Indonesia
  14. 14. WhooshFast, Pure-python Fulltext Search
  15. 15. 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
  16. 16. Kode : importfrom whoosh.index import create_in, open_dirfrom whoosh.fields import *from whoosh.qparser import QueryParser
  17. 17. 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)
  18. 18. 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)
  19. 19. 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()
  20. 20. topia.termextract Term extraction
  21. 21. 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
  22. 22. Kodefrom topia.termextract import extractextractor = extract.TermExtractor()print sorted( extractor( text ) )
  23. 23. PebahasaLayanan web pemrosesan teks Bahasa Indonesia
  24. 24. 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
  25. 25. Demoscreenshot
  26. 26. Pemenggalan suku kata Aturan pemisahan digunakan untuk pengucapan (text to speech), bukan untuk stemming/mencari Kata dasar
  27. 27. 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.
  28. 28. Term ExtractionSumber artikel : Kompas.com
  29. 29. PeringkasanSimple extractive summarization
  30. 30. Named Entity Recognition keterangan 6 : posisi/jabatan 1 : orang 2 : organisasi 7 : predikat (untuk relasi antar entitas) 8 : abaikan saja
  31. 31. Bottle - GAE Tutorial tambahan
  32. 32. 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)
  33. 33. Kode : app.yamlhandlers:- url: /.* script: main.py
  34. 34. Kode : main.pyfrom bottle import *from google.appengine.ext import webappfrom google.appengine.ext.webapp import utilimport suku...util.run_wsgi_app(default_app())
  35. 35. 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
  36. 36. 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
  37. 37. 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>
  38. 38. Terima kasihKomentar , pertanyaan ?

×