Zadanie #4651
Reimplementacja cech słownikowych
Status: | Zamknięty | Start date: | 20 Mar 2013 | |
---|---|---|---|---|
Priority: | Wysoki | Due 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
Related issues
History
#1 Updated by Michał Marcińczuk about 10 years ago
- File cicling-dict.7z added
- File kpwr-1.1-nam-dict.iob.7z added
#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