zgadzają się z ukierunkowanymi karami

16

Korzystam z tre-agrep (manpage) , implementacji agrep (manpage) , aby wykonać przybliżone dopasowanie wzorca. To narzędzie wyszukuje dopasowania na podstawie odległości Levenshteina , a użytkownik może skonfigurować karę nakładaną za zmiany podmiany, wstawiania lub usuwania.

Chciałbym jednak zastosować ważenia w różny sposób na całej długości zapytania, a mianowicie o niższej wadze dla usuwania na początku (lewym końcu) zapytania niż po prawej stronie. manAktualizacja tego narzędzia nie wskazuje, że taki poziom kontroli jest możliwe.

Czy istnieją inne narzędzia wiersza poleceń, w których możliwe jest przybliżone dopasowanie z lepszą kontrolą kar za niedopasowanie?

użytkownik001
źródło
5
AFAIK, jedyna zgoda. Dziwię się, że nawet o tym wiesz, biorąc pod uwagę jego względne zaciemnienie w świecie UNIX (co jest bardzo złe). Teoretycznie można dostosować te wagi w kodzie źródłowym, ale nie wiem, czy to praktyczne. Czy próbowałeś skontaktować się z autorami narzędzi, a nawet oryginalnymi artykułami, na których są oparte? Pamiętaj, że to już prawdopodobnie stare
pierdnięcia
3
@Otheus Old farts nadal są w stanie pisać kod ;-)
Kusalananda
Nie byłoby trudno napisać narzędzie do dopasowywania Levenshtein z kosztami wstawiania / usuwania / zastępowania zdefiniowanymi jako wyrażenia w Pythonie lub Awk. Nużącą częścią są wszystkie możliwe opcje wiersza poleceń. Jeśli OP chce pokazać typową linię poleceń i powiedzieć, których opcji agrepfaktycznie potrzebują, prawdopodobnie mógłbym coś wymyślić. Obliczenie odległości Levenshteina dwóch strun jest naprawdę bardzo łatwe. Sugerowałbym skrypt powłoki owinięty wokół wywołania GNU awk.
Nominal Animal

Odpowiedzi:

1

Nie. Tego rodzaju dostosowanie nie wchodzi w zakres narzędzia systemu Linux i obejmuje pisanie własnego kodu. Używanie popularnego języka wysokiego poziomu (Java, JavaScript, Python, Perl) zużyje nieco więcej pamięci niż C i będzie nieco wolniejsze dla języków skryptowych, ale prawdopodobnie będzie to nieistotne w twoim przypadku użycia. Zapytaj ponownie o przepełnienie stosu z dokładnymi szczegółami, których potrzebujesz, a ktoś może zaoferować ci jedną linijkę.

użytkownik1133275
źródło