Как упомянуто выше, вы можете записать свои журналы в mongoDb, а затем выполнить аналитику самостоятельно, проблема здесь заключается в том, что вам нужно пометить правильную классификацию и неправильную (например, TP, FP и т. Д.)
[112 ] Если вы хотите видеть часто задаваемые вопросы, вы можете попытаться объединить все похожие предложения (сначала наивно):
Рассчитать для каждого предложения сумму всех векторов слов и затем вычислите косинусное расстояние между ними, вот хорошее начало: https://stackoverflow.com/a/35092200/1340604
Кстати, AFAIK Rasa предлагает аналитический инструмент как часть их лицензия основного предприятия Rasa
Если конфигурация у Вас есть работы теперь, почему путаница с ним? Это не кажется на идентификацию каких-то конкретных потребностей или проблем с кодом как есть
, я уверен, что набор типов OO мог толпиться вокруг и предложить различные рефакторинги здесь так, чтобы корректные обязанности и роли уважали, и кто-то мог бы даже попробовать к рожку для обуви в шаблоне разработки или два. Но код, который Вы имеете теперь, прост и кажется, что не имеет никаких проблем - я сказал бы, оставляют его.
Я реализовал уровень DAL, в основном делая то, что NHibernate делает, но вручную. То, что делает NHibernate, создают Прокси-класс, который наследовался Вашему Объекту области (который должен иметь все его поля, отмеченные как виртуальные). Весь код доступа к данным входит в переопределения свойства, его довольно изящное на самом деле.
я упростил, это несколько при наличии моих Репозиториев заполняет сами простые свойства и только использование прокси для Ленивой загрузки. То, что я закончил, является рядом классов как это:
public class Product {
public int Id {get; set;}
public int CustomerId { get; set;}
public virtual Customer Customer { get; set;}
}
public class ProductLazyLoadProxy {
ICustomerRepository _customerRepository;
public ProductLazyLoadProxy(ICustomerRepository customerRepository) {
_customerRepository = customerRepository;
}
public override Customer {
get {
if(base.Customer == null)
Customer = _customerRepository.Get(CustomerId);
return base.Customer
}
set { base.Customer = value; }
}
}
public class ProductRepository : IProductRepository {
public Product Get(int id) {
var dr = GetDataReaderForId(id);
return new ProductLazyLoadProxy() {
Id = Convert.ToInt(dr["id"]),
CustomerId = Convert.ToInt(dr["customer_id"]),
}
}
}
, Но после записи приблизительно 20 из них я просто сдался и изучил NHibernate с Linq2NHibernate для запросов и FluentNHibernate для конфигурации в наше время, контрольно-пропускные пункты ниже чем когда-либо.
Скорее всего, Ваше приложение имеет свою доменную логическую установку в сценарии транзакции . Для реализаций.NET, которые используют сценарий транзакции, который Martin Fowler рекомендует использованию шлюз данных таблицы шаблон..NET оказывает хорошую поддержку для этого шаблона, потому что шаблон шлюза данных таблицы является большим с официальный набор документов , который Microsoft реализует с ее классами Типа набора данных.
инструменты Various в среде Visual Studio должны повысить Вашу производительность. То, что DataSets может легко быть связан с данными к различным средствам управления (как DataGridView) делает его хорошим выбором для управляемых данными приложений.
, Если Ваша бизнес-логика более сложна, чем несколько проверок , модель предметной области становится хорошим вариантом. Действительно обратите внимание, что модель предметной области идет с совершенно другим набором требований доступа к данным!
Это может быть слишком радикальным для Вас и действительно не решает вопрос, но как насчет того, чтобы полностью фрагментировать Ваш слой данных и выбрать ORM? Вы сохраните большое дублирование кода, которое принесет пребывание в течение приблизительно одной недели на DAL.
то, Что в стороне, шаблон Вы используете, напоминает шаблон репозитория, вид. Я сказал бы, что Ваши опции