czwartek, listopada 26, 2009

Podobne posty i zachwyty nad nimi... ;-) i trochę o Java 7

Z przerażenie, ale i niejaką dumą ;-) odkrywam, że algorytm, który stosuję do wyszukiwania podobnych postów działa podejrzanie dobrze.
Ku mojemu zaskoczeniu proponowane notki o podobnej treści rzeczywiście często pasują tematyką lub tonem do wzorca. Jest to trochę dziwne, bo przecież cały algorytm bazuje tylko na podobnej częstotliwości unikatowych słów, czyli dwa teksty są do siebie tym bardziej podobne im więcej mają wspólnych słów, które są rzadkie w całym korpusie i im częstotliwości użycia tych słów są do siebie podobne. Czyżby aż taka część informacji o temacie czy tonie tekstu była zawarta w słowach?
Bardziej spodziewałbym się tego po zbitkach słów i analizie w oparciu nie tyle o słowa co o ich synonimy.
Inna sprawa, że algorytm działa w miarę dobrze na tekstach pisanych przez tą samą osobę, czyli bazuje też na tym, że gdy piszę o temacie A to prawie zawsze używam danego zestawu słów, i gdy piszę w danym tonie to znów używam też specyficznego zestawu słów.
Moim marzeniem jest zaprząc ten prosty algorytm do wyszukiwania jakiejś struktury w firmowych dokumentach, czy ogólnie w dokumentach, bo zwykle jest tak, że gdzieś coś jest napisane, ale trudno powiedzieć gdzie :-) Trudno też znaleźć bo to co my kojarzymy z tagiem "programowanie" ktoś inny mógł kojarzyć z tagiem "development".
A uruchomić to na opisach błędów! Może by się okazało, że da się coś z tego wyczytać? Wiem, że podobne rzeczy były już testowane i wyniki były różne.

A po samozachwycie ;-) o kilku smaczkach, które mają dodać do Java 7 :-)
Np. diamentowy operator, czyli <> dzięki któremu zamiast:
Map<String,Map<String,List<String>> map = new HashMap<String,Map<String,List<String>>();
użyjecie po prostu:
Map<String,Map<String,List<String>> map = new HashMap<>();
Co prawda to zwykle odwala za nas Eclipse, ale powinno ułatwić czytelność.
To samo zresztą z nowym mechanizmem tworzenia kolekcji :-) Listy będzie się dało tworzyć tak:
List<String> list = ['ala','ma',kota'];
A mapy tak:
Map<String,String> map = {"imie":"Buffy","nazwisko":"Summers"};
Dojdą też binarne literały i możliwość, podobno wygodniejszego, rozdzielania literałów typów int i long przy pomocy _ czyli underscore'a, stąd zamiast:
int milion = 1000000;
gdzie pisząc po prostu liczymy 6 zer, będzie:
int milion = 1_000_000;
Są jeszcze zmiany w generykach i obietnica dodania domknięć, choć tutaj się jeszcze kłócą i osobiście przyznam, że na razie trochę mnie razi składnia domknięć z #, ale to mi przejdzie :-)
Aha, jeszcze dodadzą coś paskudnego związane z automatyzacją zarządzania zasobami, nie wnikałem w szczegóły, ale możliwe, że chodzi o to, że np. plik będzie zamykany od razu gdy obiekt wyjdzie z zakresu.... Nie wiem, nie do końca jestem pewien czy mi się to podoba i jedynie widziałem wzmiankę o tym ficzerze, więc trudno cokolwiek więcej o nim powiedzieć.
Podobno nowa wersja Java'y ma być gotowa we wrześniu 2010.
Wszystko o tych nowościach w Java 7 znalazłem tutaj - http://code.joejag.com/2009/new-language-features-in-java-7/

[ten post poza swego rodzaju potokiem świadomości, ma też być testem dla podobnych postów coby zobaczyć czy zwariują bardziej niż zwykle ;-)}


Podobne postybeta
Niecne wykorzystanie refleksji... czyli jak poszukać tekstu w drzewie obiektów? ;-)
Ekszperyment :-) czyli Podobne posty :-)
Socjalne Google - czego brakuje?
Androidujemy sobie ;-) ale tak niemrawo
Sztuczki tropiciela błędów ;-)