Nano Hash - криптовалюты, майнинг, программирование

Agrep работает с аргументами del, ins

Как с помощью этого кода можно сопоставить «abteam» с «ab»?

agrep("abteam",c("acb","abd","ab"),value=T,ignore.case = TRUE,max = list(del = 10, ins = 10, sub = 10))

Результат character(0), хотя я указал del=10, ins=10. В чем проблема? Как работает agrep?


Ответы:


1

Из файла справки:

Если «стоимость» не указана, «все» по умолчанию равно 10%, а другие границы числа преобразований по умолчанию равны «всем».

Насколько я понимаю, это означает, что либо cost, либо all является ограничивающим фактором, даже если вы установите del, ins и sub. Если вы хотите разрешить 10 преобразований, вы можете просто установить max = 10. Дополнительные параметры могут использоваться для ограничения определенных преобразований, например:

> x <- c("fooar","ooar","foobaz")
> agrep("foobar", x, value=T, max = list(all = 3, del = 0, ins = 0))
[1] "foobaz"

В вашем случае вы можете использовать max = list(all = 10 ,del = 10, ins = 10, sub = 10)).

23.06.2015
  • Спасибо! Оно работает. Можно ли придать значение определенной части строки? Скажем, сопоставление должно выполняться по имени, а не по фамилии. 23.06.2015
  • Насколько я понимаю, нет. Если вы хотите что-то подобное, вам придется предоставить свою собственную логику. 23.06.2015
  • Честно говоря, мне это до сих пор непонятно. Для примера OP, если вы используете agrep(pat, x, value=T, max = list(all = 10 ,del = 10, ins = 0, sub = 10)), ничего не возвращается. Это не имеет смысла — 4 удаления, больше ничего и "abteam" соответствует "ab". 24.06.2015
  • Хорошая точка зрения. Что интересно библиотека Python TRE возвращает совпадение: import tre; fz=tre.Fuzzyness(maxerr=10, maxdel=10, maxins=0, maxsub=10); pt=tre.compile("abteam"); pt.search("ab", fz). 24.06.2015
  • @zero323 - ну тогда я в тупике. agrep настолько сбивает меня с толку, что в прошлом я обычно использовал вместо этого adist - по крайней мере, это дает хорошие четкие значения, которые я могу протестировать. 24.06.2015
  • @thelatemail Разделение вставок и удалений предполагает, что на самом деле это асимметрично, но это не поддерживается поведением Python. Здесь определенно происходит что-то странное. adist довольно мило. Другой альтернативой является библиотека Biostrings. 25.06.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..