Сделал библиотеку для предобработки текстов, формирования term-text матрицы

Вероятно, доделал основу библиотеки для предобработки текстов, нужную мне периодически. Надоело каждый раз писать одно и то же — решил сделать библиотеку. Функционал ее очень простой — на вход ей подаются тексты — например, их можно импортировать из txt файлов. В одном файле может быть несколько текстов, разделенных заранее определенной последовательностью символов. Далее задается список операций, которые можно произвести над текстом в любом количестве и любой последовательности. Сейчас доступны следующие операции:

  • токенизация (на слова, предложения, абзацы)
  • стемминг (для русского языка)
  • удаление email
  • удаление URL
  • хештегов
  • удаление JS и HTML
  • удаление пунктуации
  • удаление коротких слов
  • удаление самостоятельных чисел (в строке «по небу летело 5 пингвинов» будет удалено «5»)
  • удаление стоп слов (для русского языка)
  • формирование n-грамм

Применив операции к текстам, получаем очищенные от ненужного хлама тексты. Каждый текст представлен объектом класса Token (даже исходный нетокенизированный). При этом Token включает в себя список токенов (по умолчанию он null). Допустим, текст был подвергнут токенизации, в результате чего мы получили список слов — эти токены можно (но не обязательно) сделать дочерними токенами объекта текста.

Далее из полученных токенов (хранящих в себе id текста) или токенов + текстов можно сформировать term-text матрицу. Матрицу можно выгрузить в csv (реализацию для других форматов пока не сделал — собственно, думаю, и этого достаточно, и только это мне и нужно было). Подумал, что и импорт, и экспорт тоже стоит добавить в библиотеку.

Библиотека находится на гитхабе ТУТ. Вероятно, многое еще придется подправить и добавить: подправлю и добавлю.

Разрабатывая ее, попробовал немного TDD. Библиотека сделана на C#, .NET Standart. Тесты на XUnit. В солюшене есть небольшое консольное демо приложение.

По плану дальше сделать WPF и/или ASP.NET CORE MVC приложение, где будет использоваться эта библиотека (так как не пробовал ранее писать ничего ни на WPF ни на ASP.NET CORE). Для десктопных приложений использовал только WinForms (ну и Swing и JAVA FX на джава больше года назад)  — надо заполнить этот пробел.

Множественная линейная регрессия на C#

Поскольку на прошлой неделе сделал реализацию работу с матрицами на c# — самое время ими воспользоваться. Собственно, пока что сделал только множественную линейную регрессию. Класс для работы с ней находится ВОТ ТУТ.

Для начала создаем объект множественной линейной регрессии: Читать далее Множественная линейная регрессия на C#

Простая линейная регрессия на C#

Как уже писал, занимаюсь освоением самых- самых основ machine learning. В курсах и литературе по ML обычно начинают с простой линейной регрессии. Предварительно обучив по массиву значений одной независимой переменной (X) и массиву значений зависимой от ней второй переменной (Y), можно для какого-либо x получить предположительное y. Например, по росту предположить вес.

Код написал на c#. Он находится на гитхабе — ВОТ ТУТ . Это библиотека, в которой на настоящий момент нет ничего, кроме класса простой линейной регрессии 🙂 Читать далее Простая линейная регрессия на C#