![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
paulvasykov |
|
||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 17.9.2007 Репутация: нет Всего: нет |
Выполняеться это дело на winXP до 900секунд. Я пробовал так, но чтото не то.
|
||||
|
|||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Вот так попробуй, может, будет лучше.
|
|||
|
||||
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
Ну во первых я считаю что обрабатывать файл нужно построчно, а не весь сразу, во вторых думаю поможет ключик /o.
И в третьих вот мой приблизительный вариант:
Это конечно если я задачу понял правильно... Лучше приведите кусок файла и примерный результат, а то я даж не знаю на чем протестить, и верно ли я понял задачу :( -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
paulvasykov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 17.9.2007 Репутация: нет Всего: нет |
Вот полный код с загрузкой
Должен получиться шаблон вида : ...and was [verb]d well .You might .... ...professionals to [verb]ing web sites... тоесть вместо сущ вписать [сущ] и окончание ing,es, если есть. to nab: Работает быстрее на 1 сек для 1 verb. Перед словом должен стоять пробел, т.к. заменяет также и в середине слова: (mee[verb]s)?. Пример text01.txt : In today's busy world the internet is a major necessity when it comes to doing business. Especially for large corporations. Many times, most corporations have affiliate business partners over seas and have to hold conferences, board meetings, etc. Many times the meeting needs to be held in a timespan that is not conducive to traveling half way around the globe. By using a web conference call service you save big bucks on the cost of air travel. Пример verb.txt : Это сообщение отредактировал(а) paulvasykov - 17.9.2007, 15:19 Присоединённый файл ( Кол-во скачиваний: 6 ) ![]() |
|||
|
||||
vadiml |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 27.7.2007 Репутация: 5 Всего: 7 |
Может лучше вместо добавления кучи пробелов отслеживать начало и конец слова?
думаю здесь можно использовать \b т.е. выкинуть $stsen[0] =~s/\./ \./gi; и написать $stsen[0] =~s/\b$verb[1]\b/\[verb\]/gi; $stsen[0] =~s/\b$verb[1]s\b/\[verb\]s/gi; ЗЫ посмотрите Программирование на Perl Ларри Уолла, гл5 Поиск по шаблону, Границы: утверждения \b и \B Nab Весьма часто несколько простых шаблонов работают гораздо быстрее 1-го сложного. Здесь главный тормоз процесса -- подстановка $verb[1] на этапе исполнения, что сводит на нет предкомпиляцию. |
|||
|
||||
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
То что нужно использовать \b еще amg, в своем ответе показал, просто paulvasykov, не внимательно ответы читает :(
Да я знаю ![]() поэтому возможно будет быстрее, если сделать предкомпиляцию постоянной части...
Также непонятно зачем используеться массив, вместо простых скаляров? И последнее, я когда говорил что читать построчно, то имел ввиду текстовые файлы, а не словарь... Словари нужно по возможности хранить в памяти... Я понимаю что операционка их скорее всего закеширует сама, но уверенности нет, поэтому этот вопрос тоже нужно продумать... -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
paulvasykov, все же поищи в интернете! Сделать хороший тэггер (программу, определяющую часть речи слов в предложении) - сложно, это тянет на диссертационную работу. И тэггеров для английского языка много, есть и свободные, например, CRFTagger, Lingua::BrillTagger.
Если очень хочется самому, то можно попробовать использовать тот факт, что в обычном литературном тексте уникальных слов не очень много. Если у тебя 7 М текста (сочиненного человеком, а не функцией rand) то в нем порядка миллиона слов, а уникальных - ну, скажем, 10 тыс. И если слово уже встречалось, то можно не прогонять его через словарь, а взять уже готовый результат (твой же "тэггер" не контекстно зависимый?). Вот скрипт, реализующий это:
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |