| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Алгоритм выявления псевдокорня слова |
| Автор: Analitik 7.8.2009, 13:13 |
| Задача: Выделить неизменную часть слова(основу, псевдокорень) имея список всех воможных словоформ Пример всех словоформ для слова "окно": ОКНО ОКНА ОКОН ОКНОМ ОКНАМИ ОКНУ ОКНАМ ОКНЕ ОКНАХ ОКОННЫЙ ОКОННАЯ ОКОННОЕ ОКОННЫЕ ОКОННОГО ОКОННОЙ ОКОННЫХ ОКОННЫМ ОКОННОЮ ОКОННЫМИ ОКОННУЮ ОКОННОМУ ОКОННОМ ОКОНЕН ОКОННА ОКОННО ОКОННЫ Из списка видно, что для слова "окно" возможны 2 неизменные основы слова: "ОКН" и "ОКОН" Как программно КОРРЕКТНО (с учетом всех возможных правил русского языка) выделять основу(ы) имея список словоформ? Думаю алгоритм уже существует, если кому известен, подскажите где почитать... Конечно можно было бы перебором выявить набор одинаковых символов (части слова) для всего списка, НО... как быть если основ может быть 2 и более? |
| Автор: Lipetsk 7.8.2009, 14:48 |
| наверно, нужно научиться отбрасывать окончания, суффиксы, приставки, чтобы оставался один корень |
| Автор: Analitik 7.8.2009, 15:08 | ||
это похоже на стемминг, данный алгоритм не интересует из-за погрешностей для более точного результата использую морфологический словарь, получаю ВСЕ возможные словоформы, а вот как для всех полученных словоформ выделить неизменную часть слова, псевдокорень... или псевдокорнИ ? |
| Автор: dereyly 8.8.2009, 16:13 |
| Как ни странно считается эффективным использования словаря словоформ. Для словоформ не обнаруженных в словаре используется http://company.yandex.ru/articles/article1.xml основанный на поиске корневых основ в словоформе разбитой с помощью стеминга. |
| Автор: Analitik 9.8.2009, 18:45 | ||
Это мне известно, как написал выше "... использую морфологический словарь ..." Как быть со списком полученных из словаря словоформ, как из них выделить псевдокорни? |
| Автор: Dims 10.8.2009, 14:24 |
| Я думаю, без словаря окончаний невозможно понять, где неизменяемая часть. Добавлено через 3 минуты и 2 секунды Кстати говоря, по-моему, Вы свалили в кучу несколько лексем -- "окн[о]" и "окон[ный]" -- это разные лексемы. |
| Автор: dereyly 10.8.2009, 16:05 | ||||
Тоже из словаря... Простое узнавание словоформы никакой пользы не несет, значит словарь должен иметь структуру где каждая словоформа имеет ссылку на корневую основу и на инфинитив слова (к примеру "окно"). Если я неошибаюсь такой словарь генерируется с помощью словарей с правилами словообразования. У Abby вроде был такой словарик, но я не помню продают ли они еще на него лицензию или нет. |
| Автор: Analitik 12.8.2009, 21:11 | ||
Дело в том что мне нужны "ПСЕВДОкорни" слов, а не корни Поясню зачем: - есть ПО выполняющее функции "поисковика" (поиск в интернете на определенных сайтах) - есть интерфейс добавления поисковых запросов(слов) - поисковые слова сохраняются в базе... Вобщем я хочу в интерфейс добавления поисковых слов в ПО подключить "оптимизатор" этих поисковых слов... этот самый оптимизатор как раз и должен из любого введенного пользователем поискового слова выделить его "псевдокорень" и использовать в дальнейшем в поиске "псевдокорень" в этом случае должен состоять из части поискового слова которая встречается во всех его словоформах таким образом, как написано в первом посте, если например пользователь ПО захочет найти информацию на тему "ОКНО", поиск нужно будет произвести по запросам "ОКОН" и "ОКН", т.к именно эти "псевдокорни" охватывают все возможные формы слова "ОКНО" |
| Автор: gcc 12.8.2009, 21:37 |
| Analitik, на каком языке? |
| Автор: Analitik 13.8.2009, 07:29 |
| gcc, на делфи. А что за групировка? |
| Автор: gcc 13.8.2009, 20:58 |
| посмотри это не оно? http://search.cpan.org/~creamyg/KinoSearch-0.165/lib/KinoSearch/Analysis/Stemmer.pm http://search.cpan.org/~creamyg/Lingua-Stem-Snowball-0.952/lib/Lingua/Stem/Snowball.pm |