GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.1 (2)След. > >>   Поиск:  
 Автор Тема: Интерпретатор человеческой речи
гость
31.181.133.*
Интерпретатор человеческой речи
Добавлено: 02 окт 14 10:47
Продолжаю постить свой говнокод. Но не в этом дело.
После потуг над нейросетями(не безуспешных), я обратился к научной фантастике от Гаррисона и тут вспомнил, что старая фантастика пестрила подобным подходом к обработке разговорного текста компьютером с преобразованием речи в исполняемые команды.

Я написал небольшой кусочек из того, что задумано, но полагаю его должно быть достаточно, чтобы понять каким образом словам, понятным человеку и машине придаётся смысл.

Иерархия вложенности в интерпретаторе не ограничена, а это значит, что все варианты текстового взаимодействия можно перечислить в исходнике. ИИ в таком случае будет идеален, как конечный автомат. Он не сможет обучаться или "иметь свою волю", но может быть быстрым, масштабируемым и экономичным инструментом, скриптования, автоматизации и взаимодействия с техникой, в том числе и "на лету", через отдельно подключаемый модуль распознавания речи, при этом инструментом гораздо более дружелюбным, чем какой нибудь !@echo_off seach_file  %255 charset UTF-8>> 123.txt строки, в которой перечисляются помимо информации о действии, все стандарты и метаданные, по которым написаны 10 байт. Инфррмативность подобной записи оценит компьютер, но не человек, которому проще выражаться на родном языке и простыми словами.

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

Демонстрация имеет минимум команд - таких как создать и удалить по отношению к файлу и каталогу.

Пример ввода
Цитата:

компьютер, создай файл 123.txt

*** FILE "123" HAS BEEN CREATED! ***

*** EXT "txt" HAS BEEN ADDED TO FILE 123! ***



#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

//----------------------------------------------------------------------
#define _KOMPUTER_NAME token != NULL && ( strcmp(token, "компьютер") == 0)
#define _ACCOMPLISH token != NULL && ( strcmp(token, "выполняй") == 0 || strcmp(token, "исполняй") == 0 || strcmp(token, "действуй") == 0)
//----------------------------------------------------------------------
#define _CREATE token != NULL && ( strcmp(token, "создай") == 0 || strcmp(token, "создать") == 0)
#define _DELETE token != NULL && ( strcmp(token, "удали") == 0 || strcmp(token, "удалить") == 0)
#define _RENAME token != NULL && ( strcmp(token, "переименуй") == 0 || strcmp(token, "переименовать") == 0)
#define _REPLACE token != NULL && ( strcmp(token, "перемести") == 0 || strcmp(token, "переместить") == 0)
#define _SEARCH token != NULL && ( strcmp(token, "найди") == 0 || strcmp(token, "поиск") == 0)
//----------------------------------------------------------------------
#define _FILE token != NULL && ( strcmp(token, "файл") == 0)
#define _DIRECTORY token != NULL && ( strcmp(token, "папку") == 0 || strcmp(token, "каталог") == 0 || strcmp(token, "директорию") == 0)
//----------------------------------------------------------------------
//----------------------------------------------------------------------
#define _FIRST_WORD (token = strtok(request, " .,\0;!?"))
#define _NEXT_WORD (token = strtok(NULL, " .,\0;!?"))
#define _NEXT_ARG _NEXT_WORD
#define _ARGUMENT token != NULL
//----------------------------------------------------------------------
#define _HEAR_HUMAN if(_NEXT_WORD == NULL){gets(request);_FIRST_WORD;}
//----------------------------------------------------------------------
#define _ARG_LIMIT 255
#define _REQ_SIZE 255
#define _ANS_SIZE 4096
//----------------------------------------------------------------------
#define _INVALID_COMMAND puts("\nКомпьютер: Неверная команда. Повторите запрос.\n");
//----------------------------------------------------------------------
#define _SAVEARG if(token != NULL && counter < _ARG_LIMIT){argbuf[counter] = token; counter++; printf("\n***DEBUG INFO***\nSAVE_ARG_%d: %s\n", counter, request);}
#define _SAVEFNC fncbuf[counter]
//----------------------------------------------------------------------
int dbgc = 0;
#define DBG printf("\nStep = %d\n",dbgc);dbgc++;
//----------------------------------------------------------------------
//Образцы функций
void _delete_directory(char * name, char * answer)
{
char answer_f[_ANS_SIZE];

sprintf(answer_f, "\n*** DIRECTORY \"%s\" HAS BEEN DELETED! ***\n", name);
strcat(answer, answer_f);
}

void _delete_file(char * name, char * answer)
{
char answer_f[_ANS_SIZE];

sprintf(answer_f, "\n*** FILE \"%s\" HAS BEEN DELETED! ***\n", name);
strcat(answer, answer_f);
}

void _create_directory(char * name, char * answer)
{
char answer_f[_ANS_SIZE];

sprintf(answer_f, "\n*** DIRECTORY \"%s\" HAS BEEN CREATED! ***\n", name);
strcat(answer, answer_f);
}

