@ProCxx

Страница 1120 из 2477
Arseny
21.07.2017
18:24:29
за реализаию я был бы премного благодарен - нужно кучу всего бенчить для approximate searching
Сейчас попробую найти. Там был marathon match на topcoder, там куча реализаций.

Alexander
21.07.2017
18:25:49
Сейчас попробую найти. Там был marathon match на topcoder, там куча реализаций.
скидывай, что найдёшь. Ну или отправь меня ссылкой на место, где мне самому качать это всё дело.

Vladislav
21.07.2017
18:27:15
Killua
21.07.2017
18:27:50
А что не так-то?

Google
Alexander
21.07.2017
18:27:50
вся соль этого approximate matching, что алгоритмы там внутри намного интереснее. И это, есть хороший challenge - сделать по скорости работы agrep

А что не так-то?
не подскажешь либу с approximate matching алгоритмами?

реально бы делу очень классно помог

Vladislav
21.07.2017
18:28:30
А что не так-то?
то, что позиция "алгоритмы нужны только для собеседований и все давно написано" - очень наивная

Alexander
21.07.2017
18:28:45
а если они ещё и достаточно быстрые, то вообще цены находке не будет

Alexander
21.07.2017
18:29:18
то, что позиция "алгоритмы нужны только для собеседований и все давно написано" - очень наивная
да не разводи этот срач. Был же когда-то давновато этот срач. И каждый всё равно останется при своём мнеии

Killua
21.07.2017
18:29:21
Результатов: примерно 345 000

Berkus
21.07.2017
18:30:08
Результатов: примерно 345 000
о, а вот и approximate match!

Alexander
21.07.2017
18:30:25
Результатов: примерно 345 000
ты можешь просто скинуть хорошую либу? Или ты прокси к гуглу?

Дед Пегас
21.07.2017
18:30:52
Кого забанить?

Alexander
21.07.2017
18:31:19
Кого забанить?
да пока что всё норм вроде как

Дед Пегас
21.07.2017
18:31:33
Ну ок)

Google
Berkus
21.07.2017
18:31:38
Кого забанить?
давай рулеткой выберем?

Killua
21.07.2017
18:31:46
Скиньте канал для новичков тогда уж, плз.

Berkus
21.07.2017
18:31:59
#supapro

Group Butler [beta]
21.07.2017
18:32:00
#supapro
Чат supapro.cxx: https://telegram.me/joinchat/BYlFbD3eN3JMaG34hyh96w

Alexander
21.07.2017
18:32:01
@supapro

@ultramegapro

Дед Пегас
21.07.2017
18:32:35
давай рулеткой выберем?
Надо предложить Алексу сделать такого бота

Azoyan
21.07.2017
18:32:35
Approximate regexp?

Alexander
21.07.2017
18:33:06
Approximate regexp?
ну почти. Такой тоже подойдёт. Хотя вроде я на такое наталкивался уже...

Azoyan
21.07.2017
18:33:21
agrep это ты имел ввиду?

Alexander
21.07.2017
18:33:30
agrep это ты имел ввиду?
agrep не предлагать

по сути - да, мне нужен agrep, только в виде либы

Azoyan
21.07.2017
18:33:45
А какая задача?

Alexander
21.07.2017
18:33:51
а не в виде уже готовой тулзы

точно такая, как и у agrep - приближённый поиск

Azoyan
21.07.2017
18:35:11
ну я так понял строки?

Alexander
21.07.2017
18:35:29
абсолютно идентичная задача. Мне нужна либа, в которой есть какой-тот абстрактный Iterator fuzzy_search(CorpusIter begin, CorpusIter end, Pattern begin, Pattern end, int dist);

ну я так понял строки?
хотя бы для них, да. В идеале - последовательности чего-нибудь с operator=, operator<, etc.

Azoyan
21.07.2017
18:36:08
Я не знаю либы

Ну как там это делается, алгоритм т9, посмотри

Google
Alexander
21.07.2017
18:36:45
Я не знаю либы
ok, мб ты знаешь, где такие вещи реализованы на должном уровне и откуда можно выцепить?

Azoyan
21.07.2017
18:36:53
У Сэджвика

Alexander
21.07.2017
18:37:02
У Сэджвика
нет там такого

курить исходники agrep - это просто аццкое удовольствие. Там треш и содомия внутри

Azoyan
21.07.2017
18:37:59
Ну тебе нужно как-то переопределить оператор<() м)

Я не знаю как, должны быть какие-то критерии

То есть ты их сам задаёшь

Azoyan
21.07.2017
18:39:27
Что для тебя означает приблизительный поиск? Формализуй эти требования и ты их легко закодируешь

Alexander
21.07.2017
18:39:43
мне нужны в идеале (в порядке убывания идеальности): 1) Либа с такими алгоритмами, которые я могу просто дёргать 2) Проект, откуда я могу эти алгоритмы спокойно утащить и где они номроально написаны 3) Ссылки на бумаги, которые описывают действительно эффективные алгоритмы 4) Просто полезные ссылки на бумаги Также всякие бенчамрки будут просто бесценны

Alexander
21.07.2017
18:41:33
Что для тебя означает приблизительный поиск? Формализуй эти требования и ты их легко закодируешь
не так то и сложно ПРОСТО сделать это. Крайне непросто сделать это ЭФФЕКТИВНО, чтобы пользователи потом не закидали тряпками.

Azoyan
21.07.2017
18:42:07
Аааааааааааааааа

Alexander
21.07.2017
18:42:17
?

