Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2012, 22:03   #11
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Цитата:
Сообщение от dem66 Посмотреть сообщение
ну ну. тема закрыта. с к--ми разговаривать
Мне нравится твоя задумка , хотя бы потому что тут приходится придумывать какие то спец. ходы , а потом это всё реализовывать .. это круто ) такой опыт , яб помог но не знаю даже где стать ))

Зы. не слушай тех кто не по теме советует .
...........
ЗЫ.ЗЫ.Зы щас кирпичи полетят ! пошёл за каССкоЙ
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 28.02.2012, 22:18   #12
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
По умолчанию

те кто сомневаются в моем професионализме пусть приюьются об стенку. я уже столько собак на WEB-розработке сьел.

Кому интиресно стучите в аську
dem66 вне форума Ответить с цитированием
Старый 28.02.2012, 22:47   #13
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
По умолчанию

Виталий Желтяков подкиньт еще чтото. Заинтересовало.
dem66 вне форума Ответить с цитированием
Старый 29.02.2012, 13:12   #14
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
Восклицание

что ни укого нету никаких идей? Может ктото предложит как лучше организовать структуру базы данных, возвращать ответы, анализ присланой строки и т.д. Буду рад любой идее.
dem66 вне форума Ответить с цитированием
Старый 29.02.2012, 18:31   #15
Mortimoro
Форумчанин
 
Регистрация: 03.12.2010
Сообщений: 334
По умолчанию

ты же не внимаешь тому, что тебе предлагают, зачем тогда спрашиваешь?

чтобы проводить анализ предложения, введенного пользователем, нужно сперва разобрать его по кусочкам - каждое слово должно иметь вес, а для определения веса нужно понять какая это часть речи.

чтобы выполнить работу качественно, а не лишь бы как, тебе придется вернуться к школьной программе русского языка за 5 класс и понять какие части речи должны быть приоритетными, а какие можно не учитывать. пока ты этого сам не сделаешь, тебе никто не поможет - тут программисты, а не лингвисты, ты форумом ошибся.

база данных должна содержать словарный запас твоего бота, к каждому слову должна быть пометка, какая это часть речи, какие слова считать синонимами, какие антонимами (если ты это не учтешь, то реакция бота на слово "привет" не будет распространяться на слова "добрый день", "здорово" и т.п., а следовательно тебе придется под каждое из них прописывать одно и то же).
еще к каждому слову можно добавить множество характеристик, которые тебе таки надо искать в учебниках за 5 класс (ласкательные, пренебрежительные и т.п. отличаются окончаниями в основном).

при анализе предложения, надо учесть в каком порядке части речи расположены - тогда если попадется неизвестное слово в предложении (или опечатка), можно определить какой частью речи это слово является и принять решение, насколько оно важно и можно ли ним пренебречь.
Mortimoro вне форума Ответить с цитированием
Старый 29.02.2012, 18:41   #16
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
Восклицание

Цитата:
Сообщение от Mortimoro Посмотреть сообщение
чтобы проводить анализ предложения, введенного пользователем, нужно сперва разобрать его по кусочкам - каждое слово должно иметь вес, а для определения веса нужно понять какая это часть речи.

чтобы выполнить работу качественно, а не лишь бы как, тебе придется вернуться к школьной программе русского языка за 5 класс и понять какие части речи должны быть приоритетными, а какие можно не учитывать. пока ты этого сам не сделаешь, тебе никто не поможет - тут программисты, а не лингвисты, ты форумом ошибся.
Та я это понимаю. По такому же принципу сейчас и работает распознавание того что хочет пользователь от бота.

А я что говорил что здесь лингвисты?

Мне полезен любой совет
dem66 вне форума Ответить с цитированием
Старый 29.02.2012, 22:29   #17
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
Виталий Желтяков подкиньт еще чтото. Заинтересовало.
Тут всё просто.

Что нужно:
Во-первых, нужна база ответов. Как она формируется определяете сами.
Во-вторых, алгоритм подбора ответов с случайными вариациями и универсальными ответами на сложные вопросы ("Не знаю").
В-третьих, механизм обратной связи. Что-то наподобие голосования - хороший/плохой ответ.
В-четвёртых, база неправильных ответов. Структура из 3-х столбцов: id, ключевое слова вопроса, ключевое слово неправильного ответа.