void _create_file(char * name, char * answer)
{
char answer_f[_ANS_SIZE];

sprintf(answer_f, "\n*** FILE \"%s\" HAS BEEN CREATED! ***\n", name);
strcat(answer, answer_f);
}

void _add_file_ext(char * name, char * ext, char * answer)
{
char answer_f[_ANS_SIZE];

sprintf(answer_f, "\n*** EXT \"%s\" HAS BEEN ADDED TO FILE %s! ***\n", ext, name);
strcat(answer, answer_f);
}
//Сам интерпретатор
void parce_word(char request[_REQ_SIZE], char answer[_ANS_SIZE])
{
char * token;
token = NULL;

if(request != NULL && answer != NULL)
{
memset(answer, 0, _ANS_SIZE);
//На каждой ступени, выполняется простая последовательность действий:
//1) чтение
//2) интерпретация
//3) переход к следующему шагу
_FIRST_WORD;
if(_KOMPUTER_NAME)
{
_HEAR_HUMAN;
if(_CREATE)
{
_HEAR_HUMAN;
if(_FILE)
{
_HEAR_HUMAN;
if(_ARGUMENT)
{
char * name = token;
_create_file(token, answer);

_HEAR_HUMAN;
if(_ARGUMENT)
{
_add_file_ext(name, token, answer);
}
}
}
else if(_DIRECTORY)
{
_HEAR_HUMAN;
if(_ARGUMENT)
{
_create_directory(token, answer);
}
}
}
else if(_DELETE)
{
_HEAR_HUMAN;
if(_FILE)
{
_HEAR_HUMAN;
if(_ARGUMENT)
{
_delete_file(token, answer);
}
}
else if(_DIRECTORY)
{
_HEAR_HUMAN;
if(_ARGUMENT)
{
_delete_directory(token, answer);
}
}
}
}
}
}

int main(void)
{
/*//ТЕСТ
funcptr * fnc[255]; //указатель на массив указателей
fnc[4] = _create_file;
puts(fnc[4]("asdasd"));

return 0;
//ТЕСТ*/
char request[_REQ_SIZE], answer[_ANS_SIZE];

gets(request);
parce_word(request, answer);
puts(answer);

return 0;
}

[Ответ][Цитата]
гость
87.233.219.*
На: Интерпретатор человеческой речи
Добавлено: 02 окт 14 11:20
Что за херня? Если… то… если… то…
Так не пойдёт. Должно само научиться писать «если…то…» Руками любой дебил может.
[Ответ][Цитата]
Bazist
Сообщений: 494
На: Интерпретатор человеческой речи
+1
Добавлено: 02 окт 14 11:31
Цитата:
Автор: гость

Что за херня? Если… то… если… то…
Так не пойдёт. Должно само научиться писать «если…то…» Руками любой дебил может.


Я не согласен. Дебил так не может
[Ответ][Цитата]
гость
31.181.133.*
На: Интерпретатор человеческой речи
Добавлено: 02 окт 14 11:32
***Что за херня?

Пошёл в жопу.

***Должно само научиться писать «если…то…»

А вот хер! Ленивая ты жопа. Мы тут ИИ делаем, а не бирюльки играем.

***Руками любой дебил может.

Что то я не встречал столь умных дебилов.
[Ответ][Цитата]
гость
195.154.226.*
На: Интерпретатор человеческой речи
Добавлено: 02 окт 14 17:44
Цитата:
Автор: Bazist
Я не согласен. Дебил так не может

Цитата:
Автор: гость 31.181.133.*
***Что за херня?

Пошёл в жопу.

***Должно само научиться писать «если…то…»

А вот хер! Ленивая ты жопа. Мы тут ИИ делаем, а не бирюльки играем.

***Руками любой дебил может.

Что то я не встречал столь умных дебилов.
Ещё как может. Вполне возможно это ты «гость 31.181.133», я не верю что ты экспериментировал с нейросетями, такой код что ты написал пишут только реально недоразвитые.

Иди заниматься вебдизайном, или сразу в уборщики.

[Ответ][Цитата]
DCV
Сообщений: 746
На: Интерпретатор человеческой речи
Добавлено: 02 окт 14 20:20
Направление мысли правильное, но проблема в том, что на этом простом коде исследование остановится. А нужно было переходить к следующим этапам.
[Ответ][Цитата]
dr2chek
Сообщений: 871
На: Интерпретатор человеческой речи
Добавлено: 02 окт 14 21:29
Налицо несоответствие заявленной темы и предъявленного кода Вот когда вы встроете в ваш код распознавание именно РЕЧИ, а не команд с клавиатуры, вот тогда народ оценит ваше изобретение. Потом, как видите, в конструкциях типа if{}-else{} здесь легко разбираются, поэтому рекомендую всячески декорировать ваш код
[Ответ][Цитата]
rrr3
Сообщений: 11857
На: Интерпретатор человеческой речи
Добавлено: 02 окт 14 21:58
Цитата:
Автор: гость 31.181.133.*
А вот хер! Ленивая ты жопа. Мы тут ИИ делаем, а не бирюльки играем.


