Идея была в том чтоб хранить весь словарь в hll, в тесте добавлять туда слово и проверять если изменился общий счетчик. Для 64Кб hll ошибается на 0.15% в оценке общего кол-ва слов, но для проверки одного слова этого недостаточно
из-за того, что 50% не-слов очень похожи на словарь, то универсальное решение не будет самым лучшим.
наиболее оптимальным, на мой взгляд, будет что-то типа:
отсеять непохожие слова с помощью эвристики, регулярок, сетей ит.д. | проверить похожие слова в Блуме
Пока что я пришел к выводу, что никакие хитрые алгоритмы не помогут отфильтровать похожие слова, и это натолкнуло меня на мысль посмотреть сколько есть похожих слов, насколько они похожи, может даже понять как они генерируются и можно ли это использовать.
Похожесть я смотрел по Levenshtein distance, и вот некоторые результаты:
29% не-слов отличаются от словаря на одну букву, 20% на 2, 12% на 3, и так по убыванию…
В случаях когда есть одно отличие, то в 60% поменяли букву, 30% добавили букву, и в 10% убрали.
В 17% меняли букву а, 9% букву b, 7% d,c,e. потом r 5.5%,l 5.3%,' 5.3%,n 4.3%,s 4.2%…
В 43% менялась первая буква, 11% 2 и 3я, 9% 4я…
В тех случаях когда добавляли или удаляли букву, то значимых отличий не наблюдается. Буквы s,e,a,i,' добавляются чаще остальных, e,a,i удаляются.
Очень любопытный факт, что если смотреть на похожесть слов в словаре между собой, то в 72% слов она равна 1, 24% равна 2, 3% равна 3, 1% 4, и гораздо меньше 1% в остальных случая.
Интересно будет посмотреть на такой граф, и сколько будет ключевых слов, которые порождают остальные.
Я думаю что нейронные сети смогут эффективно отличить только шум и слишком непохожие слова. Чтоб отличать похожие слова, они должны их запомнить, а тут уже места не хватит.
Прошу прощения если эта цифра ввела кого-то в заблуждение
HLL — 60%
HyperLogLog is an algorithm for the count-distinct problem, approximating the number of distinct elements in a multiset
Идея была в том чтоб хранить весь словарь в hll, в тесте добавлять туда слово и проверять если изменился общий счетчик. Для 64Кб hll ошибается на 0.15% в оценке общего кол-ва слов, но для проверки одного слова этого недостаточно
уважаемый feldgendler, разрешено хранить часть кода в файле данных?
Step 1:
Several steps later:
наиболее оптимальным, на мой взгляд, будет что-то типа:
отсеять непохожие слова с помощью эвристики, регулярок, сетей ит.д. | проверить похожие слова в Блуме
Похожесть я смотрел по Levenshtein distance, и вот некоторые результаты:
29% не-слов отличаются от словаря на одну букву, 20% на 2, 12% на 3, и так по убыванию…
В случаях когда есть одно отличие, то в 60% поменяли букву, 30% добавили букву, и в 10% убрали.
В 17% меняли букву а, 9% букву b, 7% d,c,e. потом r 5.5%,l 5.3%,' 5.3%,n 4.3%,s 4.2%…
В 43% менялась первая буква, 11% 2 и 3я, 9% 4я…
В тех случаях когда добавляли или удаляли букву, то значимых отличий не наблюдается. Буквы s,e,a,i,' добавляются чаще остальных, e,a,i удаляются.
Очень любопытный факт, что если смотреть на похожесть слов в словаре между собой, то в 72% слов она равна 1, 24% равна 2, 3% равна 3, 1% 4, и гораздо меньше 1% в остальных случая.
Интересно будет посмотреть на такой граф, и сколько будет ключевых слов, которые порождают остальные.
Интересно попробовать adversarial networks
300Кб для блюма дает точность больше 90%
60Kb — около 70%