Zadanie #4651

Reimplementacja cech słownikowych

Added by Michał Marcińczuk about 10 years ago. Updated about 10 years ago.

Status:ZamkniętyStart date:20 Mar 2013
Priority:WysokiDue date:
Assignee:Michał Krautforst% Done:

100%

Category:-
Target version:Liner 2.3

Description

Cechy słownikowe przyjmują jedną z wartości: B, I lub O. Sekwencja tokenów przyjmuje kolejno wartości B I*, jeżeli cała sekwencja zostaje znaleziona w słowniku. W przypadku znalezienia kilku nakładających się sekwencji priorytet ma ta, która wystąpiła pierwsza w zdaniu, a jeżeli zaczynają się od tej samej pozycji to dłuższa sekwencja.

Np. dla słownika z wpisami „Stany Zjednoczone”, „Stany Zjednoczone Ameryki Północnej” i „Ameryki”, poniższa sekwencja zostanie oznaczona jako:

Stany        B
Zjednoczone  I
Ameryki      I
Północnej    I
opowiedziały O
się          O

Słowniki mogą zawierać po kilka set tysięcy pozycji, dlatego wyszukiwanie musi być bardzo efektywne. Warto spojrzeć na ten artykuł i wybrać najlepsze rozwiązanie http://java-persistence-performance.blogspot.com/2010/12/what-is-faster-jvm-performance.html

W przypadku nazw wielowyrazowych, dla których konieczne jest sprawdzenie sekwencji tokenów dobrym rozwiązanie będzie użycie struktury Trie (http://en.wikipedia.org/wiki/Trie), gdzie w każdym węźle będzie przechowywane słowo, informacja czy węzeł jest terminalny oraz HashSet kolejnych elementów w sekwencji. Być może istnieje szybsze rozwiązanie, więc warto by jeszcze pogooglać.

Obecnie liner obsługuje następujące cechy słownikowe:

-feature person_first_nam:{INI_PATH}/../data/names4/person_first_nam.txt
-feature person_last_nam:{INI_PATH}/../data/names4/person_last_nam.txt
-feature country_nam:{INI_PATH}/../data/names4/country_nam.txt
-feature city_nam:{INI_PATH}/../data/names4/city_nam.txt
-feature road_nam:{INI_PATH}/../data/names4/road_nam.txt
-feature person_prefix:base:{INI_PATH}/../data/keywords2/person_prefix.txt
-feature person_noun:base:{INI_PATH}/../data/keywords2/person_noun.txt
-feature person_suffix:base:{INI_PATH}/../data/keywords2/person_suffix.txt
-feature road_prefix:base:{INI_PATH}/../data/keywords2/road_prefix.txt
-feature country_prefix:base:{INI_PATH}/../data/keywords2/country_prefix.txt

Sposób definicji ulegnie zmianie na:

-feature dict_person_first_nam:orth:{INI_PATH}/../data/names4/person_first_nam.txt
-feature dict_person_last_nam:orth:{INI_PATH}/../data/names4/person_last_nam.txt
-feature dict_country_nam:orth:{INI_PATH}/../data/names4/country_nam.txt
-feature dict_city_nam:orth:{INI_PATH}/../data/names4/city_nam.txt
-feature dict_road_nam:orth:{INI_PATH}/../data/names4/road_nam.txt
-feature dict_person_prefix:base:{INI_PATH}/../data/keywords2/person_prefix.txt
-feature dict_person_noun:base:{INI_PATH}/../data/keywords2/person_noun.txt
-feature dict_person_suffix:base:{INI_PATH}/../data/keywords2/person_suffix.txt
-feature dict_road_prefix:base:{INI_PATH}/../data/keywords2/road_prefix.txt
-feature dict_country_prefix:base:{INI_PATH}/../data/keywords2/country_prefix.txt

Opis pasuje do wzorca:

(dict_.*):(.*):(.*)

gdzie:
  • 1 grupa to nazwa cechy,
  • 2 grupa to nazwa istniejącej cechy, której wartość będzie sprawdzana w słowniku,
  • 3 grupa to ścieżka do słownika

Komenda do konwersji korpusu analogicznie do #4650:

./liner2.sh convert -ini features-cicling-dict.ini -i iob -f kpwr-1.1-nam.iob -t kpwr-1.1-nam-dict.iob -o iob

Czas konwersji:

real    0m41.151s
user    0m41.799s
sys    0m1.068s

cicling-dict.7z (1.38 MB) Michał Marcińczuk, 20 Mar 2013 09:40

kpwr-1.1-nam-dict.iob.7z (515 KB) Michał Marcińczuk, 20 Mar 2013 09:40


Related issues

Related to Liner2 — jednostki identyfikacyjne, TImeX, wyznaczniki sytuacji - Zadanie #4649: Reimplementacja generatora cech dla tokenów w Javie Zamknięty 19 Mar 2013

History

#2 Updated by Michał Marcińczuk about 10 years ago

  • Status changed from Nowy to Przypisany
  • Assignee set to Michał Krautforst
  • Target version set to Liner 2.4

#3 Updated by Michał Marcińczuk about 10 years ago

  • Priority changed from Normalny to Wysoki

#4 Updated by Michał Marcińczuk about 10 years ago

  • Target version changed from Liner 2.4 to Liner 2.3

#5 Updated by Michał Krautforst about 10 years ago

  • Status changed from Przypisany to Rozwiązany
  • % Done changed from 0 to 100

#6 Updated by Michał Marcińczuk about 10 years ago

  • Status changed from Rozwiązany to Zamknięty

Also available in: Atom PDF