Показаны сообщения с ярлыком TextClassification. Показать все сообщения
Показаны сообщения с ярлыком TextClassification. Показать все сообщения

суббота, 8 августа 2026 г.

TextClassification, FileSplitterByLines, TextSplitterByLines, StartApp

TextClassification, FileSplitterByLines, TextSplitterByLines

1. FileSplitterByLines

2. TextClassification

https://giga.chat/link/gcsfkQAOxg

Вот сейчас сработало PS D:\projects\vs02\2606\TextClassification\FileSplitterByLines\FileSplitterByLines\bin\debug\net10.0> .\FileSplitterByLines.exe Conversation_01.txt 5 

Всего строк: 1757 Создан файл: Conversation_01.txt_part1.txt (строки 1-351) 

Создан файл: Conversation_01.txt_part2.txt (строки 352-702) 

Создан файл: Conversation_01.txt_part3.txt (строки 703-1053) 

Создан файл: Conversation_01.txt_part4.txt (строки 1054-1404) 

Создан файл: Conversation_01.txt_part5.txt (строки 1405-1757) Готово.

-----------------------------------------------------------------

3. Create Theme 

D:\Projects\VS02\2606\TextClassification\Copilot\09-08-2026_04-42-18

Два варианта классификации Текста

Themes1.txt

Themes2.txt

-----------------------------------------------

Start App from Powershell

pwsh>.\FileSplitterByLines.exe Conversation_01.txt 10

D:\Projects\VS02\2606\TextClassification\FileSplitterByLines\FileSplitterByLines.slnx

D:\Projects\VS02\2606\TextClassification\FileSplitterByLines\FileSplitterByLines\FileSplitterByLines.csproj

D:\Projects\VS02\2606\TextClassification\FileSplitterByLines\FileSplitterByLines\Conversation_01.txt

PS D:\projects\vs02\2606\TextClassification\FileSplitterByLines\FileSplitterByLines\bin\debug\net10.0> .\FileSplitterByLines.exe Conversation_01.txt 10

Всего строк: 1757

Создан файл: Conversation_01.txt_part1.txt (строки 1-175)

Создан файл: Conversation_01.txt_part2.txt (строки 176-350)

Создан файл: Conversation_01.txt_part3.txt (строки 351-525)

Создан файл: Conversation_01.txt_part4.txt (строки 526-700)

Создан файл: Conversation_01.txt_part5.txt (строки 701-875)

Создан файл: Conversation_01.txt_part6.txt (строки 876-1050)

Создан файл: Conversation_01.txt_part7.txt (строки 1051-1225)

Создан файл: Conversation_01.txt_part8.txt (строки 1226-1400)

Создан файл: Conversation_01.txt_part9.txt (строки 1401-1575)

Создан файл: Conversation_01.txt_part10.txt (строки 1576-1757)

-------------------------------
TextClassification

-------------------------------

D:\Projects\VS02\2606\TextClassification\Copilot\09-08-2026_04-42-18

Два варианта классификации Текста

Themes1.txt

Themes2.txt

-------------------------------------------------------------

StartApp

https://giga.chat/link/gcsfkQAOxg
-------------------------------------------------------------

Файл на месте, он существует и имеет правильный размер. Ошибка CommandNotFoundException в PowerShell при наличии файла почти всегда означает одну из двух вещей:

  1. Проблема с рабочей директорией для входного файла. Программа ищет Conversation_01.txt не в папке net10.0, а в корне диска D:\.
  2. Блокировка со стороны системы (SmartScreen или антивирус). Windows 10/11 часто блокирует запуск свежесобранных .exe файлов «от неизвестного издателя» до тех пор, пока вы не подтвердите доверие к ним.

Вот как это исправить по шагам:

Шаг 1. Проверьте наличие текстового файла Убедитесь, что файл Conversation_01.txt лежит в той же папке: ...\bin\debug\net10.0. Если его там нет, положите его туда или укажите полный путь к нему.

Шаг 2. Попробуйте запустить через точку-слэш (явное указание пути) В PowerShell текущая директория обозначается точкой (.). Это самый надежный способ обойти возможные настройки политик выполнения:

powershell
.\FileSplitterByLines.exe Conversation_01.txt 5

Если программа запустится, значит, проблема была именно в том, как PowerShell разрешает имена команд.

Шаг 3. Запустите от имени администратора (если Шаг 2 не помог)

  • Закройте окно терминала.
  • Нажмите кнопку «Пуск», введите PowerShell.
  • В найденном приложении нажмите правой кнопкой мыши → «Запуск от имени администратора».
  • Снова перейдите в вашу папку командой cd и попробуйте выполнить .\FileSplitterByLines.exe...

