|
|
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
Столкнулся с задачкой, с ходу не знаю с какого места подступиться, так что интересуют ключевые слова (может названия каких либо общеизвестных алгоритмов, которые я видимо не знаю) по которым гуглить и т.д. Какие-нибудь предложения алгоритмов по наитию тоже приветствуются. Есть некое множество текстов, каждый текст состоит из некого набора токенов, в качестве токенов могут быть русские слова, английские слова и просто наборы слитно набранных букв и цифр. И среди всех этих текстов необходимо найти такие тексты, в которых есть русские слова, при наборе которых использовались латинские символы, похожие на кириллические (х - x, о - o, р - p, с - c, т - T, к - k и так далее). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 14:58 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
Если вдруг есть какие-нибудь классные библиотеки в этой области, то ссылки на них тоже приветствуются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 15:00 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
Фразу разбили на токены, оставили только те токены, в которых одновременно используются кириллические и латинские символы, а вот дальше вопрос, как отличить случайных набор букв от реального слова, на сколько понимаю только по словарю? То есть пытаемся заменить все символы по таблице подстановок и пытаемся найти получившееся слово в словаре, с учетом возможной морфологии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 15:08 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
Ключевое слово homoglyph ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 15:11 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
just_vladimir, Можно использовать какую-нибудь БД похожих символов для нормализации текста http://stackoverflow.com/a/28304327 http://www.unicode.org/Public/security/latest/confusables.txt ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 15:14 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 15:39 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
just_vladimir, а какие объемы ? можно взять спарк и мапредьюз хадуб. ...и анализировать ... можно просто смотреть коды символов что русские != английским т.е выподают номера из алфафита (например сумма букв больше итд), можно стоить можель на основе solr и учитывать словарь в котором люди делают ошибки ... так построены многие поисковики на сайтах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 18:42 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
Atum1, объемы приличные, но никакие хадупы не нужны, да и это дело десятое, главное алгоритм правильный подобрать. Про коды символов, имхо, перегиб, я думаю что-нибудь регулярное хорошо подойдет для этих целей. Словарь с ошибками не очень канает, т.к. в моем случае ищутся не ошибки, а злонамеренное искажение текста, с целью сокрытия информации в поиске, заранее сложно угадать в каком слове это будет делаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 20:22 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
just_vladimirAtum1, объемы приличные, но никакие хадупы не нужны, да и это дело десятое, главное алгоритм правильный подобрать. Про коды символов, имхо, перегиб, я думаю что-нибудь регулярное хорошо подойдет для этих целей. Словарь с ошибками не очень канает, т.к. в моем случае ищутся не ошибки, а злонамеренное искажение текста, с целью сокрытия информации в поиске, заранее сложно угадать в каком слове это будет делаться. По поводу Хадупа и Спарка я имел ввиду такой подход - тем более если у вас большое данные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 21:50 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
тут про идею стопслов https://drupalize.me/blog/201508/configure-search-api-solr-use-stopwords-when-indexing-content ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 21:55 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 21:56 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
вот вам живой пример работы solr с учетом ошибки в запросе http://www.ntv.ru/finder/?keytext=???????????&sort=PUBLISH_TIME http://www.ntv.ru/finder/?keytext=????????????&sort=PUBLISH_TIME 158 документов с учетом ошибки и без ... поиск по 1 млн новостей за все время существования сайта за ms ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 22:07 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
Atum1, данные большие, но это не хадуп, если взять с очень большим запасом, то пусть будет 10 млн текстов по 1КБ в день, это нужно с процессить до 10ГБ в день, все лежит на одном сервере и профит от растаскивания на кластер быстрее перекроется оверхедом на сетевые упражнения, да и нет у меня этого кластера :) За ссылки спасибо! ЗЫ: не на органы, но догадка близкая )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2016, 06:59 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
just_vladimirAtum1, данные большие, но это не хадуп, если взять с очень большим запасом, то пусть будет 10 млн текстов по 1КБ в день, это нужно с процессить до 10ГБ в день, все лежит на одном сервере и профит от растаскивания на кластер быстрее перекроется оверхедом на сетевые упражнения, да и нет у меня этого кластера :) За ссылки спасибо! ЗЫ: не на органы, но догадка близкая )) ну можно просто взять spark :) тем более что задачка интересная - и тут его можно применить :) даже на одной машине . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2016, 15:30 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
just_vladimirкак отличить случайных набор букв от реального слова, на сколько понимаю только по словарю? https://ru.wikipedia.org/wiki/Расстояние_Левенштейна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2016, 19:25 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
Usman, если заранее знать, какое должно быть слово, то да, edit distance это то что нужно, но я заранее какое это слово не знаю. Думаю без словаря никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2016, 20:41 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
just_vladimirUsman, если заранее знать, какое должно быть слово, то да, edit distance это то что нужно, но я заранее какое это слово не знаю. Думаю без словаря никак. Да самое простое что в голову приходит - сортируем слово - по коду букв - смотрим код первой буквы если она импортная - слово попадает в словарь ... сортировка в вашем случае - за линейное время ( аля карманная, или просто по массиву символов - что еще проще) - быстрее чем это придумать что то еще сложно :) , но можно. не как алгоритм а как идея : http://ideone.com/inJQjW в слове есть русские буквы ... они попали вконец массива Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2016, 21:21 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
just_vladimir, ты бы хоть парочку модульных тестов написал. Зачем мучаешь нас и заставляешь за тебя придумывать кейсы из твоей предметной области? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2016, 23:43 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
just_vladimirКакие-нибудь предложения алгоритмов по наитию тоже приветствуются. Решение задачи "в лоб" (требует много памяти под словарь). Берем словарь русского языка. Строим из него словарь слов с неправильными буквaами. (Слова из чисто русских букв откидываем) Дальше бьем любой текст на слова и проверяем по "словарю неправильных букв". (дерево или хеш на усмотрение автора). Или при разбитии на слова проверяем наличие букв двух алфавитов. Если такое есть, то приводим к русскому, если успешно проверяем по словарю русских слов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2016, 08:39 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев Решение задачи "в лоб" (требует много памяти под словарь). По-моему просто нужно построить индекс, при этом нормализуя слова перед индексацией. Таким образом память под конвертацию текста выделять особо не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2016, 08:45 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, Точнее, во втором случае нужна маска из трех битов. Младший - русский, Средний - латиница, Старший - все остальное. Если по приходу на разделитель маска равна 011 - то запускаем проверку слова (можно в отдельном потоке :) ) сбрасываем маску и переходим дальше. Сложность может возникнуть со словом "co" и ему подобными (целиком из английских букв). Тут, может быть, нужно анализировать предложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2016, 08:56 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПо-моему просто нужно построить индекс, при этом денормализуя слова перед индексацией. тогда BlazkowiczТаким образом память под конвертацию текста выделять особо не нужно. Задача же найти неправильно набитые слова. Правда словарь может оказаться большой. Предварительная проверка на наличие букв обоих алфавитов (при отсутствии третьих символов, как-тo отдельно обрабатывая "-" и т.п.) может сократить время, при малом проценте "неправильных слов". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2016, 09:01 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
IBMовцы, чтоб не заморачивать себе голову подобными задачами, даже EBCDIC придумывали. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2016, 09:08 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, ну а кто мешает на русском писать с ошибками ? теже слова ? или пропуская гласные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2016, 12:15 |
|
||
|
Алгоритм поиска наличия слов, содержащих буквы другого алфавита
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевИли при разбитии на слова проверяем наличие букв двух алфавитов. Если такое есть, то приводим к русскому, если успешно проверяем по словарю русских слов. Примерно по такому варианту я и пошел, только после стадии "приводим к русскому" нужна стадия приведения слова в нормальную форму, а потом уже лезть в словарь, либо нужно иметь словарь со всеми возможными словоформами, тоже вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2016, 13:13 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39279956&tid=2123861]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
115ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 274ms |
| total: | 494ms |

| 0 / 0 |
