Я хотел бы найти хороший способ выполнить извлечение термина в текстовых данных произвольной формы. В идеальном сценарии я мог извлечь существительные фразы по крайней мере из двух слов, которые включают какой-то контекст их использования. Это мой идеальный набор требований.
- Выделение словесной фразы
- Легкая интеграция в .NET-проекте
- Нет интеграции сторонних сервисов
Я уже провел некоторое исследование, и я добавил некоторые примечания ниже.
Существует множество различных библиотек НЛП. Большие соперники выглядят как NLTK и OpenNLP. Оба поддерживают токенизацию текстовых данных и извлечение среди других вещей, существительных фраз. Однако ни один из них не реализован в .NET и не требуется какой-то уровень IPC. Они оба имеют довольно высокие кривые обучения.
SharperNLP - это порт С# для OpenNLP. В 2006 году у него был небольшой шквал активности, но с тех пор он не сильно изменился.
Вот некоторые заметки от кого-то, кто пытался интегрироваться с NLTK в .NET-реализации с помощью IronPython.
Open Source NLP в С# 3.5 с использованием NLTK.
Самое простое решение, которое я нашел до сих пор, это SQL Server Integration Services Term Expression Transformation. Было очень просто настроить и запустить. Он умел извлекать значимые существительные фразы с высокой степенью точности. Однако он имеет ряд ограничений.
- Это пакет SSIS, отлично подходящий для анализа текста после факта, но не в режиме реального времени.
- Для этого требуется корпоративная лицензия SQL Server.
- Он поддерживает только английский язык без планов поддержки других языков.
Чтобы закрыть, я понимаю, что мои требования могут быть слишком строгими, поэтому, пожалуйста, не стесняйтесь отвечать любым решением, которое, по крайней мере, извлекает фрагменты фразы фразы фразы.