Wsparcie #3540

Rodzje konwersji + plik konfiguracyjny

Added by Paweł Kędzia almost 12 years ago. Updated almost 12 years ago.

Status:NowyStart date:23 Dec 2011
Priority:NormalnyDue 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:

Rodzaj/nazwa konwersji: 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

Related to fextor - Błąd #3368: Domyślny format konwersji do macierzy lexcsd Zamknięty 15 Dec 2011
Related to fextor - Zadanie #3367: Format zapisywania cech w fextorze i ich konwersja Zamknięty 15 Dec 2011

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          1

Opis działania:
  1. najpierw robimy wielką unię wszystkich zbiorów, które wystąpiły, by ustalić dziedzinę (tj. zbieramy wszystkie unikalne elementy zbiorów)
  2. 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)
  3. 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.

Also available in: Atom PDF