Как это работает:
- Человек задаёт вопрос;
- Механизм подбора ответов выбирает одну вариацию;
- Эта ответная вариация проверяется по базе неправильных ответов;
- Если вариация неправильна, то ищем другую вариацию ответов (поэтому нужна случайность при выборе ответов и универсальные ответы);
- Если вариация не имеет ошибок, то она выдаётся человеку;
- Человек оценивает ответ, если подходит, то на этом всё;
- Иначе данная вариация помечается как ошибочная.
Виталий Желтяков вне форума Ответить с цитированием
Старый 29.02.2012, 23:15   #18
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
Восклицание

Спасибо, надо думать. Завтра обдумаю алгоритм и попробую часть реализовать, скажу что из этого получилось. Подумаю как реализовать то что вы предложили.

Тема также есть на http://forum.antichat.ru/showthread.php?p=3040157

PS: Может кому будет интиресно взглянуть на полный код обработчика. Прилагаю файл.
Вложения
Тип файла: zip analitics.php.zip (3.6 Кб, 21 просмотров)
dem66 вне форума Ответить с цитированием
Старый 01.03.2012, 21:53   #19
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
Лампочка

Всем добрый вечер. Вот пока думаю над тем что преждложил Виталий Желтяков, но пока ничего умного в голову не приходит. Сегодня на паре стукнула в голову вот такая идея:

Алгоритм для получения тематики(бредово конечно но...):
  1. Получаем строку, формируем из неё массив и чистим от пробелов.
  2. Создаем весы. от 0 до 10 просто тыкаем пальцем в небо
  3. Начинаем бить в грудь перцепрона и требовать ответа. Создаем цикл и перебираем массив, находим нужные слова, получаем их веса (по идее еще и позийию в тексте) и умножаем на веса.
  4. Сумируем результат

А вот что делать дальше с результатом пока понятия не имею.
В иделале в базе должно тогда быть:

Слово|веса|позиция в строке

Ну и задумывалось что перебрав возможные варианты подберется нужный результат.

Вот скрипт:
PHP код:
<?php
Class Percept{
    private 
$W;    // веса
    
private $size;    // размерность
    
private $porog;    // порог
    
    
public function __construct()
    {
        
//$this->size    = $n;
        
$this->porog    100
        
//$this->init_weight();
    
}
    
    
//Переганяем в массив строку
    
public function Create_array($str){
        
$array explode(" "$str);
        
$result = array();
        foreach(
$array as $value){
            
$string str_replace(" """$value);
            if(!empty(
$string)){
                
$string mb_strtoupper(trim($string), "utf-8");
                
$result[] = $string;
            }
        }
        
$this->size    count($result);
        
$this->result $result;
        
//return $result;
    
}
    
    
//Тыкаем пальцем в небо и создаем веса
    
public function Create_w(){
        for(
$i=0$i<$this->size$i++){$this->W[] = rand(010);}
    }
    
    public function 
ask()
    {
        
$keyword = array("РОСКАЖИ"=>5,"ЧТО"=>2,"ТАКОЕ"=>8,"БОТ"=>7,"РОБОТ"=>4,"ПРИВЕТ"=>10 и т.д);
        
        
$sum 0;
        for(
$i=0$i<$this->size$i++){
            
$key $keyword[$this->result[$i]];
            
//echo $key."<br>";
            
$sum += $key*$this->W[$i];
        }
        echo 
$sum;
    }
    
    public function 
run($str){
        
$this->Create_array($str);
        
$this->Create_w();
        
$this->ask();
    }
}

$percept = new Percept;
$str "Розкажи что такое бот";
$percept->run($str);
?>
Вот что дальше делать с echo $sum; без понятия.

Пример взят отсюда примеры-нейронных-сетей-на-php

Извените что пока не следую предложению Виталий Желтяков ну не идут пока идеи и все
dem66 вне форума Ответить с цитированием
Старый 01.03.2012, 23:57   #20
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
Лампочка

так мужики доделал вот скрипт и теперь он стабильно понимает что от него хотят.
Тоесть сеть можно обучть разным выражениям. Чтобы много не писать приведу код.

