Wsparcie #3540
Rodzje konwersji + plik konfiguracyjny
Status: | Nowy | Start date: | 23 Dec 2011 | |
---|---|---|---|---|
Priority: | Normalny | Due date: | ||
Assignee: | - | % Done: | 0% | |
Category: | - | |||
Target version: | - |
Description
Wiem, że jest to okres świąteczny... jedni już żyją świętami, inni sylwestrem, jeszcze inni jeszcze czymś innym, jednak każdy chciał fextora! ;) Zatem,
Proponuję aby każdy podał tutaj rodzaje konwersji jaich potrzebuje, wraz z krótkim "przykładem" jak ona powinna wyglądać. Poprzez przykład rozumiem opis przejścia od postaci pliku wynikowego fextora .csv
-- gdzie mamy wartości cech -- do postaci, za pomocą której uczone będą klasyfikatory. Mamy "już" zaimplementowaną konwersję binarną. Można trzymać się szablonu:
binarna/binary
:
- Wejście: Plik csv
- Schemat konwersji:
FILE_CSV = plik z wartościami cech fextora OLD_NNC = lista nazw cech z pliku csv (pierwsza linia w pliku csv) NNC = unikalne "nowe nazwy cech" postaci {nazwa_cechy:wartość_cechy} dla FILE_CSV SORTED_NNC = posortowane NNC FOREACH ROW IN FILE_CSV: NEW_ROW = [0,0,....,0] -- nowy wiersz wypełniony samymi zerami (len(NEW_ROW) == len(SORTED_NNC)) FOREACH VALUE IN ROW: VALUE_NUMBER = numer wartości w wierszu (numer kolumny w której ta wartość się znajduje) IF string {OLD_NNC[VALUE_NUMBER]:VALUE} znajduje się w SORTED_NNC: FIND_POS = odczytaj pozycję {OLD_NNC[VALUE_NUMBER]:VALUE} w SORTED_NNC NEW_ROW[FIND_POS] = 1
- Wyjście: liczba wierszy w macierzy zgodna z liczbą wierszy w pliku z wynikami, każdy wiersz jest "przetransformowany" do postaci
0/1
Uwaga! Dodatkowo, należy określić typ konwersji danej wartości cechy. Proponuję aby określane to było w pliku konfiguracyjnym ini, np. przy definicji cechy w nowym polu o nazwie conversion
, np.
[base] class = fextor.features.tokens.WCCLTokenFeatureGen slicer = fextor.contexts.slicer.SentenceSlicer() operator = base[0] file = type = strset conversion = binary
Related issues
History
#1 Updated by Adam Radziszewski almost 12 years ago
Rodzaj/nazwa konwersji: zbiory jako wektory? reprezentacja binarna zbioru? (trafniejsze określenie mile widziane)
Typ cechy wejściowej: zbiór czegokolwiek
Idea: bardzo podobne do „binarnej” (j.w.), ale dla zbiorów
Np. wejście:
case1 ---------- {nom} {acc} {nom,acc}
Wyjście:
case1:acc case1:nom -------------------- 0 1 1 0 1 1Opis działania:
- najpierw robimy wielką unię wszystkich zbiorów, które wystąpiły, by ustalić dziedzinę (tj. zbieramy wszystkie unikalne elementy zbiorów)
- tworzymy tyle cech wyjściowych, ile unikalnych elementów wystąpiło w unii zbiorów; nazywamy te cechy wyjściowe tak samo jak powyżej (nazwa_cechy_we:element_zbioru)
- zbiór wejściowy reprezentujemy jako wektor zer i jedynek: czy element_i należy do zbioru wejściowego
#2 Updated by Radosław Ramocki almost 12 years ago
Zapewne potrzebna jest też konwersja cech ciągłych tj. o dziedzinie rzeczywistej.
Przykład wejścia: 0.6661 i na wyjściu to samo. Notacją może być po prostu wartość bez źadnych nawiasów, chyba to z niczym nie konfliktuje. Dodatkowo można by dodać dyskretyzację. Parametry były by ustawiane w configu np. liczba przedziałów, wtedy każdy przedział mógłby być reprezentowany jako jedna cecha binarna, wynikowo N cech binarnych z jednej cechy ciągłej o N przedziałach.