Azoyan
21.07.2017
18:43:42
Наверное быстрые алгоритмы не публикуют. Может можно узнать как там у duckduckgo

Azoyan
21.07.2017
18:44:57
Ладно, я не знаю что тебе нужно)

Alexander
21.07.2017
18:45:18
они строят здоровенные индексы. Тут не подходят подходы всяких Lucene.

Ладно, я не знаю что тебе нужно)
всё просто - мне нужен agrep в виде либы

Google
Alexander
21.07.2017
18:45:44
Пока что есть вот такое, но оно медленное: https://github.com/Randl/algorithm/blob/feature_branch/fuzzy_search/include/boost/algorithm/fuzzy_search/fuzzy_search.hpp

и нужны какие-нибудь альтернативы

Azoyan
21.07.2017
18:47:38
Я ничем не могу тебе помочь.

Alexander
21.07.2017
18:49:30
Но о портируемости и production ready коде там речи нету, конечно.
про это никто не говорит. Это уже моя задача сделать это таким. Спасибо, сейчас только зарегаюсь на топкодере

но реализации, конечно, зашкварны. И судя по всему, парни выжимали, что могли

Admin
ERROR: S client not available

Berkus
21.07.2017
18:57:27
я думаю он бенчмаркает бустовский fuzzy_search

Antony
21.07.2017
18:59:53
Опишу еще раз всю ситуацию TLDR Откуда брать mpsc queue, которую можно ждать в epoll или почему таких нигде нету? Есть несколько потоков, в каждом из них крутится epoll. Потокам нужно слать друг другу сообщения. Когда потоку приходит сообщение он должен пробуждаться из epoll-а. Разбудить поток можно разными способами: eventfd, pthread_signal, pipe наконец. Пробуждаться каждые x миллисекунд и проверять очередь так себе вариант. Как именно будить имхо не очень важно, системный вызов и пробуждение потока это уже относительно долго. Но допустим используется eventfd, как будто созданный именно для этого. Для отправки сообщений хочется использовать mpsc queue. При этом ее нужно как-то скрестить с eventfd, чтобы fast path в eventfd не писал вообще. То есть хочется хочет делать write в eventfd только когда consumer действительно спит в epoll. Это можно сделать обернув очередь в семафор внутри которого не futex, а eventfd. Но нигде не видел реализации такого семафора. Более того интуитивно кажется что оборачивать очередь в семафор не оптимально, оптимальней встроить eventfd в саму очередь. Но таких очередей тоже что-то не видно.
А почему не очередь с conditional_variable у каждого потока? Чем вызвана необходимость использовать epoll?

Antony
21.07.2017
19:04:57
Тем что каждый поток может работать с сетью.
А! Так вы делаете многопоточный actor? Прикольно, неожиданно. У вас особые требования к latency? Реализаций мало, так как обычно используют proactor, а там один epoll + очередь задач из которой многие потоки тянут себе "работу". Всё сетевое идёт через единственный epoll, готовое сетевое событие ставится в очередь задачь, свободный поток его забирает.

Alexander
21.07.2017
19:04:58
А что у тебя за задача-то?
написание библиотеки для fuzzy_search

Alexander
21.07.2017
19:38:14
кстати, выяснилось, что внутри Lucene всё таки есть Levenstein automata - довольно популярная тема для fuzzy_search. Мб кто натыкался на С++ имплеменатцию?

Berkus
21.07.2017
19:53:53
в бусте его ещё нет ?
https://github.com/cjqed/rs-natural такую фигню нашел

там есть левенштейн

Google
Alexander
21.07.2017
20:07:14
там есть левенштейн
это просто дистанции. У меня это тоже есть, причём в гораздо большем обьёме. Но всё равно спасибо за ссылочку

Это просто расстояние Левештейна, а есть такая штука, как автомат Левенштейна, что гораздо более интересная вещь

Berkus
21.07.2017
20:13:04
да, автомат меньше где встречается

Alexander
21.07.2017
20:16:11
да, автомат меньше где встречается
никак не могу найти плюсовую реализацию. Наверное придётся портировать с шарпа какого-нибудь

Vladislav
21.07.2017
20:26:05
Айфонная клава предлагает исправить "навелосипедить" на "на велосипед тьмы", но все же

Alexander
21.07.2017
20:33:07
Не проще свою навелосипедить?
ты же понимаешь, если уже есть готовое, то своё велосипедить не хочется. К тому же это занимает время. И потом этот велосипед нужно будет превращать в адекватное решение

Vladislav
21.07.2017
20:36:38
а есть какая-нибудь общепринятая либа для работы с конечными автоматами?

с nfa->dfa оно в 3 строки велосипедится

Alexander
21.07.2017
20:37:40
Boost Statechart ещё вроде есть

но я с ними не работал

Vladislav
21.07.2017
21:00:47
можно взять libgfsm, алгебраически levenshtein automaton легко строится (если я правильно понял, что это)

Alexander
21.07.2017
21:02:15
можно взять libgfsm, алгебраически levenshtein automaton легко строится (если я правильно понял, что это)
если я и что-то буду брать, то только бустовое (ибо в буст данное дело пойдёт)

Vladislav
21.07.2017
21:02:19
либо можно в регэксп превратить и скомпилировать

Alexander
21.07.2017
21:02:26
но за либу спасибо - не знал про такую

Vladislav
21.07.2017
21:02:37
должен получиться идентичный автомат внутри

хотя регэксп экспоненциального размера получается(

в бусте вроде ничего нет подходящего( разве что в недрах regex'а

Страница 1120 из 2477