согласиться с направленными штрафами


16

Я использую tre-agrep (manpage) , реализацию agrep (manpage) , чтобы выполнить приблизительное сопоставление с образцом. Эта утилита выполняет поиск совпадений на основе расстояния Левенштейна , и пользователь может настроить штраф, примененный к изменениям замены, вставки или удаления.

Я хотел бы, однако, применять весовые коэффициенты по-разному по длине запроса, а именно с меньшим весом для удалений в начале (левый конец) запроса, чем справа. manСтраница для этой утилиты не означает , что такой уровень контроля возможно.

Существуют ли другие инструменты командной строки, где возможно приблизительное соответствие с более точным контролем штрафов за несоответствие?


5
AFAIK, agrep единственный. Я удивлен, что вы даже знаете об этом, учитывая его относительную неясность в мире UNIX (что очень плохо). Теоретически, вы можете отрегулировать эти веса в исходном коде, но насколько это практично, я не знаю. Вы пытались связаться с авторами инструментов или даже оригинальных работ, на которых они основаны? Имейте в виду, они, вероятно, старые пукающие сейчас :)
Otheus

3
@Otheus Старые пукающие все еще могут писать код ;-)
Кусалананда

Нетрудно написать утилиту, сопоставляющую Левенштейну, со стоимостью вставки / удаления / замены, определенной как выражения в Python или Awk. Действительно, утомительная часть - это все возможные параметры командной строки. Если ОП хочет показать типичную командную строку и сказать, какие опции agrepим действительно нужны, я, вероятно, мог бы что-то подсказать . Вычислить расстояние Левенштейна для двух струн очень просто. Я бы предложил сценарий оболочки, обернутый вокруг вызова GNU awk.
Номинальное животное

Ответы:


1

Нет. Такая настройка выходит за рамки инструмента Linux и входит в область написания собственного кода. Использование популярного языка высокого уровня (Java, JavaScript, Python, Perl) будет использовать немного больше памяти, чем C, и будет немного медленнее для языков сценариев, но, вероятно, это будет незначительным для вашего варианта использования. Так что повторно спросите на stackoverflow с точными деталями, которые вам нужны, и кто-то может предложить вам один вкладыш.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.