Как мне реализовать стемминг?

Artproma

Client
Регистрация
01.07.2014
Сообщения
63
Благодарностей
3
Баллы
8
Добрый вечер.
У меня появилась необходимость подсчета слов в тексте с учетом словоформ.
Т.е. есть текст в котором встречаются слова, например: столешница, столешницы, столешниц. По идее это одно слово но в разных падежах.
Так вот мне нужно посчитать не сколько раз они встречаются в своей словоформе, а сколько раз встречается само слово, не зависимо от окончаний, например в именительном падеже.

По идее есть прога от яндекса mystem и есть свободный код pymorphy, но как их прикрутить к зенке?
 

evgen_po

Client
Регистрация
27.08.2013
Сообщения
848
Благодарностей
528
Баллы
93
Так это же проще, чем считать слова с учетом падежей и окончаний.
Берете слово которое нужно посчитать -> Обработка текста -> Regex.
Такая вот регулярка \bстолешница\b будет искать только точное совпадение с учетом границ слова. "столешница" меняете на свою переменную.
Совпадения Все -> В список. Потом получаем количество строк в списке - это число и будет количеством совпадений. Запоминаете его куда-то, записываете.
Потом берете следующее слово (где Вы их там берете) и так далее в цикле пока не закончатся слова, которые нужно посчитать на точные совпадения.
 

Artproma

Client
Регистрация
01.07.2014
Сообщения
63
Благодарностей
3
Баллы
8
Вы меня не совсем правильно поняли.
Мне нужно посчитать сколько раз упоминается в тексте слово "столешница" в разных падежах, а не сколько раз в каждом падеже.
+ нужно учесть, что в слове столешница основной корень "стол". Так вот слово стол не должен считаться со словом столешница (ибо они морфологически разные слова) и наоборот.
 
  • Спасибо
Реакции: LightWood

Artproma

Client
Регистрация
01.07.2014
Сообщения
63
Благодарностей
3
Баллы
8
Вы меня не совсем правильно поняли.
Мне нужно посчитать сколько раз упоминается в тексте слово "столешница" в разных падежах, а не сколько раз в каждом падеже.
+ нужно учесть, что в слове столешница основной корень "стол". Так вот слово стол не должен считаться со словом столешница (ибо они морфологически разные слова) и наоборот.
тут вроде понятно описано http://wiki.rookee.ru/Stemming/
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
891
Баллы
113
если там не очень много я вам могу на pymorphy сделать)
А так самый простой способ - скрипт на питоне выщывать через командную строку передавая в параметрах адрес к файлу для анализа ну и потом читать выход файла после обработки питоном
 

Artproma

Client
Регистрация
01.07.2014
Сообщения
63
Благодарностей
3
Баллы
8
pymorphy вполне хватит. Многие сервисы на нем работают и вполне успешно.
 

Artproma

Client
Регистрация
01.07.2014
Сообщения
63
Благодарностей
3
Баллы
8
если там не очень много я вам могу на pymorphy сделать)
А так самый простой способ - скрипт на питоне выщывать через командную строку передавая в параметрах адрес к файлу для анализа ну и потом читать выход файла после обработки питоном
Нашел тему с Вашим скриптом. http://zennolab.com/discussion/threads/algoritm-opredelenija-tematiki-stati.17323/#post-109241
Как его запустить?
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
891
Баллы
113
установить питон, и запускать в какой либо оболочке для питона, я вот больше эту люблю
https://www.jetbrains.com/pycharm/download/

ну и если вы решили пуститься в дебри корректировок кода не помешает немножко познакомиться с питоном самостоятельно)
 
  • Спасибо
Реакции: Artproma

Artproma

Client
Регистрация
01.07.2014
Сообщения
63
Благодарностей
3
Баллы
8
Нда. Прям опускаются руки. Я в этом не силен.
Я только учусь и пока не знаю как заставить работать зенку с внешними прогами.
 

Artproma

Client
Регистрация
01.07.2014
Сообщения
63
Благодарностей
3
Баллы
8
pymorphy вполне хватит. Многие сервисы на нем работают и вполне успешно.
Я еще и невнимательный перепутал pymorphy с phpmorphy
Судя по всему можно сделать и на pymorphy, но вот как?!...
 
Последнее редактирование:

Artproma

Client
Регистрация
01.07.2014
Сообщения
63
Благодарностей
3
Баллы
8
Попробую обойти этот момент с другой стороны....
Все равно спасибо.
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 167
Благодарностей
2 169
Баллы
113
Искал как прикрутить любой стеммер к зенке. Долго перебирал всякий хлам, но получилось. Для потомков оставлю здесь инфу:
Остановился на этой статье "Стеммеры Snowball на C#", вот еще пример работы и обсуждения.
Отсюда скачал рабочие ихсодники https://stemmersnet.codeplex.com/SourceControl/latest
С них скомпилил библиотеку StemmersNet.dll. Ее надо закинуть в папку ExternalAssemblies, например, у меня это:
Код:
c:\Program Files (x86)\ZennoLab\RU\ZennoPoster Pro\5.12.3.0\Progs\ExternalAssemblies\
и дописать в using:
Код:
using Iveonik.Stemmers;
Или можете скачать шаблон вместе с файлом StemmersNet.dll:

Ну и вот блок с C# кодом, создал методом тыка, но вроде работает как надо.
Код:
string str1 = "jumped"; // сюда вставляем 1 слово, которе надо обработать
var moy_stemmer = new Iveonik.Stemmers.EnglishStemmer();
return moy_stemmer.Stem(str1); // вернет "jump"
/* весь список языков:
CzechStemmer
DanishStemmer
DutchStemmer
EnglishStemmer
FinnishStemmer
FrenchStemmer
GermanStemmer
HungarianStemmer
ItalianStemmer
NorwegianStemmer
PortugalStemmer
RomanianStemmer
RussianStemmer
SpanishStemmer
*/
Еще ссылки по теме:
http://www.solarix.ru/ - там куча инфы для понимания терминов (тот же стемминг) и инструментов, но как пользоватся их исходниками я не понял, мало знаний.
Здесь обсуждалось использование лемматизатора на отдельных словарях от http://aot.ru/ , но это медленно и сложнее, я не проверял.
 
Последнее редактирование:
Регистрация
12.07.2014
Сообщения
916
Благодарностей
371
Баллы
63
Искал как прикрутить любой стеммер к зенке. Долго перебирал всякий хлам, но получилось. Для потомков оставлю здесь инфу:
Остановился на этой статье "Стеммеры Snowball на C#", вот еще пример работы и обсуждения.
Отсюда скачал рабочие ихсодники https://stemmersnet.codeplex.com/SourceControl/latest
С них скомпилил библиотеку StemmersNet.dll. Ее надо закинуть в папку ExternalAssemblies, например, у меня это:
Код:
c:\Program Files (x86)\ZennoLab\RU\ZennoPoster Pro\5.12.3.0\Progs\ExternalAssemblies\
и дописать в using:
Код:
using Iveonik.Stemmers;
Или можете скачать шаблон вместе с файлом StemmersNet.dll:

Ну и вот блок с C# кодом, создал методом тыка, но вроде работает как надо.
Код:
string str1 = "jumped"; // сюда вставляем 1 слово, которе надо обработать
var moy_stemmer = new Iveonik.Stemmers.EnglishStemmer();
return moy_stemmer.Stem(str1); // вернет "jump"
/* весь список языков:
CzechStemmer
DanishStemmer
DutchStemmer
EnglishStemmer
FinnishStemmer
FrenchStemmer
GermanStemmer
HungarianStemmer
ItalianStemmer
NorwegianStemmer
PortugalStemmer
RomanianStemmer
RussianStemmer
SpanishStemmer
*/
Еще ссылки по теме:
http://www.solarix.ru/ - там куча инфы для понимания терминов (тот же стемминг) и инструментов, но как пользоватся их исходниками я не понял, мало знаний.
Здесь обсуждалось использование лемматизатора на отдельных словарях от http://aot.ru/ , но это медленно и сложнее, я не проверял.

Зачетно :-)
В архиве страница "Стеммеры Snowball на C#" из кэша



для поиска, а то еле нашел))
обрезка слова
подсчет слов в тексте
процент слов в тексте
анализ текста
 

Вложения

Последнее редактирование:

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)