Огромное спасибо! Давно так не смеялся!
Класс! Никакого "бубена" не надо! Все гораздо лучше!
+100500
[Ответ][Цитата]
rrr3
Сообщений: 11857
На: Интерпретатор человеческой речи
Добавлено: 02 окт 14 22:01
Цитата:
Автор: DCV
Направление мысли правильное...

Спору нет, как при построении Коммунизма.

Прекрасная ветка. Почему-то Райкина старшего напомнили. Молодцы!
[Ответ][Цитата]
гость
5.138.159.*
На: Интерпретатор человеческой речи
Добавлено: 03 окт 14 8:46
195.154.226.*

Отойди в сторонку.

***Налицо несоответствие заявленной темы и предъявленного кода

Это интерпретатор, преобразователь одного в другое - в данном случае слов в действие, распознаёт пусть Speech API.

***именно РЕЧИ

Разве речь это звуки, а не кодирование информации?

***в конструкциях типа if{}-else{} здесь легко разбираются поэтому рекомендую всячески декорировать ваш код.

А если бы я тот же самый код, только исключительно в тернарном виде в одну строку представил, легко понимающий народ (195.154.226.* типа такого прыща) оценил бы подобную обфускацию? - нет.

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

Не зависимо от цены вклада - вклад не будет оценён. И это касается не только меня и моих поделок (они не оригинальны, не так известны, не так "умны" и это не сарказм, это реализм), а всего форума в целом, по этому нет тут ни единомышленников, ни команд, одни шакалы.

***но проблема в том, что на этом простом коде исследование остановится.

В этом простом коде изложена малая часть задуманного, самая основная. Мне нужно 1000 человекочасов работы только чтобы набрать около 10 000 веток if{}-else{} и можно будет говорить о простом общении с компьютером и дальнейших исследованиях, вроде коррекции отдельных диалогов и внедрении иных форм взаимодействия.

[Ответ][Цитата]
гость
37.139.3.*
На: Интерпретатор человеческой речи
Добавлено: 03 окт 14 9:09
А какова цель? Если это какой то коммерческий проект, то понимаю, вопросов нет, ifelse так ifelse, но если Вы публикуете части кода, то видимо не коммерческий и хотите показать какой то на Ваш взгляд новый подход, в программировании или структуре алгоритма, касательно ИИ. Пока что он в коде не проглядывается, возможно Вам стоит например словесно или схематически разъяснить что Вы хотите реализовать.
[Ответ][Цитата]
dr2chek
Сообщений: 871
На: Интерпретатор человеческой речи
Добавлено: 03 окт 14 9:23
Цитата:
Автор: гость



***именно РЕЧИ

Разве речь это звуки, а не кодирование информации?



Ну, если вспомнить, чем занимается преобразователь РЕЧИ в текст, то таки да, РЕЧЬ - это первоначально именно звуки.
[Ответ][Цитата]
DCV
Сообщений: 746
На: Интерпретатор человеческой речи
Добавлено: 03 окт 14 9:35
Цитата:
Автор: гость

Мне нужно 1000 человекочасов работы только чтобы набрать около 10 000 веток if{}-else{} и можно будет говорить о простом общении с компьютером

А теперь придумайте, как сделать то же самое без 10 000 if else.
[Ответ][Цитата]
гость
5.138.159.*
На: Интерпретатор человеческой речи
Добавлено: 03 окт 14 10:14
37.139.3.*

Цель описана в верху, я выложил возможную реализацию "устаревшей", но так и не реализованной концепции ИИ фантастики 60-х годов ХХ века, в которой, его представляли как конечный автомат и по тому часто писали в сюжетной линии, что он - "не имеет человеческих эмоций".

***РЕЧЬ - это первоначально именно звуки.

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

***А теперь придумайте, как сделать то же самое без 10 000 if else

Товарищ, ну ты же вроде не тупой, прочти предыдущий пост ещё раз, дабы я не повторялся.
[Ответ][Цитата]
гость
85.25.103.*
На: Интерпретатор человеческой речи
Добавлено: 03 окт 14 11:47
Цитата:
Автор: гость

37.139.3.*

Цель описана в верху, я выложил возможную реализацию "устаревшей", но так и не реализованной концепции ИИ фантастики 60-х годов ХХ века, в которой, его представляли как конечный автомат и по тому часто писали в сюжетной линии, что он - "не имеет человеческих эмоций".

***РЕЧЬ - это первоначально именно звуки.

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

***А теперь придумайте, как сделать то же самое без 10 000 if else

Товарищ, ну ты же вроде не тупой, прочти предыдущий пост ещё раз, дабы я не повторялся.

Тупой ты тут паходу, подлинный бестолочь. Твой код особо не интересней

int main()
{
cout << "Hello, Ai!" << endl;
return 0;
}

И не в обфускации тернарными операторами дело, ты на уровне парадигмы нешараш, для тебя ИИ это юзер-эффект, тебе насрать что там внутри нейросеть или 10000 if()else, нет вообще понимания накуя делать что то сложней if()else, можнож потратить 1000 человекочасов!
Ты чо со словарями незнаком и сложными типами данных? Кто вообще в здравом рассудке описывает так влоб деревья решений.

[Ответ][Цитата]
 Стр.1 (2): [1]  2След. > >>