PHP код:
<?php
Class Percept{
    private 
$W;        // веса
    
private $size;    // размерность
    
private $porog;    // порог
    
    
public function __construct()
    {
        
//$this->size    = $n;
        
$this->porog    100
        
//$this->init_weight();
    
}
    
    
//Переганяем в массив строку
    
public function Create_array($str){
        
$array explode(" "$str);
        
$result = array();
        foreach(
$array as $value){
            
$string str_replace(" """$value);
            if(!empty(
$string)){
                
$string mb_strtoupper(trim($string), "utf-8");
                
$result[] = $string;
            }
        }
        
$this->size    count($result);
        
$this->result $result;
        
//return $result;
    
}
    
    
//Тыкаем пальцем в небо и создаем веса
    
public function Create_w(){
        for(
$i=0$i<$this->size$i++){$this->W[] = rand(010);}
    }
    
    public function 
ask()
    {
        
$keyword = array("РАЗМЕСТИ"=>5,"РЕКЛАМУ"=>2,"СВОЕГО"=>8,"СЕРВЕРА"=>7);
        
//$themes = array(78=>"Реклама сервера");
        
        
$sum 0;
        for(
$i=0$i<$this->size$i++){
            
$key $keyword[$this->result[$i]];
            
//echo $vector."<br>";
            
$sum += $key*$this->W[$i];
        }
        
/*
        foreach($themes as $key=>$val){
            //echo $key;
            if($key==$sum)
            {
                echo $val;
            }
        }
        */
        //echo $sum;
        
return $sum;
    }
    
     
/** 
         * Сохраняем в файл 
         * Если файл есть - перезапишет 
         * 
         * @param string $filename 
         */ 
        
public function weight_save($filename
        { 
                
$serialize serialize($this->W); 
                
fwritefopen($filename,"w"), $serialize); 
        } 
        
        
/** 
         * Грузим весы из файла 
         *  
         * 
         * @param string $filename 
         */ 
        
public function weight_load($filename
        { 
            
$this->unserialize(file_get_contents($filename)); 

        } 
                
        public function 
teach($d
        { 
            if(
$d!=$this->ask())  
            { 
                
$keyword = array("РАЗМЕСТИ"=>5,"РЕКЛАМУ"=>2,"СВОЕГО"=>8,"СЕРВЕРА"=>7);
                
// teach 
                
for($i=0;$i<$this->size;$i++) 
                { 
                    
$key $keyword[$this->result[$i]];
                    
$this->W[$i] += $d*$key
                } 
            } 
        }
    
    public function 
run($str){
        
$this->Create_array($str);
        
$this->Create_w();
    if(!
file_exists("kamillabot.txt")) 
    { 
        
/** 
         * Учим 
         */
        
$this->teach(155);
        
$this->weight_save("kamillabot.txt") ;
    }else{ 
        
// Чтобы каждый раз не учится, грузим. 
        
$this->weight_load("kamillabot.txt");
       echo 
$this->ask();
    } 
        
//echo"<pre>";
        //print_r($array);
        //echo"</pre>";
        //echo"<pre>";
        //print_r($this->W);
        //echo"</pre>";
        

    
}
}

$percept = new Percept;
$str "Размести рекламу своего сервера";
$percept->run($str);
?>
Текст взят от фанаря, с интернета и ничего общего с рекламой серверов не имею!

Теперь в файл записывается следующее содержимое:
Код:
a:4:{i:0;i:777;i:1;i:316;i:2;i:1249;i:3;i:1091;}
И в ответ на текст стабильно выдается 22146, так как есть готовые весы.
Тоесть теперь можно по этому результату например искать ответ в базе данных. Ну както так. Но надо доделывать, ну сами понимаете.

Чувствую сейчас в ответ кидатся начнут
dem66 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мечты о форуме и сайтах клуба Alar О форуме и сайтах клуба 1652 18.12.2019 17:55
Как улучшить код kirza Общие вопросы Delphi 10 19.01.2011 18:14
Создание чат-бота для онлайн игры mrlasking Фриланс 1 22.11.2010 19:31
Как улучшить макрос? Highlander Microsoft Office Excel 1 23.01.2010 12:15
Как улучшить fps ? minatavr84 Компьютерное железо 2 26.03.2009 23:59