Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > Inverted File indexer |
Автор: LisaST 23.4.2006, 16:48 |
я практически в отчаянии,т.к. мне как совершенно начинающему надо написать "Inverted file indexer" для списка текстов (без HTML тегов). Даже не знаю, с какой стороны мне подойти к этой проблеме...может быть кто-то посоветует, что где почитать или идеи для алгоритма. Нашла в инете много теории, ну и также знаю, что есть Perlfect Search, кот. индексирует веб страницы. |
Автор: rcdimon 24.4.2006, 07:37 |
Пожалуйста подробнее изложите суть проблемы |
Автор: LisaST 24.4.2006, 13:57 |
Имеется корпус текстовый(архив):http://www.cis.uni-muenchen.de/~heller/docs/corpora/heise-newsticker.tar.gz Мне надо написать программу, кот. индексирует этот корпус (http://en.wikipedia.org/wiki/Inverted_file_index), подробностей больше в задании не указано, только написать "inverted file indexer" |
Автор: rcdimon 24.4.2006, 16:21 |
МНе кажется что здесь очень хорошо было бы использовать базу данных. например MySQL. И проводить индексацию ее средствами, благо там они очень хорошо развиты. Вынимать и засовывать информацию из базы- одно удовольствие. Так что советую, если возможно, сделать именно с ней. И тогда дополнительная, ручная индексация не потребуется Добавлено @ 16:23 А если вам так необходимо сделать индексацию вручную, то для начала неплохо бы разработать алгоритм индексации. |
Автор: nitr 24.4.2006, 17:07 |
чуть оффтоп: А можно привести примерчик импортирования из xls в БД (mysql) (xls - Excel 2.0) |
Автор: LisaST 24.4.2006, 23:08 |
В Databases я вообще полный ноль, еще хуже чем в Perl. Вот тут нашла примерно, что мне надо сделать в виде алгоритма (http://web.cs.wpi.edu/~cs4241/2000d/invfile.pdf), но как это сделать ![]() Я думаю, для начала мне надо удалить все стоп слова+знаки препинания и нормализировать все слова (стемминг). |
Автор: rcdimon 25.4.2006, 07:16 |
ПО моему с базой данных легче разобраться ![]() Тем более что она вам еще не одну сотню рас пригодится потом Добавлено @ 07:18 Давайте поясним зачем вам индексация. Вы хотите производить поиск по тексту? Или как? У вас один текстовый файл для индексации или множество? Как планируется выводить результаты после поиска, если это все для поиска? |
Автор: LisaST 26.4.2006, 01:11 | ||
у меня просто такая нагрузка сейчас, что совсем нет времени заниматся ДБ, но месяца через 2-3 придется освоить. Для чего будут в дальнейшем использоваться индекс. файлы, я не знаю, но по дефолту скорее всего для поиска. Файлов множество и все они сохранены в директории.как выводить результаты, пока не знаю, скорей всего просто список, где слева слово-токен, а справа, номера документов, в кот. оно встречается, наверное в виде key- value. Написала сегодня преподавателю письмо, он ответил, что мол напишите сначала Tokenizer а потом усовершенствуйте его так, чтобы для каждого token создавался отдельный файл в директории (+указать в этом созданном файле номер документа из кот. проишодит этот token) Это вроде первой ступени- час от часу не легче. остались все те же вопросы: как считывать все файлы в директории и в дальнейшем при чтении токена записывать каждый в отд. файл??? |
Автор: rcdimon 26.4.2006, 08:17 |
Считать файл open (MYFILE, "1.txt"); $/ = undef; $content = <MYFILE>; close (MYFILE); Или можно считать построчно. Каждая строка текста в файле станет элементом массива- по моему очень удобно! open (MYFILE, "1.txt"); @content = <MYFILE>; close (MYFILE); Ну а запись так open (MYFILE, ">>1.txt"); print MYFILE $text; close (MYFILE); Это добавляет в конц файла новые данные open (MYFILE, ">1.txt"); print MYFILE $text; close (MYFILE); Это очищает полностью файл перед записью, а потом записывает. |
Автор: LisaST 26.4.2006, 13:14 |
Спасибо большое за ссылку "дерево каталоговь, попытаюсь осилить tokenizer |
Автор: LisaST 30.4.2006, 19:42 | ||
Кое-что обнаружила в интернете у "совместными усилиями" пытаюсь написать tokenizer. Этот код выдает ошибку readline() on closed filehandle FILE at indexer1.pl line 17, в чем проблема? как записать каждый токен в отдельный файл, где также указан номер(=название) документа из которого он происходит ![]() И еще вопрос, что обозначает ? не после блока , а в начале в regular expressions? спасибо
|
Автор: LisaST 30.4.2006, 23:51 | ||
еще одна проблема, загрузила CPAN модуль, установила его, как написано в readme, при компиляции ошибка: can't locate Text/German.pm in @INC (@INC contains: usr/lib/perl5/5.8/cygwin/usr/lib/per5/5.8 ....и так еще 5 раз, потом Lingua/Stem/De.pm line 39 Compilation failed in require at indexer1.pl line 3 Я модулями еще никогда не пользовалась, что я делаю неверно?
|
Автор: nitr 1.5.2006, 22:17 |
введи >perl -MCPAN -e 'install Text::German' |
Автор: LisaST 1.5.2006, 23:21 |
ввела, не компилируется пишет: Can't use an undefined value as an ARRAY reference at /usr/lib/perl5/site_perl/5.8/Lingua/Stem/De.pm line 94 т.е. что-то в самом пакете не так, а что я могу сделать? |
Автор: LisaST 4.5.2006, 23:09 |
up |
Автор: LisaST 12.5.2006, 01:48 |
так, все ясно, я совсем чайник полный, разобралась, но еще кучу всего надо исправлять и доделывать |