i
Полезная информация
Свернуть
21.11.2024
ruensvdefrptesitzharnl

Война с искусственным интеллектом

Война с искусственным интеллектом

Война с искусственным интеллектом продолжается.

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

Для этого нужны таблицы. Существительное плюс прилагательное. Существительное плюс глагол. Глагол плюс существительное, с которым можно делать этот глагол. Пить можно чай, а рубить дрова, а не наоборот.

Эти таблицы будет заполнять сама программа. Искать в текстах пары существительное плюс прилагательное. Как искать? Сравнивать каждое слово в книге со списком существительных. Со списком прилагательных. И.т.д.

И началось: таблица существительных в именительном падеже. Еще шесть таблиц в других падежах. Прилагательные. Мужской, женский, средний род, множественное число.

И несчастная программа сравнивает КАЖДОЕ слово в тексте со всеми этими таблицами, сколько их там, одних прилагательных 6 падежей х 4 рода = 24 таблицы. Плюс шесть таблиц существительных.

А несчастная программа начинает подвисать даже на двух таблицах. Приходится давать ей для поиска словосочетаний маленькие абзацы. Не то, что «Войну и Мир» - Вия не тянет.

И при этом говорят, что компьютеры обрабатывают информацию быстрее людей.

Ага.

Быстрее.

Может, проблема в мощности компьютера.

Или можно как-то сделать программу короче и эффективнее.

12:02
532
0
Aagira Aagira 3 года назад #
А как сейчас происходит проверка?
0
Мария Фомальгаут Мария Фомальгаут 3 года назад #
Какая проверка?
0
Aagira Aagira 3 года назад #
По падежу и роду. Можешь код показать?
0
Мария Фомальгаут Мария Фомальгаут 3 года назад #
 <?php require('db.php');?> <?php $data = $_POST;?> 
 
 
<html>
<body>
 
<form id="find_words_from_DB" action='find_words_from_DB.php' method="POST" style="height: 200px;"> <fieldset id="inputs"> <input name="adress" placeholder="Адрес поиска" required type="text" value= "http://sujet.cc61800-drupal.tw1.ru/Reader.php"> </fieldset> <fieldset> <input type="submit" id="submit" name="do_find" value="Поиск"> </fieldset>
  </form>
