Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > разбор текста на слова


Автор: mrgloom 3.5.2012, 12:40
захотел написать простенькую программу, которая берет все текстовые файлы из папки и выводит слова по частоте использования, допустим тоже в файл+ еще можно задавать файл со словами которые необходимо исключить(предлоги и т.д.)
проблема в том, что дело осложняется, если мы хотим различать окончания\падежи и т.д., т.е. некий уже более сложный разбор.
возможно такая программа уже существует на каком нибудь скриптовом языке?

Автор: Akina 3.5.2012, 12:42
Морфологический анализ вряд ли кому пришло в голову реализовывать на скриптовых языках... к тому же без анализа всего предложения нельзя дазе определить часть речи, не говоря уж о базовой словоформе...

Автор: mrgloom 3.5.2012, 16:34
Цитата

берет все текстовые файлы из папки и выводит слова по частоте использования, допустим тоже в файл+ еще можно задавать файл со словами которые необходимо исключить(предлоги и т.д.)

а если в такой простой постановке?

Автор: Akina 3.5.2012, 17:01
А тогда в чём проблема? Любая СУБД (хоть Аксессовская БД через Jet). Читаем файлы, рубим на слова, заливаем в БД, подсчитывая количество. Отдельно заливаем таблицу стоп-слов. После чего одним запросом получаем нужные данные.

Автор: Silent 4.5.2012, 13:50
Берем http://ru.wikipedia.org/wiki/MapReduce, получаем статистику, а дальше делаем все что угодно - фильтруем, сортируем, подключаем морфологическую обработку и т.п.

Автор: shara 16.5.2012, 12:50
mrgloom, когда-то ооооочень давно сталкивался именно с этой проблемой. решил ее банально - не учитывать последние 1-3 буквы слова (в зависимости от его длинны). т.е. отбросить окончание 
конечно не торт, но 80% попаданий имелося. 

т.е. 
стол[]
стол[а]
стол[у]

зелен[ый]
зелен[ее]
зеленень[кий]  <- фейл 


а парить себе голову синмтиксическим\морфологическим анализом слов\предложений -   smile   smile  увольте, программист != лингвист 

З.Ы. 
дешево и сердито

З.З.Ы.
для сбора статистики сойдеть  smile 

Автор: Polesinskij 31.10.2013, 20:57
Модератор: Сообщение скрыто.

Автор: baldina 1.11.2013, 09:55
Цитата(Akina @  3.5.2012,  12:42 Найти цитируемый пост)
без анализа всего предложения нельзя дазе определить часть речи, не говоря уж о базовой словоформе.

http://morpher.ru/ об этом не знает и правильно склоняет по падежам отдельные словосочетания и просто слова. морфологический анализ ему удается даже для не существующих слов, например "мамалыга". естественно, о глаголах речи не идет.

Автор: mrgloom 8.11.2013, 10:52
а кто еще может что сказать о определение похожести текстов?
вроде это называется Semantic similarity http://en.wikipedia.org/wiki/Semantic_similarity
есть например http://radimrehurek.com/gensim/

но на первый взгляд там смотрится как раз вхождение отдельных слов, т.е. опять упираемся в ту же проблему.

Автор: Akina 8.11.2013, 14:02
baldina
Косил косой косой Косой косой косой траву.

Боюсь, твой морфер на такой фразе повесится... это в качестве демонстрации...

Автор: baldina 8.11.2013, 14:11
Цитата(baldina @  1.11.2013,  09:55 Найти цитируемый пост)
 о глаголах речи не идет

а "косая коса" отлично склоняется

Добавлено через 7 минут и 15 секунд
у ТС правда задача наоборот, не склонять, а выделять корни
можно посмотреть в сторону http://aot.ru/cgi-bin/search и http://snowball.tartarus.org/algorithms/russian/stemmer.html

Автор: mrgloom 8.11.2013, 15:29
Задача в начале была такая, что допустим есть писатель, у него есть тексты(определенной тематики и стилистики) хотелось выделить топ-100  употребляемых слов по разным писателям.

Потом еще захотелось узнать степень похожести одного автора или текста на другой.
Вроде есть метод основанный на том, что мы берем всю кучу текста и выделяем все возможные слова, получается очень длинный вектор слов, потом для каждого рассказа или например странички, находим вхождения этих слов,т.е. по сути у нас потом получается разреженная матрица из 0 и 1(или в ячейке частота вхождения слова). вроде бы это и есть http://en.wikipedia.org/wiki/Latent_semantic_analysis


я так и не понял для выделения слов с разными окончаниями которые разные у разных родов и зависят от кол-ва(например малиновая-малиновый-малиновые) и падежей(например фонарь-фонарём-фонарю) в одно слово нужен какой то словарь или всё же есть какой то алгоритм?

Автор: Akina 8.11.2013, 15:46
Я не вижу особой разницы между описываемым инструментом и "детекторами плагиата". Да, немного иной подход, чутка более статистический, а суть-то та же.

Автор: mrgloom 8.11.2013, 17:08
Цитата

Я не вижу особой разницы между описываемым инструментом и "детекторами плагиата". Да, немного иной подход, чутка более статистический, а суть-то та же. 

это вы к чему? как работает "детекторами плагиата"?


кстати то что мне нужно похоже называется лемматизация
http://ru.wikipedia.org/wiki/%D0%9B%D0%B5%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F

http://www.solarix.ru/for_developers/api/lemmatization.shtml
кошки бегают за толстыми мышками -> кошка бегать за толстый мышка, т.е. в такой форме уже можно пихать в частотный анализатор слов.


вот еще 
http://habrahabr.ru/post/49421/
http://www.aot.ru/onlinedemo.html

Автор: Pavia 8.11.2013, 17:34
mrgloom, 
Используй FreeLing. Думаю если скрестить с отечественными разработками неплохая программа получиться.
А поповоду частотного анализа огорчу порой авторы используют синонимы и за весь текст слова практически не повторяются.

Автор: Akina 8.11.2013, 22:37
mrgloom, а Вы не пробовали спросить у гугла, что такое "детектор плагиата", не?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)