| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Фильтр мата на Java |
| Автор: Се ля ви 21.1.2005, 13:55 |
| Делаю форум для сайта http://www.inoSMI.Ru . Сайт посвящен переводам видной западной прессы о России - даёт представление о мнении элитной западной прессы (разделяемой, как мне кажется, очень многими) о нас. Там порой такие статьи, что и я без мата не прокомментирую при всём желании - так что фильтр русского мата просто необходим. К тому же, как мне рассказывал админ предыдущего форума на этом сайте, желание матернуться у посетителей настолько сильно, что они изобретают хитрые методы, типа замены в матерных словах русских на латинские буквы, благо часть из них пишутся одинаково, или даже просто буквы с соответствующим русскому звучанием вставляются взамен русских внутрь слова. Нужен фильтр, который бы мог заменять мат на "<слово удалено цензурой>" или что-то в этом роде - крайне желательно, что бы он был написан на Java... Если не найду на Java, задам вопрос в более общий раздел форума - тогда, видимо, придётся заворачивать в веб-сервис или что-то наподобии этого... |
| Автор: Domestic Cat 21.1.2005, 14:01 | ||
Ну вот простой вариант
Все дело в том чтобы загнать побольше слов, во всех возможных сочетаниях. |
| Автор: Се ля ви 21.1.2005, 14:14 |
| Domestic Cat Спасибо, канешь, но я думаю, нужен намного более сложный алгоритм - хотя бы из-за различных окончаний, которые качественно отличают русский язык от английского, и главное - именно из-за хитрости несдержанного народа, о которой я написал выше... Поидее, мне нужно фильтровать не столько по написанию, сколько по звучанию - поэтому нужна функция на подобии запроса LIKE БД... Но специфическая... |
| Автор: Domestic Cat 21.1.2005, 14:23 | ||||
Дык регекспы покруче LIKE будут
Ну так на любом языке можно сделать : fuck f/\ck f*u*c*k Fuk ..... ad infinitum В-первых тебе окончания слов не нужны, достаточно корень вырезать, а это сокращает словарь. Во-вторых можно подумать как эти слова задать регекспами: http://java.sun.com/docs/books/tutorial/extra/regex/index.html то есть не задавать целиком слова / корни. |
| Автор: Се ля ви 21.1.2005, 14:33 |
| Domestic Cat RegExp`ы я знаю неплохо, хотя за ссылку спасибо всёравно :-) Хорошо, допустим, можно сделать действительно на них (RegExp`ах) - идея хорошая, сгодится. Тогда нужен их список для всех слов русского мата... Где-нибудь что-то подобное есть? Т.е. в цикле перебераем массив регэкспов, заменяя слова в тексте по нему - и на выходе получаем "очищенный" текст... Да, тогда всё упирается в написание такого массива - первая версия может быть написана за день-два достаточно муторного кропотливого труда, остальное доделывать по факту обнаружения ошибок... Ещё, менее "дорогие" по времяни варианты? Неужели никто не сталкивался до меня с такой проблемой? Не вверю... |
| Автор: Sun 21.1.2005, 14:37 |
| Насколько я знаю нормального решения для фильтра матов нет. Если искать по корню, то такие слова как "гребля", "сабля" и т.д. сильно пострадают. |
| Автор: Domestic Cat 21.1.2005, 14:45 |
| Добавлено @ 14:52 http://www.relib.com/forums/topic.asp?id=810403 |
| Автор: sergejzr 21.1.2005, 14:58 |
| Domestic Cat, и по моему ИМХО тоже Вот кое что. Движек на tcl'e + словарь http://irc.tm-net.ru/soft/eggdrop/scripts/antimat.tar.bz2 |
| Автор: LSD 21.1.2005, 21:28 |
| ИМХО любой фильтр можно обойти, но с другой стороны если админ не спит, то второй раз то же фокус не пройдет. Так что основной поток мата можно отсечь. Можно попробовать накидать примерный алгоритм: 1) разбиваешь текст на токены 2) ищешь все слова состоящие из смешанных букв, и в них заменяешь все латинские буквы на аналогичные русские буквы (как то икс на ха), и наоборот если требуется фильтр английского мата. Соответственно для каждого токена может быть несколько вариантов. Так же можно заменять псевдографику. 3) переводишь транслит 4) а теперь просто проходишься по списку токенов обычным фильтром Реализовывать это конечно будет не просто, но после реализации алгоритма, основная проблема будет только в обучении фильтра, но в этом тебе форумчане помогут |
| Автор: sergejzr 21.1.2005, 21:40 |
| Давайте разработаем антимат на яве? У меня тоже мысли имеются и кое какой опыт |
| Автор: LSD 21.1.2005, 23:36 | ||
Поделись. |
| Автор: sergejzr 21.1.2005, 23:40 |
| В принципе кластерингом документов в последнее время занимаюсь с использованием онтологий. ну и wordprocessings всякие тоже туда принадлежат. Немного не то, но вполне применимо. |
| Автор: Се ля ви 22.1.2005, 00:56 | ||||
Давайте вместе, канешь :-) |
| Автор: chipset 22.1.2005, 02:25 | ||
А что? Неплохая идея... |
| Автор: sergejzr 22.1.2005, 02:36 |
| Предлагаю во первых открыть для проекта новую тему в "наших проектах". Кто откроет, тот и будет рулить Туда и идеи и релизы кладывать. На яве будет перспективно-кроссплаттформенно. Я вообще удивляюсь, что ничего серьёзного в этом направлении нет.... |
| Автор: chipset 22.1.2005, 02:43 |
| А прикол в том что каждый третий захочет помочь нашей системе со словарным запасом... |
| Автор: sergejzr 22.1.2005, 02:46 |
| |
| Автор: chipset 22.1.2005, 02:49 | ||
ИМХО, не следует пока... Пусть просто в топике поживет, а то ещё один мертвый раздел делать... |
| Автор: sergejzr 22.1.2005, 02:52 |
| Говорю же, если кто серьёзно решит. Просто помогать я смогу, а ещё один проект тянуть - нет. Хотя ужасть как хочется |
| Автор: LSD 22.1.2005, 15:02 | ||
| Давайте пока попробуем накидать общую концепцию, а там посмотрим как и на чем реализовывать. Как вам мое предложени по поводу схемы анализа. У меня пока нет полной ясности по поводу не регистрозависимого анализа, а в остальном вроде вопросов у меня нет. sergej.z Расскажи поподробнее про "кластерингм документов в последнее время занимаюсь с использованием онтологий. ну и wordprocessings всякие тоже туда принадлежат". А то я только онтологию знаю и то как раздел философии P.S. Поскольку тему начал Се ля ви, предалгю его и назначить крайним за все это дело
|
| Автор: chipset 22.1.2005, 15:14 |
| LSD ИМХО, должен быть словарь матерных слов (бл*) и словарь защищеных слов (гребля, сабля и т.д.). Далее, один из вариантов: определяем последовательность из буквы которые находятся недалеко друг от друга (f_u_c_k), проверяем - соответствует ли словарю защищеных слов и если нет - ... Естественно всё это заоптимизируется и т.д и т.п.. Кстати: предлагаю модераторам снять ограничения на мат в этом топике |
| Автор: sergejzr 22.1.2005, 16:57 |
Как Альтернатива можно пробелы сразу удалять, а потом искать подозрительные корни. Найдя восстанавливать слово, проверять в словаре. |
| Автор: chipset 22.1.2005, 17:04 |
| sergej.z, а где в твоем алгоритме средства для распознования слов типа: "f^u_c^k"? Добавлено @ 17:05 Вижу.. |
| Автор: sergejzr 22.1.2005, 17:14 | ||||
Там много рассказывать Берётся онтология - дерево или граф. Как повезёт. Скорее на хватит просто таксономии, потому что онтологические связи я в алгоритме(пока) не учитываю.
Это очень грубое разделение. В ральной жизни я пытаюс кластеровать мат. и физ. документы. Каждый узел рассматривается ка концепт. для каждого документа создаётся вектор из концептов. v(i)= |поездки|перемещение|проживание|самлёт|поезд|отель|квартира| i - порядковый номер документа Теперь мы пробегаем по документам и изменяем значение компоненты вектора, если находим в тексте подходящее словосочетание. Например "Гостинница Россия" -> v(i)[отель]++ "Ту 154" -> v(i)[самлёт]++ итд. Затем мы редуцируем количество компонентов в векторах хитрым алгоритмом коллег из Karlsruhe. Таким образом сокращаем кол-во измерений в нашем документном пространстве. То, что получилось кластеруем каким нибудь K-means'ом. Вот вкратце и всё Извиняюсь, но я многих терминов по русски не знаю, так что мог где нить чушь написать |
| Автор: Се ля ви 22.1.2005, 17:39 | ||||||||||||||||
Ок, давайте порулю я. :-) sergej.z Схема хорошая. Надо решить, на каких этапах всё делать регэкспами, а где можно и вручную(для быстроты)... Думаю, сначала можно всё сделать регэкспами, а потом какие-то этапы переписывать, оптимизируя. Итак, фазы: 1.
2.
3.
4.
5.
6.
7.
Думаю, это должен быть класс без конструктора и все его медоды должны быть статичными и более того - private`ными, кроме одного, который возвращает уже отфильтрованный текст. В качестве входного параметра можно ему передавать объект JavaBean с библиотекой регэкспов и, собственно, слово, на которое мы заменяем весь мат. JavaBean (не Enterprise, конечно) - в свою очередь может быть интерфейсом к файлу, к БД или вообще наполняться программой извне через setter`ы - это уже как usr`у будет удобней. Какие будут встречные предложения? Прежде всего - относительно того, на каких фазах мы пользуемся RegExp`ами... P.S. sergej.z вот только я не понял - что такое stammer?... Добавлено @ 17:40 Да, собственно, все его методы этого главного класса должны соответствовать фазам. :-) |
| Автор: sergejzr 22.1.2005, 17:53 |
| stammer оставляет от слова лишь его корень. обрезаются приставки и окончания. посмотрим действие на практике... RegExp можно применять в конце не стандартизированный текст. ИМХО в ручную лучше регулировать мелочи можно Добавлено @ 17:56 Надо еще функцию, которая возвращает процент мата в тексте. PS: Сейчас в голову пришло: Заменять мат можно на "Гав, гав" как у старика Хоттабыча |
| Автор: LSD 22.1.2005, 19:34 | ||||
Таким макаром мы исключим весь текс типа: nJIaksa.spb. На мой взгляд надо текст разбить на атомарные единицы: токены. А далее анализировать: если токен состоит из букв одного алфавита, то просто анализировать его, независимо от регистра. Если нет, то надо попробовать его транслитерировать (тут есть над чем поработать). Все возможные варианты транслитерации сохраняются, как возможные варианты толкования токена. А затем они анализируются по словарю. Так же надо анализировать возможные варианты когда сами токены не несут орицательной нагрузки, но вот их последовательность имеет негативный смысл:
|
| Автор: sergejzr 22.1.2005, 19:45 | ||||
По этому в нижний регистр переводится в самом конце. До этого фильтруются знако и буквосочетания. Mы кстати мысленно при чтении делаем так же LSD На практике не знаю, можно ли будет такой анализатор реализовать. Особенно
Я просто боюсь, что такое не реализуется, потому что всем надоест проект до того, как будут интересные результаты. Т.е идею вижу, реализацию концепта - нет. |
| Автор: Се ля ви 23.1.2005, 01:00 |
| Мне вот тут вдруг стало непонятно другое - ну перелопатили мы текст, всё вбили в нижний регистр, да ещё и пробелы убрали - отфильстровали мат - и что с этим месивом делать? Это ведь всё восстановить в нормальном виде ещё надо... |
| Автор: sergejzr 23.1.2005, 01:08 | ||
см. пункт 1
каждая буква в стандартизированном массиве соответстует индексу в настоящей мессаге. Его мы запоминаем. Это сделсть очень легко, если например вести параллельный массив. Добавлено @ 01:08 По индексам и находим нехорошие слова. |
| Автор: lovermann 23.1.2005, 04:19 |
| С посещаемостью этого форума вопрос о том, чтобы новую систему потестить не встанет |
| Автор: Domestic Cat 23.1.2005, 05:19 |
| 1. Парсим стринг по чарам. Берем 1 чар и сиздаем объект Pair содержащий char, int[] положения в исходной строке (если мы впоследствии переведем ya->я то нужно помнить две позиции а не одну) и булиновый флаг. а. Пробелы выбрасываем сразу (то есть даже Пару под них не создаем), т.к. можно ведь написать f u c k и потом он ни под один регексп не подойдет. б. Выбрасываем все "очевидные" знаки пунктуации: ? , . в. Записываем все подряд в массивлист. г. При этом переводя в нижний регистр. 2. Нужны есессно свои методы поиска, т.к. регеспы при всем желании на массиве объектов не заработают. 3. Теперь ищем неочевидную гадость со знаками / | \ ^ * типа б/|я. Заменяем на нужные буквы. Незаменяемые символы выбрасываем. 4. Переводим весь инглиш в русский как в транслите. 5. Переводим 1234567890@$%& <> - например п1д0р Незаменяемые символы выбрасываем. 6. Имеем рашн текст, по которому ищем все известные нам корни если нашли, заменяем в Парах флаг на ТРУЕ. 7. Теперь проходим по массиву и для тех Пар у которых ТРУЕ берем индекс и заменяем символ в стринге по этому индексу на *. |
| Автор: sergejzr 23.1.2005, 05:39 | ||
Ну вот теперь регэкспом по plain'y и с помощью key выцепляем интервал слова козел В нормализованном он 0-4, следовательно в оригинале: key[0][0] - key[4][1]; == 0-8 |
| Автор: Domestic Cat 23.1.2005, 05:43 |
| Ээээ .... че козлом ругаешься ? |
| Автор: sergejzr 23.1.2005, 05:49 |
| Domestic Cat Да ты что? |
| Автор: Domestic Cat 23.1.2005, 05:56 | ||
Дык регесп на char[] не працюе |
| Автор: sergejzr 23.1.2005, 05:59 | ||
Ну ё-маё!
Это же только схема |
| Автор: Domestic Cat 23.1.2005, 06:02 |
| Ну хорошо, вот ты его нормализовал, выкинул все и пр. Потом регекспом ищещь и заменяешь что не нужно. Как регесп скажет тебе какие конкретно буквы он заменил и что нужно исправлять в исходной строке? |
| Автор: sergejzr 23.1.2005, 06:03 |
| Я добавил в самый низ |
| Автор: Domestic Cat 23.1.2005, 06:04 | ||
Аа, торможу.
Да это понятно, я ж про регексп - там есть методы start, end. |
| Автор: sergejzr 23.1.2005, 06:14 |
| Лана |
| Автор: Domestic Cat 23.1.2005, 06:24 |
| Единственное что мне тут не нравится - нужно возиться с массивами. Придется 1. искать слово 2. брать его границы 3. смотреть в инт[][] 4. заменять Тогда как на Парах можно было бы, сделав метод поиска самим, избежать этого. |
| Автор: Domestic Cat 23.1.2005, 07:41 | ||
| Вот кое что сделал, пока только убирает слова из словаря + знаками пунктуации / вайтспейсом ее не обдуришь. Словари задаются в текстовых файлах с соотв. названиями и окончаниями, задается также язык (русский/английский). Пока фильтруются только слова и выбрасывается пунктуация, а также затираются повторяющиеся буквы если они входят в состав матерного слова; нужно добавить транслит и символы типа /|, 4, 1, ... Пример:
|
| Автор: LSD 23.1.2005, 12:39 | ||||||
Все, гребля не прошла
А вот bJIR пройдет
Надо ввести запрещенную последовательность токенов. |
| Автор: Domestic Cat 23.1.2005, 13:22 | ||||||
Ну так запишем слова типа "гребля" и "подстрахуй" в отдельный словарь и их трогать не будем.
Опять-таки, записываем в словарь j| = л ; правда с R не пройдет, но ведь все возможные истолкования в любом случае не уловишь, да и кому будет охота материться когда для этого нужно будет выдумывать малопонятные символы?
Я решил отбрасыванием вайтспейса. |
| Автор: LSD 23.1.2005, 13:44 | ||||||
Тогда начнет прокатывать "гре
Еще как охота будет, это же такой азартный спорт
Конечно, но надо дать возможность администратору самому добавлять новые извороты пользователей в фильтр. Я считаю что важнее разработать нормальную, хорошо расширяемую систему анализа и фильтрации текста, а не пытаться предусмотреть сейчас все варианты. И не надо зацикливаться на русском и английском, есть и другие языки, это тоже надо учесть. |
| Автор: Domestic Cat 23.1.2005, 14:01 | ||||||||||
Ну тут уже надо учить программу понимать смысл предложения, а иначе не получится. Ведь можно тогда ругаться : греБЛЯ!!!
Ну это уже будет ерунда, особенно если убрать основное.
В аттачменте словари задаются в отдельных текстовых файлах - добавляй что хочешь.
Тут проблем нет, за секунду можно добавить. Единственное что требуется - словари.
А предложенный вариант - это не система фильтрации текста? 1. Переводим все в нижний регистр. 2. Выбрасываем "безопасные" символы типа . , и пробелы, из которых мат не составишь 3. Повторяющиеся буквы убираем (точнее, они сохраняются как children в предшествующей Pair, чтоб убрать слова типа CcccRRRAAAPP) 4 В зависимости от языка трансформируем часто применяемые обозначения/транслит в буквы 5. Заменяем слова из словаря на **** Без словарей тут не обойтись. Кроме того, все возможные варианты все равно не отловим. С каждой новой проверкой добавляются тормоза, потому нужно остановиться на отлавливании основного. |
| Автор: sergejzr 23.1.2005, 14:08 |
| Тормоза - финя. Проверок можно разных сделать и несколько раз по тексту пробежаться. Почему бы непрогить несколько вариантов параллельно? LSD, Где твой алгоритм? |
| Автор: LSD 23.1.2005, 14:32 |
| Вот мои приблизительные наметки по поводу данного фильтра. Критика приветствуется |
| Автор: Domestic Cat 23.1.2005, 17:52 |
| Как я понял суть в том чтобы была возможность подключать произвольные фильтры/токенайзеры. 1. Зачем нужны токенайзеры, я не понял. 2. Подключать фильтр - идея хорошая, если бы речь шла о фильтрации различных типов слов; например одинт фильтр - для мата, другой - для слов с сексуальной окраской, и т п. Опыт показывает что в основном нужен антиматовый фильтр. Потому фильтры-плагины идея конечно гут, но зачем она тут не представляю. Действие фильтров не обязательно складывается. Это если б один фильтр отдсекал слова "дурак" и "козел", а второй слово - "гад", то да. Но чтобы отловить мат нужно сначала как-то преобразовать исходный текст. Суть состоит в наиболлее оптимальном выборе алгоритма. Если же алгоритм разный то после действия одного фильтра действие другого практически равно 0. ------------ Единственный кто стянул мой код - ну как, есть замечания? |
| Автор: sergejzr 23.1.2005, 17:59 | ||||
Ага, не компилируется Но это мои проблемы. Сейчас некогда решать...
Это будет видно. тем более, что я предлагаю использовать не последовательно, а параллельно. На вуходе массивы - keys как я описывал. Просто не один, а несколько. Потом решаем (чего нить придумаем), какие интервалы фильтровать. PS: Дело в том что наши концепты (мой, твой и LSD) практически друг другу не мешают, но дополняют |
| Автор: Domestic Cat 23.1.2005, 18:03 | ||
Т.к. нужна 1.5. Переделать в 1.4? |
| Автор: LSD 23.1.2005, 18:44 | ||||||||
Если нет веских причин использовать 1.5, то конечно лучше переделать. Ниже 1.4 имхо не стоит делать, т.к. там регекспов нет.
Пока попробуем довести до ума каждый свой вариант (у меня даже не все классы пока есть) а там решим.
В принципе на данный момент достаточно одного Tokeniser-а, просто правила разбики на токены могут быть разными, вот я и ввел его на всякий случай, в принципе его можно выкинуть.
Мне хотелеось реализовать более универсальную идею фильтрации, вот я и сделал это через плагины. |
| Автор: sergejzr 23.1.2005, 19:02 | ||||
Да, будет лучше.
ИМХО лучше умно в кучу собрать. |
| Автор: LSD 23.1.2005, 20:26 | ||
Есть идеи как? Я пока не вижу как, хотя код Domestic Cat пока не смотрел. |
| Автор: sergejzr 23.1.2005, 21:06 |
| Это должен рулевой решать. Там надо всё сравнивать искать пути. Короче работа |
| Автор: Domestic Cat 24.1.2005, 02:31 |
| sergej.z, а там у тебя в подписи не мат ? Пока ишшо идея - нуна предосмотреть вариант козел. |
| Автор: sergejzr 24.1.2005, 02:47 | ||
А что с ним? Такое препроцессор должен убивать. (В смысле тэги хавать) |
| Автор: Domestic Cat 24.1.2005, 02:49 |
| Дык если препроцессор не написать, кто есть их будет? |
| Автор: sergejzr 24.1.2005, 03:11 |
| Вот смотри, как на этой страничке текст отображается, так после препроцессора и должно быть. Текст в таком виде всё равно в каком то месте можно вычитать. |
| Автор: Domestic Cat 24.1.2005, 03:18 |
| Хм. а инфа о стилях отдельных слов/параграфов где хранится? |
| Автор: Domestic Cat 24.1.2005, 08:40 |
| Вообще хорошо было бы определиться что писать и как писать. Нужна ли поддержка других языков, может на уровне плагинов, насколько серьезно нужно бороться с матом. Скажем мой код + перевод в транслит и дописание трансляции особых символов убьет мат на 99% при наличии словарей и незнании постящего. Если же он знает о фиче, то тут убрать мат невозможно. Все варианты перебрать не сможем. Можно отдельные буквы цвтом выделять, формировать большие буквы из символов, и пр. |
| Автор: Zandr 24.1.2005, 12:49 |
| Почитайте комменты к http://algolist.manual.ru/games/fiveinarow.php |
| Автор: Domestic Cat 24.1.2005, 13:23 | ||
|
| Автор: Zandr 24.1.2005, 14:09 |
| Если что - это не я |
| Автор: Се ля ви 24.1.2005, 16:09 | ||||
Ещё ">" и "<" - что бы отсечь, например, слово ">|<опа"
Я вот тут подумал - ведь эти знаки можно использовать для создания больших букв в сочетании с концами строк, например: , И И вообще, с псевдо графикой можно огромедные буквы писать на десятки строк - их вообще не отловишь простыми алгоритмами... Придётся, наверное, на них действительно забить. По крайней мере пока - нужно просто определять соответствие позиций в разных строках и если символы псевдографики находятся над-под друг-другом, обрезать их сразу, иначе можно будет писать: \|/ /|\ опа, и т.д. - поэтому надо в парах отслеживать не только их непосредственный номер, но и номера в строке... Хотя я посовещался с бывшим админом - пока матершинники не такие догадливые, такого ещё не было, поэтому это пока вобщем-то ждёт... |
| Автор: sergejzr 24.1.2005, 16:31 |
| Сперва следует реализовать пусть маленькую, но 100% рабочую часть. A потом уже расширять. |
| Автор: LSD 3.2.2005, 21:34 |
| У меня в процессе реализации возник вопрос: есть необходимость транслитерирования, но для буквы может быть несколько вариантов транслитерации. А если таких букв в слове несколько, то общее колиество вариантов транслитерации слова будет велико. Есть идеи как с этим бороться? |
| Автор: sergejzr 3.2.2005, 23:47 | ||
стандартизировать текст |
| Автор: LSD 4.2.2005, 19:10 | ||
Поясни. P.S. Где можно надыбать азбуку транслита? |
| Автор: sergejzr 4.2.2005, 19:17 | ||||
Посмотри мой алгоритм в самом начале
Их куча, все разные. Добавлено @ 19:23 Вот наша: http://forum.vingrad.ru/index.php?act=ST&f=27&t=29188&hl=%C0%E7%E1%F3%EA&view=findpost&p=221352 |
| Автор: LSD 4.2.2005, 19:25 | ||||
Ты об этом? |
| Автор: sergejzr 4.2.2005, 19:30 |
| Ну да |
| Автор: LSD 4.2.2005, 19:30 | ||
Danke sehr. |
| Автор: sergejzr 4.2.2005, 19:51 |
| Bitte, bitte |
| Автор: LSD 12.2.2005, 18:20 |
| Вот очередная версия, эта вроде работает Принцип следующий:
|
| Автор: sergejzr 12.2.2005, 19:22 |
| Сории, но я когда запускаю, весь ДОС - экран какими то значками заполняется.... |
| Автор: Domestic Cat 12.2.2005, 20:53 |
| Аналогично. Плюс я не пойму зачем рейтинг нужен |
| Автор: LSD 12.2.2005, 22:13 | ||||
Это потому, что при компиляции надо указать javac -encoding UTF-8. т.к. исходники именно в этой кодировке. Я выложил новую версию, ее можно просто запускать, она уже скомпилена. Файлы читаются и пишутся в родной кодировке ОС. В файле словаря слова нада разделять пробелами, табуляцией или переводом строки. На данный момент подерживаются следующие преобразования: транслитерация (по винградовскому словарю), замена одинаково пишущихся английских символов на русские, и неких сочетаний спецсимвлов /| = Л, удаление повторяющися букв блииин = блин, разбиение слова на отдельные слова по типу символов (строчные, заглавные, цифры и т.д.) МногоеМОЖНОсказатьОднимСловом = многое можно сказать одним словом. Пока это все кодом, но если будет развиваться дальше, то надо будет вынести в файлы настроек или БД.
Надо же как-то отделять плохие слова от хороших |
| Автор: LSD 16.2.2005, 23:42 |
| Я произвел некоторые доработки, теперь преобразование замены унифицированно и задается в виде XML, словарь теперь тоже задается в XML, добавлено преобразование позволяющее проводить суперпозицию других преобразований. Теперь осталось напролнить словарь и потестировать на реальных примерах. Мне нужна помощь по наполнению словаря, т.к. для каждого слова нужны или все словоформы (предпочтительно) или выделить общую часть. |
| Автор: helloalleo 31.7.2016, 09:07 |
| Есть ли обновления этой темы? |
| Автор: tigraff 31.7.2016, 12:40 |
| посмотрите http://snowball.tartarus.org/ |