</body>
</html>
 
 
 <?php // функция копирования контента с сайта function file_to_str($st_search) {$syte_data = file_get_contents("$st_search");// $syte_data = iconv( "cp1251","UTF-8", $syte_data); //cp1251$syte_data = $syte_data.'.'; // добавляем на всякий пожарный при поиске если не будет конца предложенияreturn $syte_data; }  function select_words_to_arr_from_DB($link, $table_name, $id_name, $col_name) {$sql = "SELECT ".$id_name.",".$col_name." FROM ".$table_name." ORDER BY ".$col_name.";";$res = mysqli_query($link, $sql);$data = mysqli_fetch_all($res, MYSQLI_ASSOC);//var_dump($data);//while ($row = $res->fetch_array())//	$result[] = $row[0];return $data; }  // Функция добавления пары слов сущ, прил в БД function insert_to_BD($link, $sush, $sush_ind, $pril, $pril_ind) { // необходимо перед добавлением проверить нет ли такой же пары в БД  $sql = "INSERT INTO `Hero_prilag` (`sush_name`, `Index_hero1`, `pril_name`, `Index_prilag1`) VALUES ('".$sush."','".$sush_ind."','".$pril."', '".$pril_ind."');"; // echo $sql; $res = mysqli_query($link, $sql); // echo "OK"; }  function search_ch_rechi($string) { $C_S = 0; $C_P = 0; foreach ($string as $i) { if ($i === 'P'){$C_P++;}if ($i === 'S'){$C_S++;} } if ($C_S * $C_P == 1)echo "SUSH_PRIL".$C_S." ".$C_P."";  return $C_S * $C_P; // для проверки на не нулевое количество P и S }  function select_all_strings($text) { // разделители предложений$prep = ".,!:?;<>=-"; // находим предложения$i = 0;$len_text = strlen($text);$strings = array(); while ($i<$len_text){$next_string = "";while (strpos($prep, $text[$i]) === false){$next_string = $next_string.$text[$i];$i++;if ($i>=$len_text) break;} if ($next_string != "") array_push($strings, $next_string);$i++;} return $strings; }  function select_words_in_strings($array_of_strings) {$len_arr = count($array_of_strings);// echo $len_arr; // алфавит из которого состоят наши слова$alfavit = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZабвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"; $out_arr = array();// создаем 2мерный массивfor ($i=0; $i<$len_arr; $i++){$p = array();array_push($out_arr, $p);} $i = 0;while ($i<=$len_arr){$next_word = ""; $len_string = strlen($array_of_strings[$i]); //log //echo $array_of_strings[$i]."123";$j = 0;while ($j <= $len_string){//log //echo $next_word."123";if ($next_word != "") array_push($out_arr[$i], $next_word);$next_word = ""; if (!empty($array_of_strings[$i][$j]))while (strpos($alfavit, $array_of_strings[$i][$j])){$next_word = $next_word.$array_of_strings[$i][$j];$j++;//log //echo $next_word."aaa";if ($j >= $len_string){array_push($out_arr[$i], $next_word);break;}}$j++;}$i++;}return $out_arr;} 
  if (isset($data['do_find']) )// если кнопка нажата {$syte_data = file_to_str($data['adress']);// ""; $data['adress']//параметр функции название файла или сайта, //"test.txt" //в котором нужно найти (если нужно, то еще пропишите путь к файлу)//log //echo $syte_data; // получение массива слов из БД//log //echo count(select_words_to_arr_from_DB($link, "Proba_prilag", "Проба_прилаг")); 
 
 $sush_from_DB = select_words_to_arr_from_DB($link, "Hero", "Index_man", "Герой");$pril_from_DB = select_words_to_arr_from_DB($link, "Prilagatelnye", "Index_pril", "Прилагательное"); // $pril1_from_DB = select_words_to_arr_from_DB($link, "Prilagatelnye_F", "Index_pril_F", "Прилагательное_ф"); // $pril2_from_DB = select_words_to_arr_from_DB($link, "Prilagatelnye_Mn", "Index_pril_Mn", "Прилагательное3"); // $pril3_from_DB = select_words_to_arr_from_DB($link, "Prilagatelnye_N", "Index_pril_N","Прилагательное2"); 
 //log //echo "";var_dump($pril_from_DB);
 	// получение всех частей предложений	// получение всех строк с сайта в массив$all_strings = select_all_strings($syte_data);	//log //	//echo "ALL STRINGS";	//var_dump($all_strings);
 	// получение всех слов с сайта в массив$arr_of_words = select_words_in_strings($all_strings);	//log //	//echo "ARR OF WORDS";	//var_dump($arr_of_words);
 	// тут попытка сравнить со словами из $sush_from_DB 	echo " 
 
 ";
 	// цикл перебора всех слов	for ($i=0; $i<count($arr_of_words); $i++)	{$pril = "";$pril_ind = -1;$sush = "";$sush_ind = -1;$razbor = array();
 	// поиск прилагательных пока только мужского рода	// надо проверять еще другие роды (3 таблицы)	for ($j=0; $j<count($arr_of_words[$i]); $j++)	{$flag = 0;
  foreach ($pril_from_DB as $s)	{	//var_dump( $s);	// mb_strtolower - перевод слова к нижнему регистру	if (mb_strtolower($arr_of_words[$i][$j])===$s['Прилагательное'])	{	//echo "I find pril ".$s." at ".$i." ".$j.	//" in the ".$all_strings[$i]."";$pril = $s['Прилагательное'];$pril_ind = $s['Index_pril'];$flag = 1;	} //echo $s."\n";	}	//echo $arr_of_words[$i][$j]."\n";
 
 	if ($flag == 1)$razbor[$j] = 'P';	}
 
 	// цикл поиска существительных	for ($j=0; $j<count($arr_of_words[$i]); $j++)	{$flag = 0;	foreach ($sush_from_DB as $s)	{	if (mb_strtolower($arr_of_words[$i][$j])===$s['Герой'])	{	//echo "I find sush ".$s." at ".$i." ".$j.	//" in the ".$all_strings[$i]."";$sush = $s['Герой'];$sush_ind = $s['Index_man'];$flag = 1;	}	//echo $s."\n";	}
 	if ($flag == 1)	array_push($razbor, 'S');	else	array_push($razbor, '0');	}
 
 	//log	echo "RAZBOR ";//	//var_dump ($razbor);
 	// если в массиве есть и P и S	//if (search_ch_rechi($razbor)!=0)	{
 	}
 	if (search_ch_rechi($razbor) != 0)	{	var_dump ($arr_of_words[$i]);	//for ($q = 0; $q<count($arr_of_words[$i]); $q++)	echo $arr_of_words[$i][$q];	echo $sush." < - > ".$pril;	echo "";	/// попытка добавить строку в БД	//insert_to_BD($link, "QWERTY");	/// попытка добавить строку в БД	insert_to_BD($link, $sush, $sush_ind, $pril, $pril_ind);	}
 	// поиск минимального расстония между P и S	// это расстояние и есть пара слов которая должна	// попасть в базу после проверки на то что ранее не добавляли	// может помечать что автоматическое добавление
 	}	}