Шаг 4. Разрешите выполнение в SmartScreen Если после запуска появилось синее окно «Система Windows защитила ваш компьютер» или ошибка о нарушении прав доступа:

  1. Перейдите в папку ...\bin\debug\net10.0 через обычный Проводник.
  2. Щелкните правой кнопкой мыши по FileSplitterByLines.exe → «Свойства».
  3. На вкладке «Общие» внизу поставьте галочку «Разблокировать», если она там есть, и нажмите ОК.
  4. Либо прямо в этом окне нажмите «Выполнить в любом случае».

Шаг 5. Проверьте журнал событий Windows Если консоль открывается и тут же закрывается с ошибкой, которую вы не успеваете прочитать:

  1. Нажмите Win + R, введите eventvwr.msc и нажмите Enter.
  2. Перейдите в «Журналы Windows» -> «Приложение».
  3. Ищите последнюю ошибку (Error) от источника .NET Runtime или Windows Error Reporting. Текст ошибки подскажет, чего не хватает программе (например, нативных библиотек).

Шаг 6. Проверка зависимостей .NET Так как у вас проект на .NET 10.0 (предположительно превью-версия), убедитесь, что соответствующий SDK установлен корректно. Иногда помогает принудительная очистка временных артефактов сборки:

powershell
dotnet clean
dotnet build --configuration Debug

Скорее всего, вам поможет комбинация Шага 2 (запуск через .\) и Шага 3 (разблокировка файла в свойствах).

Вот сейчас сработало PS D:\projects\vs02\2606\TextClassification\FileSplitterByLines\FileSplitterByLines\bin\debug\net10.0> .\FileSplitterByLines.exe Conversation_01.txt 5 Всего строк: 1757 Создан файл: Conversation_01.txt_part1.txt (строки 1-351) Создан файл: Conversation_01.txt_part2.txt (строки 352-702) Создан файл: Conversation_01.txt_part3.txt (строки 703-1053) Создан файл: Conversation_01.txt_part4.txt (строки 1054-1404) Создан файл: Conversation_01.txt_part5.txt (строки 1405-1757) Готово.

Почему это не работало ?

Это сработало, потому что вы использовали явное указание пути (.\).

В PowerShell (как и в современных версиях Windows по умолчанию) действуют строгие правила безопасности. Вот почему ваша первая команда FileSplitterByLines.exe ... не работала:

  1. Приоритет папок из переменной PATH. Когда вы вводите просто имя файла без пути, оболочка ищет его только в системных директориях (указанных в переменной среды PATH), например, C:\Windows\System32. Она принципиально не ищет исполняемые файлы в текущей рабочей папке, чтобы защитить систему от случайного запуска вредоносных программ (троянов), которые могут лежать в скачанном архиве.
  2. **Оператор .\ как явное согласие.** Точка означает «текущая директория». Записывая .\ИмяФайла, вы буквально говорите системе: «Я нахожусь именно здесь, я знаю, что делаю, и даю прямое разрешение запустить этот конкретный файл из этой конкретной папки». Это снимает ограничение безопасности.

Кстати, это стандарт поведения для всех Unix-подобных систем (Linux, macOS), где терминал также никогда не ищет программы в текущей папке по умолчанию — там всегда пишут ./script.sh.

Почему программа создала 5 файлов ровно по 351 строке?

Ваш алгоритм работает абсолютно корректно с точки зрения целочисленного деления:

  • Всего строк: 1757
  • Количество частей: 5
  • Расчет базовой части: 1757/5=3511757 / 5 = 351 (целая часть)
  • Остаток: 1757(mod5)=21757 \pmod 5 = 2

Логика вашего цикла распределяет строки так:

  • Первые четыре файла получают строго по 351 строке (351×4=1404351 \times 4 = 1404).
  • Последний (пятый) файл забирает все оставшиеся строки вместе с остатком: 351+2=353351 + 2 = 353 строки (с 1405-й по 1757-ю включительно).

Если бы вам нужно было распределить остаток более равномерно (например, сделать первые два файла чуть длиннее), логику пришлось бы усложнять, вычисляя границы через умножение индекса на (totalLines + parts - 1) / parts (метод округления вверх при делении). Но для простого разрезания текстового дампа ваш текущий вариант идеален.

Как запускать программу проще

Чтобы больше не писать каждый раз .\, у вас есть три варианта:

  1. Добавить точку в список разрешенных путей (только для продвинутых пользователей). Можно выполнить команду $env:Path += ";.", но Microsoft настоятельно не рекомендует добавлять текущую директорию в глобальную переменную PATH из соображений безопасности.
  2. Использовать классический CMD вместо PowerShell. Откройте обычную командную строку (cmd.exe). В ней рабочая папка имеет приоритет, и команда FileSplitterByLines.exe Conversation_01.txt 5 сработает сразу без всяких префиксов.
  3. Настроить параметры запуска в Visual Studio. Как уже обсуждалось ранее, если вы зайдете в свойства проекта -> вкладка «Отладка» и пропишете аргументы там, то сможете запускать приложение одной кнопкой F5 прямо из IDE, вообще не заходя в терминалы.