m36, спасибо за статью.
Очень хочется поиграть с парсером пролога, но изучать полноценно J пока не решился.
При копипасте Вашего кода в J807 Qt IDE, получаю различные вариации ошибок, в зависимости от того, вводить ли данные одним большим блоком или строка за строкой, например:
Вернувшись к той-же задаче через несколько лет нашел решение, которое занимает вместо сотен строк — одну и доступно приблизительно с конца семидесятых годов прошлого века:
awk -F '[^а-яА-Я]+' '{for(i=1;i<=NF;i++)if($i)w[tolower($i)]++}END{for(i in w)print i, w[i]}' *.txt
Возможно местами это решение чуть медленнее, чем моё но использует меньше памяти и, пожалуй, стоит гораздо меньших усилий.
К слову, свою программу для частотного анализа я называл «All Words Knower», даже не подозревая на тот момент о существовании программы awk. =)
Теперь, когда имеется относительно небольшой файл, в котором слова уже упорядочены — его обработка займет минут 5, можно посмотреть и процентное соотношение и, например, сколько процентов занимают существительные мужского рода в единственном числе и именительном падеже и т.п.
Про буквы не думал, но интересно, посмотрим.
Результат занимает 224 мб, хранится пока в виде текстовика в UTF-8. В кодировке win-1251 он-же весит 136 метров. Анализировался lib.rus.ec, только fb2 формат. В дальнейшем, наверное все данные буду переносить в какую-нибудь БД.
Для запуска stable diffusion можете попробовать:
https://github.com/leejet/stable-diffusion.cpp
Она базируется на той-же библиотеке ggml, что и llama.cpp
Вообще, загляните в:
https://github.com/ggerganov/ggml
Инференс разных моделей уже поддерживается.
chrome://tracing
Можно использовать как тул для профилирования своих (в т.ч. не веб) проектов.
Очень хочется поиграть с парсером пролога, но изучать полноценно J пока не решился.
При копипасте Вашего кода в J807 Qt IDE, получаю различные вариации ошибок, в зависимости от того, вводить ли данные одним большим блоком или строка за строкой, например:
|value error: goal
| prolog_code goal'sister_of(mary, X)'
|value error: parse
| prolog_code goal'sister_of(mary, fred)'
|spelling error
| sister_of(X,Y) :- female(X), parents(X, F, M), parents(Y, F, M).
| ^
Поможете разобраться?
Возможно местами это решение чуть медленнее, чем моё но использует меньше памяти и, пожалуй, стоит гораздо меньших усилий.
К слову, свою программу для частотного анализа я называл «All Words Knower», даже не подозревая на тот момент о существовании программы awk. =)
Про буквы не думал, но интересно, посмотрим.
goletas.com/csharp-collections/
На мой взгляд — очень качественный код, комментированный, добавление своего функционала заняло менее получаса.
Что касается библиотеки для работы с zip архивами — брал здесь:
www.icsharpcode.net/opensource/sharpziplib/
С этого-же сайта использую IDE (SharpDevelop).
Касательно кода — учту. Но, наверное это не та статья в которой код действительно нужен.