Webbányászat Pythonban Hornyák Miklós (hornyak.miklos@gmail.com) Web Meetup, Pécs 2014.04.04.
Tartalomjegyzék Bemutatkozás Kígyó vagy giliszta? Csomagoljunk! The Zen of Python Bemutatkozás Kígyó vagy giliszta? Ismerkedés Programozási alapok Csomagoljunk! Package minden problémára Szövegbányászat Az NLTK csomag Nyelvi problémák Projektek GUI és WEB fejlesztés Egyedül nem megy!
Bemutatkozás Pécsi Tudományegyetem Duo mining Kutatócsoport Közgazdaságtudományi Kar, Gazdaság-módszertani Intézet, Gazdaságinformatika Tanszék Duo mining Kutatócsoport Adat és szövegbányászat tandeme Kutatási téma „Területi versenyképesség vizsgálatának támogatása alternatív eszközökkel” Strukturált és strukturálatlan adatok használata Területegységek reprezentációja „Social sensors” és bioinformatikai analógia
Python alapok 1989 óta fejlesztik - közösség! - Guido van Rossum Opensource, portábilis, ingyenes ám korlátozás nélküli használható Magasszintű, jól olvasható szintaktikájú SCRIPT nyelv (pl. Ruby, PHP, Perl, Javascript, UX shellek) Moduláris és objektumorientált programozást is támogatja Dinamikus - interpreter kifejezéseket és karakterláncokat is kiértékel Ortogonális - kevés fogalommal nagyszámú konstrukció alkotható Reflektív - metaprogramozás támogatása: a végrehajtás során képes objektumot módosítani Introspektív - sok Python fejlesztőeszköz Pythonban íródott
Python alapok Implementációk: Verziók - folyamatos fejlődés Használat Python Software Foundation Implementációk: Interpretált - lefordított utasításokat virtuális gép hajtja végre Bytekód generálás – Jython, IronPython Verziók - folyamatos fejlődés 2.7.6 - sok module 3.4.0 – unicode, Qt Használat Interaktív mód Python parancsor - python.exe Grafikus IDE – pl. Eclipse Tudományos közösség kedvelt eszköze Disztribúciók – python(x,y), SciPy, Anaconda, winpython
Python programozás Python zsebkönyv, Kiskapu 2008 "Egy Python program sorait bal szélre igazítani olyan, mint egy szépirodalmi műből kiszedni az írásjeleket és a szóközöket.„ komment Fejlett adattípusok használatát támogtaja: listák, szótárak Tömör kb. harmada a Java kódnak Erőforráskezelés automatikus (memória, fájlok) – „garbage collector” Mutatók nincsenek, de multi-thread lehet. Objektumorientált - többszörös öröklést is támogatja Modern kivételkezelés, dinamikus típusadás – i = 1, i = „1” Case sensitive – Józsi, józsi
Python és a csomagok Telepítés – python setup.py / pip import csomag Rengeteg Python package -> module Cryptography Databases, XML GUI GIS Image Manipulation,PDFMiner Mac, Windows Web NumPy, Matplotlib, Sympy, pandas
Python és IDE Eclipse(www.eclipse.org) PyDev (pydev.org) Javaban írt IDE Plug-inek számos feladathoz Több platformra PyDev (pydev.org) Python IDE az Eclipsehez Type hinting Debugger, stb.
Python és a szövegbányászat Strukturálatlan adatok – pl. e-mail, dokumentumok, weblapok elektronikus adatok Kb. 85%-a strukturálatlan adat Elemzés, feldolgozás, információkinyerés - rejtett NLTK – Natural Language Toolkit Tokenizálás Stopszavazás Szótövezés Part of Speech (POS) – nyelvtani elemzés Named-entity Recognition (NER) – névelem azonosítás Nyelvi problémák HunSpell
Python projektben FOI projekt HírIndex projekt SEARCH projekt Future Orientation Index területegységekre Google Trends keresések alapján Térképi ábrázolás HírIndex projekt Területegységek média reprezentációja Osztályozás – pozitív/negatív hír SEARCH projekt Európai Unió policy notes dokumentumok elemzése Adatvizualizáció
Python és a GUI fejlesztés wxPython wxPython egy GUI toolkit Pythonhoz Opensource Cross-platform Unix, Macintosh OS X, MS Windows Boa Constructor Python IDE és wxPython GUI builder Pythonban készült
Python és a webfejlesztés CGI Library: cgi, cgibt Spagetti kód – Mako, Genshi, Jinja templatek from string import Template template = Template("<html><body><h1>Hello ${name}!</h1></body></html>") print template.substitute(dict(name=‚Web Meetup')) <html><body><h1>Hello Web Meetup</h1></body></html> MySQL, SQLite, PostgreSQL és Object Relational Mapping (ORM) SQLAlchemy Frameworkök Django Zope
Python és a barátai R (http://www.r-project.org/) RapidMiner Statisztikai számítási feladatok elvégzésre Az eredmények ábrázolására Programozás nyelv és környezet (R Studio) GNU project Cross platform RapidMiner Lásd Kovács Balázs előadása – modellalkotás és próba Graphviz (http://www.graphviz.org/) Vizualizációs eszközök – dot, neato, fdp, sfdp, twopi, circo Opensource
Python és webbányászat Köszönöm a figyelmet!