Автор Тема: Удаление значений из переменной  (Прочитано 8891 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kaska

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 14
  • +0/-0
  • 0
    • Просмотр профиля
Удаление значений из переменной
« : 28 Ноября 2005, 16:19:19 »
представляете, приходит значит такая переменная $something = "И Маши И Саша да еще Олечка тут";

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

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

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

но решил подумать о будущем... Может быть можно просто удалят все слова меньше либо равных 3-м символам?

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Удаление значений из переменной
« Ответ #1 : 28 Ноября 2005, 16:25:04 »
kaska
для какой цели ты собираешся удалять "и", "да", "еще", "тут" ?
And no religion too...

Оффлайн Regestor

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://xsystem.ru/
Удаление значений из переменной
« Ответ #2 : 28 Ноября 2005, 18:28:28 »
Ну если тебе нужно из общего текста вынуть все союзы и прочее что тебе мешает... то можем селть фаилик... где будут перечислены слова исключения или союзы и т д

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

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

Так делать ненадо
« Последнее редактирование: 28 Ноября 2005, 23:23:16 от Regestor »

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Удаление значений из переменной
« Ответ #3 : 28 Ноября 2005, 18:35:30 »
Regestor
садись два...
And no religion too...

Оффлайн Regestor

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://xsystem.ru/
Удаление значений из переменной
« Ответ #4 : 28 Ноября 2005, 19:58:49 »
commander
Ждем совета от ботана =)

Оффлайн kaska

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 14
  • +0/-0
  • 0
    • Просмотр профиля
Удаление значений из переменной
« Ответ #5 : 28 Ноября 2005, 21:10:06 »
commander
мне нужны только имена, а подобные союзы  т.п. нечесть не нужна - поэтому их хочу отбросить.

Оффлайн Regestor

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://xsystem.ru/
Удаление значений из переменной
« Ответ #6 : 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

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Удаление значений из переменной
« Ответ #7 : 29 Ноября 2005, 10:12:24 »
Regestor
двойка в дневник... родителей в школу....  

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

т.е. если исходя из задачи, тебе нужно удалять слишком часто встречающиеся слова, в каком то массиве данных, тебе нужно сначала их определить, и не обязательно это будут только союзы, предлоги, местоимения и т.д. если тематика массива данных допустим молодежный форум, то в такие слова нужно включить так же слово "типа" ибо это будет просто слово паразит, а если это форум батанического сада, то слово "тип" тут уже преобретает совершенно другой характер... вносить руками все отбрасываемые слова это не правильно... т.е. нужно построить алгоритм вычленения "ненужный слов".
вот почему важно что-бы ты полностью описал задачу....
And no religion too...

Оффлайн kaska

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 14
  • +0/-0
  • 0
    • Просмотр профиля
Удаление значений из переменной
« Ответ #8 : 29 Ноября 2005, 10:43:21 »
Это для использования в детском садике (только не смейтесь) .:rolleyes:  Отбросить нужно только союзы, предлоги, местоимения, т.е. слова не более 3-х символов

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Удаление значений из переменной
« Ответ #9 : 29 Ноября 2005, 10:44:18 »
kaska
с учетом словоформ?
+ как ты собираешся поступать с "не" и "ни" ?
And no religion too...

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Удаление значений из переменной
« Ответ #10 : 29 Ноября 2005, 12:10:02 »
Кроме всего прочего, есть имена на две и три буквы, убирая все что не больше трех, ты рискуешь вместе с водой выплеснуть младенца.
Вообще, в таких случаях заводится хеш стоп-слов (заранее заданных). Далее тебе будет легко определить полезное от бесполезного.
The documentations is your friend

Оффлайн kaska

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 14
  • +0/-0
  • 0
    • Просмотр профиля
Удаление значений из переменной
« Ответ #11 : 29 Ноября 2005, 12:14:16 »
Проанализировав имена, которые есть, ито, что может быть "не нужно" могу сказать со 100% уверенностью, что отбрасывать нужно именно слова состоящие из одной буквы, двух и трёх букв.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Удаление значений из переменной
« Ответ #12 : 29 Ноября 2005, 12:36:13 »
$something =~ s/(\\b\\w{0,3}\\b)//g
The documentations is your friend

Оффлайн kaska

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 14
  • +0/-0
  • 0
    • Просмотр профиля
Удаление значений из переменной
« Ответ #13 : 29 Ноября 2005, 12:43:12 »
Спасибо большое! А не подскажите мануал на русском в сети хороший?

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Удаление значений из переменной
« Ответ #14 : 29 Ноября 2005, 13:13:11 »
NeoNox
Цитировать
Вообще, в таких случаях заводится хеш стоп-слов (заранее заданных). Далее тебе будет легко определить полезное от бесполезного.

вообще в таких случаях считают "вес слова" в тексте... и особо не напрягаються...  ;)
And no religion too...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28