?> 
0
Aagira Aagira 3 года назад #
Кода пишешь код в комменте, помещай, пожалуйста, в теги

 <code> 
 


(Оффтоп небольшой. В твоем сообщении я поправила)
0
Aagira Aagira 3 года назад #
Поиск рода и числа перебором всего словаря… а нельзя сделать так, чтобы программа, дойдя до конца существительного, по его окончанию сузила круг поиска? Конечно, придется еще объяснить ей, что такое нулевое окончание. Но грамматические склонения тоже, ведь, не на пустом месте придуманы.
0
Мария Фомальгаут Мария Фомальгаут 3 года назад #
дойдя до конца существительного — в смысле?
0
Aagira Aagira 3 года назад #
Эта программа знает, что с существительными имеет дело? Или ее задача — выяснить, существительное это или нет?
0
Мария Фомальгаут Мария Фомальгаут 3 года назад #
Чтобы знать, существительное или нет, программа должна сравнить слово с списком существительных.
0
Aagira Aagira 3 года назад #
То есть, список уже есть, и не заполняется программой?
0
Мария Фомальгаут Мария Фомальгаут 3 года назад #
Да, есть список существительных. Список прилагательных. А мне надо список сущ+прил
0
Aagira Aagira 3 года назад #
Оба списка были тобой вручную заполнены, как я понимаю?

Ну, вот, скажем, видит программа последнюю букву «у», она может как-то пройтись по списку (первоначальная мысль была в том, чтобы по этой букве она определеляла падеж)? Или даже наоборот — в словарном виде: первая буква «у» — значит, открывает таблицу/столбец со словами на эту букву. Лучше бы, конечно, сделать как колонтитулы — хотя бы на буквы три (пока еще не те, на которые посылают лесом...)
Как образец, взять любой словарь.
0
Мария Фомальгаут Мария Фомальгаут 3 года назад #
Списки вручную, да

Это хорошо, а как это сделать? В РНР?
0
Aagira Aagira 3 года назад #
Давай в скайпе обсудим.
0
Мария Фомальгаут Мария Фомальгаут 3 года назад #
Хорошо
0
Дикий Запад Дикий Запад 3 года назад #
человеческий мозг принципиально отличается от компьютера, тот дискретный, а наш мозг аналоговый, а быстродействие аналоговой машинки для дискретной принципиально недостижимо
0
Мария Фомальгаут Мария Фомальгаут 3 года назад #
интересно, как бы сделал это мозг человека. Тоже стал бы перебирать все слова, или по первым буквам искал бы, грубо говоря? (я уж не говорю, что у человека в голове не слова, а образы, понятия, и при слове «автомобиль» активируются нейроны в понятиях — «техника» и «двигаться»)
0
Дикий Запад Дикий Запад 3 года назад #
Нет, если он хорошо работает, то просто создадутся цепочки случайных и порой невероятных связей
Сегодня на повестке дня совершенно замечательная фантастическая короткометражка Экзоид. Не то чтобы ...
Дамы и господа, вопрос на засыпку: кто-нибудь помнит фантастические миры, в которых во всяких технич...
Заметила удивительную вещь. Парадоксальную. Разбираем с программой-писателем гоголевского Вия. В ч...
Идея произведения   Сейчас думаю о других сюжетах. Думаю, как переписывают историю, историчес...

Все представленные на сайте материалы принадлежат их авторам.

За содержание материалов администрация ответственности не несет.