Forum Webscript.Ru

Программирование => Perl => Тема начата: kaska от 28 Ноября 2005, 16:19:19

Название: Удаление значений из переменной
Отправлено: kaska от 28 Ноября 2005, 16:19:19
представляете, приходит значит такая переменная $something = "И Маши И Саша да еще Олечка тут";

И куда мне такое? Нет, я конечно могу просто отбросить "и", "да", "еще", "тут", чтобы получить "Маша Саша Олечка"... а вдруг что другое в следущий раз прийдёт? ;)

написал бы
$something =~ s/и//gi;
$something =~ s/да//gi;
$something =~ s/еще//gi;
$something =~ s/тут//gi;

- да и дело с концом, получаю
$something = "Маша Саша Олечка";

но решил подумать о будущем... Может быть можно просто удалят все слова меньше либо равных 3-м символам?
Название: Удаление значений из переменной
Отправлено: commander от 28 Ноября 2005, 16:25:04
kaska
для какой цели ты собираешся удалять "и", "да", "еще", "тут" ?
Название: Удаление значений из переменной
Отправлено: Regestor от 28 Ноября 2005, 18:28:28
Ну если тебе нужно из общего текста вынуть все союзы и прочее что тебе мешает... то можем селть фаилик... где будут перечислены слова исключения или союзы и т д

Потом скрипт открывает этот фаил.... загоняет его в Массив....

Дальше пробираемся по массиву.. исключая эти слова из текста

Так делать ненадо
Название: Удаление значений из переменной
Отправлено: commander от 28 Ноября 2005, 18:35:30
Regestor
садись два...
Название: Удаление значений из переменной
Отправлено: Regestor от 28 Ноября 2005, 19:58:49
commander
Ждем совета от ботана =)
Название: Удаление значений из переменной
Отправлено: kaska от 28 Ноября 2005, 21:10:06
commander
мне нужны только имена, а подобные союзы  т.п. нечесть не нужна - поэтому их хочу отбросить.
Название: Удаление значений из переменной
Отправлено: Regestor от 28 Ноября 2005, 23:22:21
kaska
Поправлю себя... неделай как я говорил выше....

Поверь мне союзов не так ужь и много....
Поэтому не грех будет прямо в код мутить и такое

$something =~ s/и//gi;
$something =~ s/да//gi;
$something =~ s/еще//gi;
$something =~ s/тут//gi;

Если тебе нехочется загромождать свой код строчками 20-30 или более... и хочется чтобы там была 1 строчка заместо этого всего есть 2 выхода....

1) Вынести все это дело в отдельный фаил и подключить в этом месте require ом.... или чем нить еще... чем нравиться... так как некоторые думаю что require использовать нецелесообразно.... решать тебе короче....

2) Или создать отельную функцию... куда ты будешь передавать текст и получать уже обработанный...

Опять-же решать тебе =)
Название: Удаление значений из переменной
Отправлено: commander от 29 Ноября 2005, 10:12:24
Regestor
 двойка в дневник... родителей в школу....  

kaska
ВАЖНО!
повторяю свой вопрос для чего это тебе?

т.е. если исходя из задачи, тебе нужно удалять слишком часто встречающиеся слова, в каком то массиве данных, тебе нужно сначала их определить, и не обязательно это будут только союзы, предлоги, местоимения и т.д. если тематика массива данных допустим молодежный форум, то в такие слова нужно включить так же слово "типа" ибо это будет просто слово паразит, а если это форум батанического сада, то слово "тип" тут уже преобретает совершенно другой характер... вносить руками все отбрасываемые слова это не правильно... т.е. нужно построить алгоритм вычленения "ненужный слов".
вот почему важно что-бы ты полностью описал задачу....
Название: Удаление значений из переменной
Отправлено: kaska от 29 Ноября 2005, 10:43:21
Это для использования в детском садике (только не смейтесь) .:rolleyes:  Отбросить нужно только союзы, предлоги, местоимения, т.е. слова не более 3-х символов
Название: Удаление значений из переменной
Отправлено: commander от 29 Ноября 2005, 10:44:18
kaska
с учетом словоформ?
+ как ты собираешся поступать с "не" и "ни" ?
Название: Удаление значений из переменной
Отправлено: NeoNox от 29 Ноября 2005, 12:10:02
Кроме всего прочего, есть имена на две и три буквы, убирая все что не больше трех, ты рискуешь вместе с водой выплеснуть младенца.
Вообще, в таких случаях заводится хеш стоп-слов (заранее заданных). Далее тебе будет легко определить полезное от бесполезного.
Название: Удаление значений из переменной
Отправлено: kaska от 29 Ноября 2005, 12:14:16
Проанализировав имена, которые есть, ито, что может быть "не нужно" могу сказать со 100% уверенностью, что отбрасывать нужно именно слова состоящие из одной буквы, двух и трёх букв.
Название: Удаление значений из переменной
Отправлено: NeoNox от 29 Ноября 2005, 12:36:13
$something =~ s/(\\b\\w{0,3}\\b)//g
Название: Удаление значений из переменной
Отправлено: kaska от 29 Ноября 2005, 12:43:12
Спасибо большое! А не подскажите мануал на русском в сети хороший?
Название: Удаление значений из переменной
Отправлено: commander от 29 Ноября 2005, 13:13:11
NeoNox
Цитировать
Вообще, в таких случаях заводится хеш стоп-слов (заранее заданных). Далее тебе будет легко определить полезное от бесполезного.

вообще в таких случаях считают "вес слова" в тексте... и особо не напрягаються...  ;)
Название: Удаление значений из переменной
Отправлено: NeoNox от 29 Ноября 2005, 13:56:15
commander я не уверен, что здесь нужно употреблять алгоритм "веса слова в тексте". Если ты уверен в своей правоте, будь так любезен, опиши его хотя-бы схематически.

kaska
мануал чего?
Название: Удаление значений из переменной
Отправлено: commander от 29 Ноября 2005, 14:18:02
NeoNox
стандартный tf-idf....
http://instruct.uwo.ca/gplis/601/week3/tfidf.html
Название: Удаление значений из переменной
Отправлено: NeoNox от 29 Ноября 2005, 14:24:53
И что это даст в строке "И Маши И Саша да еще Олечка тут"?
Название: Удаление значений из переменной
Отправлено: commander от 29 Ноября 2005, 14:30:11
NeoNox
как ты думаешь для чего нужен разбор слов из запроса?
и выбрасывание из неё союзов, предлогов, местоимений....

хотя все это флэйм... особенно после того как автор поста остался довольным ответами... :)
Название: Удаление значений из переменной
Отправлено: NeoNox от 29 Ноября 2005, 14:32:13
Нет, мне интересно понять твою мысль...
Выброси союзы здесь "И Маши И Саша да еще Олечка тут Яша и Ян еще"
Название: Удаление значений из переменной
Отправлено: kaska от 29 Ноября 2005, 14:53:33
NeoNox
мануал по подобным вещам в Perl
Название: Удаление значений из переменной
Отправлено: NeoNox от 29 Ноября 2005, 15:03:12
kaska это регулярные выражения (regexp).
http://perldoc.narod.ru/