![]() |
|
![]() ![]() ![]() |
|
T0ohtik |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 9.2.2008 Репутация: нет Всего: 1 |
Задумал написать не большую программу, которая будет проверять вводимое слово на наличие только грамматических ошибок. Предполагается брать уже готовую базу слов, к примеру выдрать из firefox. Для начала интересует какой именно словарь использовать и откуда его скачать
![]() |
|||
|
||||
dereyly |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 217 Регистрация: 16.6.2006 Репутация: 1 Всего: 4 |
предлагаю проверку так же взять из firefox
|
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Ну, словарь это не алгоритм
![]() Можно попробовать описать алгоритм разбора слова на составляющие(приставка, корень, суффикс, окончание), и вот уже по менее громоздким словарям этих самых частей судить об ошибках в слове ![]() -------------------- Всем добра ![]() |
|||
|
||||
T0ohtik |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 9.2.2008 Репутация: нет Всего: 1 |
Ну я не собираюсь изобретать велосипед, я спрашиваю, кто, где чего видел, включая алгоритмы.
|
|||
|
||||
aleksh |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 609 Регистрация: 8.7.2008 Репутация: нет Всего: 13 |
где-то читал что ms word проверяет орфографию посредством сравнения хеммингового расстояния (это теория кодирования), то бишь имеряется это расстояние для вводимого слова и сравнивается с расстояними слов из словаря, если оно достаточно/приемлемо мало -- предлагает как правильный вариант, если словарь большой то проверка будет на уровне
вопрос в другом: что делать с морфологией русского. тут лучше брать не словарь, а тезариус, но если тексты для ввода простые, то можно и без него |
|||
|
||||
T0ohtik |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 9.2.2008 Репутация: нет Всего: 1 |
Да у меня в принципе тексты и не большие и не сложные. Я хочу попробовать написать плагин к аське, для проверки орфографии.
|
|||
|
||||
aleksh |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 609 Регистрация: 8.7.2008 Репутация: нет Всего: 13 |
если попробовать, то тогда, пожалуй, можно обойтись словарем, просто игнорировать окончания слов (а то склонения всякие и пр.)
а рассматривался вариант использования word-а? точнее, загрузить и обращаться посредством ole? сам такого не делал, но по идее, это вполне возможно Это сообщение отредактировал(а) aleksh - 9.7.2008, 15:53 |
|||
|
||||
T0ohtik |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 9.2.2008 Репутация: нет Всего: 1 |
aleksh, да это вполне возможно, но тогда в память будет загружаться ворд, прикольная перспектива, когда для проверки орфографии, еще надо будет за собой загружать целого монстра
![]() |
|||
|
||||
aleksh |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 609 Регистрация: 8.7.2008 Репутация: нет Всего: 13 |
согласен, с вордом это я перегнул, но если поискать, думаю можно будет найти способ обращатся только к проверке орфографии из ms office
но если задача просто вводимые слова минемально проверять на опечатки, то можно так: при наборе слова отдельным потоком пустить сверку со словарем (измерять хемминговое растояние полезно для составления списка вариантов исправления) и при появлении ошибки возможные варианты предлагать после нажатия пробела (и потери активности окна), прописать возможность добавления новых слов в словарь, игнорировать последние пару символов (зачем раздувать словарь вариациями склонения, иначе надо задуматься над структурой словаря) алгоритм проверки того самого расстояния, так понимаю, расписывать не надо |
|||
|
||||
DRUID3 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 463 Регистрация: 20.6.2005 Где: Kyyiv Репутация: 2 Всего: 9 |
А разве с словаре firefox лежат не все возможные написания слов и они не тупо перебираются на соответствие?
хм... может пунктуацию - т.к. там нельзя ожидать абсолютную четкость и предопределенность, а написание слов можно проверять простым перебором. У меня уже давно нет ничего майкрософтовского кроме "выньXP" дома для цацэк, но насколько я помню ворд, если там написать ласкательное производное от слова - он выдает ошибку, т.е. он тупо перебирает - а раз слова в словаре заведомо упорядоченные по алфавиту то затраты на перебор минимальные из возможных. Не вижу сложности... Думаю и Firefox(кстати, загляните в код!) и PSPad, и Linuxовые аськи делают это точно также - перебором... -------------------- Every time if you use Linux, you are joined to the communism... практика - критерий истины ... отделенной от нас пропастью субъективного восприятия... |
|||
|
||||
T0ohtik |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 9.2.2008 Репутация: нет Всего: 1 |
DRUID3, вот вот и я так думаю, по этому дело завязывается на базе слов, а не на алгоритме, т.к. алгоритмов множество!
|
|||
|
||||
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: нет Всего: 8 |
вопрос.. каким образом работает поиск в этом форуме? напишите слово "орфография", например..
Добавлено @ 21:52
да? хм.. черкани парочку ![]() ![]() Это сообщение отредактировал(а) polosatij - 11.7.2008, 21:53 |
|||
|
||||
dereyly |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 217 Регистрация: 16.6.2006 Репутация: 1 Всего: 4 |
У мну была идея как посторить такую систему... смысл заключается в построении некой хеш ф-ии которая дает близкие значения для слова и искаженного слова
Такою фигню наверное можно сделать с помощью LVQ загрузить словарь и выполнять в словаре перестановки и назначать искаженным словам тот же кластер Попутно надо решить как кодировать буквы: линейно от 0 до 33 или, к примеру, а и о закодировать близкими значениями Нужно ли использовать словосочетания... Еще можно почитать, что умные люди поэтому поводу пишут... http://itman.narod.ru/ PS: тема мне интересна, так что если мне объяснить как вытащить из лисы слова, то я могу провести над ними дикие опыты и отписаться об этом на форуме... rtfm на конкретную страницу мурзилки тож сгодится Это сообщение отредактировал(а) dereyly - 13.7.2008, 15:19 |
|||
|
||||
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: нет Всего: 8 |
||||
|
||||
DRUID3 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 463 Регистрация: 20.6.2005 Где: Kyyiv Репутация: 2 Всего: 9 |
polosatij,
??? а есть трудности ??? ![]() ![]() -------------------- Every time if you use Linux, you are joined to the communism... практика - критерий истины ... отделенной от нас пропастью субъективного восприятия... |
|||
|
||||
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: нет Всего: 8 |
есть и ещё какие.. а если нет словаря? скажем, это имена городов.. есть только имена городов, но речь тут идёт о "нечётком поиске"..
и опять-таки словаря нет.. и падежей тоже считайте, что нет.. мне нужна такая штука на 15 языков.. это сколько надо информации перелопатить, пока напишешь правила, как вы говорите.. ![]() |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 4 Всего: 360 |
||||
|
||||
DRUID3 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 463 Регистрация: 20.6.2005 Где: Kyyiv Репутация: 2 Всего: 9 |
2 polosatij Ваша критика несостоятельна, так как Вы сами придумываете трудности и сами же заходите в тупик их решения. Понабирайте слова в Firefox, openoffise, word и посмотрите сами
бред, бредом погоняет - еще раз повторюсь если слова нет в словаре оно будет ошибочным(красненьким подчеркнется). Вы вообще в дружбе с действительностью? ![]() а Вы с производителями телевизоров часто спорите об истинном, на Ваш взгляд, их устройстве??? кажется не редко ![]() -------------------- Every time if you use Linux, you are joined to the communism... практика - критерий истины ... отделенной от нас пропастью субъективного восприятия... |
|||
|
||||
T0ohtik |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 9.2.2008 Репутация: нет Всего: 1 |
База слов к словарю MySpell. В базе примерно 150000 слов + окончания, в конечном итоге 1,2 млн словоформ. Точного времени поиска слова, к сожалению, пока не замерил, но старт программы, считывание 150000 слов из файла, поиск захардкоженого слова и отображения на экран, занимает около 3 сек. Так что ничего сложного не вижу.... Добавлено через 7 минут и 8 секунд
До aspell и ispell пока не добрался, но MySpell что то мне не сильно понравился ![]() |
||||
|
|||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 4 Всего: 360 |
Ещё есть Google API http://www.dotnetjunkies.ddj.com/Article/C...F3C09CD94B.dcik
|
|||
|
||||
polosatij |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: нет Всего: 8 |
интересно, зачем они мне вообще нужны.. речь идёт об опечатках..
найти, нет ли слова в словаре - как два пальза об асфальт и подчеркнуть красненьким.. а вот найти правильное слово, про это вы что-то забыли..
у меня речь идёт о поиске городов.. человек может туда хоть "луну" написать.. речь идёт об опечатках в городах.. у меня к тебе один вопрос.. вот, ты такой крутой и не видишь юричины беспокоиться.. тогда напиши мне логику решения следующего: юзер написал: Xberlin, berlXin тебе в базе данных нужно найти слово Berlin.. раскажи мне пожалуйста, как именно ты собираешься БЫСТРО найти слово Berlin, мне просто интересно.. нет.. действительно интересно.. может это я просто тут один такой ![]()
а синонимы там есть или слова близкие по значению? например, я набираю: "дом", а он мне выдаёт "вилла"? ![]() надо будет посмотреть ![]() нада MySpell тоже посмотреть будет ![]() |
||||||
|
|||||||
DRUID3 |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 463 Регистрация: 20.6.2005 Где: Kyyiv Репутация: 2 Всего: 9 |
Та Вы што... ![]()
??? да, а должен был помнить? Покажите где ранее шла об этом речь??? 2polosatij Вы тупо уперлись рогами и не хотите сознавать, что не правы. ![]() Если же Вы имели ввиду вывод списка слов близких по написанию или исправление одиночной ошибки(две оибки в слове и ворд бессилен, помните?), то это сделать можно уймой простых и быстрых способов - если слово не обнаружено в словаре, то добавляем его в словарь (который хранится в виде дерева и такое добавление тоже не занимает особо времени) соответсвенно любое слово в дереве отличное на одну букву будет выводиться в списке близких в написании слов. В таком алгоритме опять же не нужно перебирать весь словарь. И т.д. и т.п. напридумывать их можно пучок, да и из продуктов open source их можно навытягивать готовых... Модератор: немного подправил, просьба быть немного посдержаннее Это сообщение отредактировал(а) maxim1000 - 14.7.2008, 10:43 -------------------- Every time if you use Linux, you are joined to the communism... практика - критерий истины ... отделенной от нас пропастью субъективного восприятия... |
||||||
|
|||||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
Модератор:
давайте, немного потише ![]() эмоции, тем более подобные, редко помогают решить задачу если в условии что-то непонятно, или создалось впечатление, что оно неправильно сформулировано, можно просто попросить уточнить условие -------------------- qqq |
|||
|
||||
polosatij |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: нет Всего: 8 |
уж извините, чот зашёл дальше, чем ваше представление ![]() ![]() очень просто ![]() ![]() если ты наберёшь в гоогле какое-нибудь этакое слово и опечатаешься, он предложит тебе варианты ![]() ![]() ![]()
ты забыл описать алгоритм нахождения слова Berlin ![]() Добавлено через 2 минуты и 22 секунды это точно.. мы собираемся здесь, чтоб найти решение задачи, а стресса и на работе хватает ![]() ![]() |
||||||
|
|||||||
DRUID3 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 463 Регистрация: 20.6.2005 Где: Kyyiv Репутация: 2 Всего: 9 |
2maxim1000
![]() polosatij Я не даром привел цитаты "зачинщика" этой темы и вариантов предложенных ему кои он не отвергал - значит изначально речь шла о подчеркивании(выделении) неправильно написанных слов на что я и ориентировался... Причем Вы, товарищ polosatij, были страшно возмущены поиском слова в большом словаре. На что я имел неосторожность возразить, мол ключевое слово словарь а значит заведомо отсортированный(упорядоченный), и следовательно храня его определенным образом (древовидная структура) мы избежим пересмотра всего списка при поиске определенного слова. Подход сей широко известен и универсален!!! Находит применение в ЦОС, криптографии, экспертных системах и т.д. И, собственно, указанная Вами трудность - не есть трудность на самом деле... Вы же в ответ задание усложнили. Ну хорошо, даже если и так и требуется выводить слова-ассоциации то все-равно нет необходимости в переборе всего списка даже однократно. И все потому же - т.к. проход дерева по одной ветви в глубь пусть(ну пусть даже несколько таких проходов для отображения всех слов ассоциаций) не сравнимо менее ресутрсоемкая задача чем перебор всех слов в словаре. Для точности надо заметить, что это справедливо для языковых словарей, но математически можно выдумать такие словари где это будет не так ... Вы что, хотите чтобы я Вам написал исходик??? Ведь идею я, кажеться, вполне ясно изложил... -------------------- Every time if you use Linux, you are joined to the communism... практика - критерий истины ... отделенной от нас пропастью субъективного восприятия... |
|||
|
||||
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: нет Всего: 8 |
![]() ![]() мне кажется такой способ неприемлимым.. объясняю почему, если юзер набирает Xberlin, то ты автоматически находишься уже не в той ветви, т.к. первая буква уже не та.. нет, мне достаточно "простого" алгоритма ![]() Добавлено через 8 минут и 13 секунд DRUID3, лана.. мы просто не поняли друг-друга.. живи ![]() шутю ![]() |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
нет, конечно же, никаких матов не было, но уж слишком близко к переходу на личности просто, когда дискуссия горячая лучше гасить даже маленькие искорки ![]() -------------------- qqq |
|||
|
||||
Rusdenis |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 30.5.2008 Репутация: нет Всего: нет |
Парни, не парьтесь!
![]() Уже есть множество платных и бесплатных реализаций так называемых Spell Checker`ов. Среди бесплатных фигурируют aspell, ispell, myspell, hunspell. Последний является потомком проектов ispell и myspell, использует соответсвенно их же словари, которые можно взять с офф-сайта OpenOffice.org. hunspell, кстати, сейчас и используется в самом OpenOffice.org, как более продвинутая реализация. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |