Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > cpp-stemmer


Автор: Lazin 25.6.2009, 15:52
в общем, по мотивам недавней темы: http://forum.vingrad.ru/forum/topic-264392/kw-gnu-gpl-пользуйте-если-понравится.html
http://bitbucket.org/Lazin/cpp-stemmer/
это такая штука, для извлечения корня из слова, делал по алгоритму на http://snowball.tartarus.org/algorithms/russian/stemmer.html
когда-то было нужно, теперь нет, выбрасывать жалко smile 
можете начинать обсирать xD

Автор: zim22 25.6.2009, 16:19
Цитата(Lazin @  25.6.2009,  15:52 Найти цитируемый пост)
можете начинать обсирать xD

smile не проверяется наличие файла:
Код

std::ifstream diff("diff.txt");

при его(файла) отстутствии в условии if никогда не будет true
Код

while(true)
    {
        if (diff.eof() || diff.bad())
            break;


***
ввёл я слово "колхозница". корень у этого слова вроде как "колхоз"
но программма иного мнения: корень = колхозниц smile
***
ничто не мешает ввести последовательность символов, больше чем 0x1000
необходимо использовать strncpy
Код

char word[0x1000];
std::string first, second;
diff >> first >> second;
strcpy(word, first.c_str());

Автор: Lazin 25.6.2009, 16:35
Цитата(zim22 @  25.6.2009,  16:19 Найти цитируемый пост)
не проверяется наличие файла

не проверяет

Цитата(zim22 @  25.6.2009,  16:19 Найти цитируемый пост)
при его(файла) отстутствии в условии if никогда не будет true

не будет

потому, что это тест smile 

Цитата(zim22 @  25.6.2009,  16:19 Найти цитируемый пост)
вёл я слово "колхозница". корень у этого слова вроде как "колхоз"
но программма иного мнения: корень = колхозниц

так и задумано, это реализация алгоритма Портера, точнее его модификация описанная здесь: http://snowball.tartarus.org/algorithms/russian/stemmer.html, там есть словарь для проверки, результат работы совпадает на 100%
это нужно не для того, что-бы правильно в 100% случаев извлекать корень, а для того, что-бы эффективно индексировать текст smile 

Цитата(zim22 @  25.6.2009,  16:19 Найти цитируемый пост)
ничто не мешает ввести последовательность символов, больше чем 0x1000
необходимо использовать strncpy

в словаре diffs.txt таких длинных слов не наблюдалось smile

Добавлено @ 16:36
что за люди, лишь бы докопаться  smile 

Автор: jonie 25.6.2009, 20:20
сделай внятное описание и на гугл код) а вдруг кому пригодится?

Автор: Lazin 25.6.2009, 20:29
Цитата(jonie @  25.6.2009,  20:20 Найти цитируемый пост)
сделай внятное описание и на гугл код) а вдруг кому пригодится?

а чем плох bitbucket?

Автор: Rififi 25.6.2009, 22:33
что за люди, лишь бы докопаться
и не говори, зверьё самое натуральное :gigi:

а чем плох bitbucket? 
хм.. может быть тем, "а шо эта"? (:

Автор: jonie 26.6.2009, 00:00
а блин, извиняй, я чет на ссылку не посмотрел 8)) а так не качал ибо оно мне не надо)

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