Я являюсь майнером данных, поэтому я трачу много времени на преобразование необработанных данных различными способами, чтобы обеспечить потребление с помощью прогнозных моделей.Например, прочитайте файл в определенном формате, токенизируйте, запрограммируйте и спроектируйте в какое-нибудь числовое представление.За прошедшие годы я разработал богатый набор методов для выполнения большинства задач по обработке данных, о которых я только могу подумать, но у меня нет хорошего способа настройки этих компонентов всеми, кроме самых элементарных способов - обычно то, что я делаю, очень много.вызовов конкретных методов в исходном коде, который зависит от конкретной задачи.Сейчас я пытаюсь реорганизовать свои библиотеки во что-то более приятное, но я не слишком уверен, что это такое.
Мое текущее мышление состоит в том, чтобы иметь список функциональных объектов, каждый из которых определяет некоторый метод (скажем, операция (...)), которые вызываются последовательно, каждый из которых обрабатывает содержимое некоторого потока данных посредством ссылки.или потребляя вывод предыдущего функционального объекта.Это близко к тому, что я хочу, но поскольку тип вводимых и выводимых данных будет различаться, использование обобщений становится очень трудным.Чтобы использовать приведенный выше пример, я хотел бы пропустить что-то через этот «конвейер», который обрабатывает данные, такие как:
input: string filename
filename -> collection of strings
collection<string> -> (stemming, stopword removal) -> collection of strings
collection<string> -> (tokenize) -> collection of string arrays
collection<string[]> -> (gram-ify) -> augment individual token strings with n-grams -> collection of string arrays
collection<string[]> -> projection into numeric vectors -> collection< double[] >
, это простой пример, но представьте, что у меня есть сотни таких компонентов, и яЯ хотел бы добавить их в некоторый поток данных.это соответствует моему простому в настройке требованию - я мог легко построить конвейерную фабрику, которая читает какой-нибудь файл yaml и создает его.Тем не менее, шаблоны дизайна компонентов меня уже озадачили?как выглядят соответствующие интерфейсы?кажется, что единственный простой способ сделать что-то здесь - это передать объекты, по существу покончить с объектами (или передать некоторый объект контекста, который имеет переменную-член Object), затем проверить на совместимость при вводе, выбрасывая исключения во время выполнения,оба варианта кажутся одинаково плохими.однако, я чувствую, что я близок к действительно хорошей и гибкой системе.ребята, можете ли вы помочь мне протолкнуть это через забор?