
Arseny
21.07.2017
18:24:29

Alexander
21.07.2017
18:25:49

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
реально бы делу очень классно помог

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

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

Killua
21.07.2017
18:29:16

Alexander
21.07.2017
18:29:18

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

Berkus
21.07.2017
18:30:08

Alexander
21.07.2017
18:30:25

Дед Пегас
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

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

Alexander
21.07.2017
18:33:30
по сути - да, мне нужен 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
Ну тебе нужно как-то переопределить оператор<() м)
Я не знаю как, должны быть какие-то критерии
То есть ты их сам задаёшь

Alexander
21.07.2017
18:38:37

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

Alexander
21.07.2017
18:44:43

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

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

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
и нужны какие-нибудь альтернативы

Arseny
21.07.2017
18:46:33

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

Arseny
21.07.2017
18:48:48

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

Admin
ERROR: S client not available

Azoyan
21.07.2017
18:55:12

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

Antony
21.07.2017
18:59:53


Arseny
21.07.2017
19:00:39

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

Alexander
21.07.2017
19:04:58

Arseny
21.07.2017
19:32:09

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

Berkus
21.07.2017
19:53:53
там есть левенштейн

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

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

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

Vladislav
21.07.2017
21:02:37
должен получиться идентичный автомат внутри
хотя регэксп экспоненциального размера получается(
в бусте вроде ничего нет подходящего( разве что в недрах regex'а