- Prelegent(ci)
- Marcin Wojnarski
- Termin
- 16 maja 2014 14:15
- Pokój
-
p. 5820
- Seminarium
- Research Seminar of the Logic Group: Approximate reasoning in data mining
W referacie przedstawię dwie nowe technologie webowe - "Hypertags" i "Redex" - które opracowałem w ostatnich latach na potrzeby realizowanych przeze mnie projektów internetowych.
1) "Hypertags" to język opisu dokumentu, który można traktować jako
(znaczne) rozszerzenie języka HTML/XML, wprowadzające do tych standardów modularyzację, np. poprzez możliwość wydzielania powtarzających się fragmentów kodu, na podobnych zasadach, jak w każdym języku programowania można powtarzający się kod wydzielić jako funkcje lub klasy. Do tej pory HTML/XML, który jest najważniejszym standardem webowym i znajduje się w centrum wszystkich technologii internetowych, nie udostępniał natywnej modularyzacji (tzn. bez łączenia z innymi językami jak PHP), co negatywnie wpływało na jakość kodu aplikacji webowych i na łatwość implementowania serwisów/usług internetowych (czy możliwe byłoby pisanie klasycznych programów bez użycia funkcji? a tak właśnie, bez modularyzacji, tworzone są nawet bardzo złożone dokumenty HTML). Celem Hypertags jest wypełnić tę lukę i przez to ułatwić tworzenie zaawansowanych, złożonych aplikacji internetowych. Przy okazji, Hypertags może służyć do wprowadzania adnotacji semantycznych w treści dokumentów HTML/XML, co w przyszłości pomoże narzędziom internetowym takim jak wyszukiwarki łatwiej analizować i interpretować zawartość dokumentów.
Hypertags znajduje się obecnie na zaawansowanym etapie projektowania i na wczesnym etapie implementacji.
2) "Redex" (REgular Document EXpressions) to język opisu danych zawartych w dokumencie webowym, pozwalający na łatwe scrapowanie danych z internetu - łatwiejsze niż z użyciem tradycyjnych narzędzi: wyrażeń regularnych (regex) lub ścieżek XPath. Język redex jest ideowo zbliżony do wyrażeń regularnych, ale dopasowany do przetwarzania całych dokumentów, nie tylko krótkich pojedynczych napisów. W przeciwieństwie do regex-ów, redex uwzględnia złożony kontekst, w jakim może występować element danych: zagnieżdżone tagi, odpowiednie atrybuty tagów, odpowiednia treść otaczająca itd. Ponadto, za pomocą jednego wzorca redex można zescrapować złożone wielo-elementowe informacje z całej strony www naraz - co jest zwykle niemożliwe z użyciem regex-ów, a nawet z użyciem XPath, gdzie każdy element wymaga projektowania osobnej ścieżki i gdzie bardzo trudna jest kontrola poprawności ekstrakcji obejmująca kilka elementów naraz: elementów powiązanych semantycznie, ale ekstrahowanych oddzielnymi ścieżkami XPath.
Redex jest dojrzałym projektem, w pełni zaimplementowanym, wykorzystywanym przeze mnie już w kilku aplikacjach i dostępnym na
zasadach open source w serwisie github jako część biblioteki Nifty:
https://github.com/mwojnars/nifty/blob/master/scraping/pattern.py