Как можно скачать все сообщения из определенного раздела на форуме 4pda и использовать их для обучения нейронной сети?

Как можно эффективно извлечь информацию из сложных веток на форуме 4pda, где многое пропускается из-за объема информации, чтобы потом использовать их для формирования полной картины на определенную тему с помощью нейросети типа chatgpt/gemini/claude?
  • 8 июня 2024 г. 3:51
Ответы на вопрос 2
Для скачивания всех сообщений из определенного раздела на форуме 4pda вы можете использовать специальные web-скраперы или API, если он предоставляется. Затем вы можете сохранить все сообщения в текстовый файл или базу данных для дальнейшего использования.

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

Для формирования полной картины на определенную тему с помощью нейронной сети типа chatgpt/gemini/claude, можно использовать уже извлеченные и обработанные данные из форума 4pda. Нейронная сеть будет обучаться на этих данных и сможет генерировать тексты на заданную тему или отвечать на вопросы на основе обученной информации.

Важно помнить о необходимости соблюдения авторских прав при использовании текстов с форума и внимательно следить за качеством данных, чтобы обучение нейронной сети было эффективным и результативным.
4pda основан на ip.board, все загружается без танцев с бубном, только осторожно, без авторизации получаются другие страницы чуть в ином формате. Вот пример кода на основе simple_html_dom : 
<?php
include('simple_html_dom.php');

// ссылка на первую страницу темы
define('START_URL','https://4pda.to/forum/index.php?showtopic=1084129');
// количество страниц &st= из ссылки » в навигаторе по страницам
define('PAGES_CNT',580);

@mkdir('data');

for($i=0;$i<=PAGES_CNT;$i+=20)
{
	// формируем url
	$url=START_URL.($i==0?'':'&st='.$i);
	// имя кеш файла чтобы не загружать повторно
	$cache_fn='data/'.md5(START_URL).'.'.$i.'.html';
	if(!file_exists($cache_fn))
	{
		// Загружаем страницу
		$data=file_get_contents($url);
		// сохраняем страницу в кеше
		file_put_contents($cache_fn,$data);
		// пауза между запросами к серверу для защиты его от ddos
		sleep(1);
	} else
	{
		// читаем из кеша
		$data=file_get_contents($cache_fn);
	}

	$html=str_get_html($data);
	$num=0;
	foreach($html->find('div[class]:not([class=""]') as $post)
	{ // перебираем посты в теме
		// пропускаем первый пост темы, он дублируется на каждой странице
		if($num++==0) continue;
		// выводим пост на экран
		$post_html=$post->find('div.post_body',0)->text();
		echo $post_html.PHP_EOL;
	}
	// вставляем разделитель между постами
	echo '<hr/>'.PHP_EOL;
	$html->clear();
}
?>

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

Страницы можешь вручную указать for($i=0;$i<=PAGES_CNT;$i+=20) вместо 0 - начальный (с шагом 20) и PAGES_CNT конечный пост.

Вместо текстового представления $post_html=$post->find('div.post_body',0)->text(); можешь сложнее структуру сообщения анализировать, выявляя цитирования и к примеру исключая их из текста (они занимают большую часть всего, дублируя многократно информацию).

Конкретно этот пример не влезет в контекстное окно бесплатного claude - это 70к токенов. Поэтому дели на куски.
Похожие вопросы