Как использовать USE SharpNlp в моем приложении C # - PullRequest
4 голосов
/ 12 ноября 2010

Мне требуется пометка POS для моих файлов в корпусе.Я успешно выполнил инструкции по установке SharpNlp
Я использую двоичную версию

I created a new c# project in:       E:\sharp\sharpapp
location of Models Folder is:        E:\sharp\sharpapp\bin\Models
location of my SharpNlp Binary is:   E:\sharp\SharpNLP-1.0.2529-Bin

Я также выполнил инструкции по изменению обоих .configфайлы "ParseTree.Exe" и "ToolsExamples.Exe"

Теперь в моем проекте c # у меня есть класс tagging.cs, в котором я должен получить доступ к своим текстовым файлам корпуса и сделать пометки POS для этих файлов.Кто-нибудь может мне помочь, как я могу использовать SharpNlp для этого

Пожалуйста, предоставьте шаги для этого.

Ответы [ 2 ]

10 голосов
/ 12 ноября 2010

В двух словах, SharpNLP - это

  • порт для C # из OpenNLP Tools и OpenNLP MaxEnt
  • соединитель с WordNet
  • набором предварительно вычисленных моделей, в основном для вспомогательных модулей
  • на английском языке, таких как интеграция с SQLLite

Следует отметить, что порт библиотек OpenNLP является относительно неформальным, с различными изменениями имен классов и свойств, возможно, потеря сохранения функций и семантики и отсутствие очевидной связи с жизненным циклом исходных проектов Java.,Эта ситуация, вероятно, будет гарантировать, что со временем часть OpenNLP в SharpNLP будет больше похожа на дальних родственников, чем на сестер-близнецов ...

Тем не менее, можно использовать примеры и документацию от OpenNLP длядополняют относительно тонкий материал поддержки, доступный с SharpNLP .Между исходным кодом SharpNLP и такими ресурсами, как ссылка на API OpenNLP и OpenNLP wiki , можно, как правило, отображать вещи и соответствующим образом адаптироваться..

Свободный проводник может быть исследованием этого конкретного исходного файла , который использует OpenNLP способом, который кажется близким к тому, что вам может понадобиться.Обратите внимание, что имя меняется между OpenNLP и SharpNLP, например, POSTTaggerME класс становится MaximumEntropyPosTagger , а метод Parse () и его перегрузка превращаются в TagSentence () и т. П.

Более общий совет - понять ...
... последовательность шагов, обычно необходимых для выполнения POS-тегов .
Этоприблизительное описание очень высокого уровня, но, я думаю, полезное.

  • получить текст для разметки = строка (и) текста
  • Инициализировать текст parser
  • разобрать его = "массив" (или другой контейнер) с отдельными токенами т.е. словами и знаками препинания.
  • инициализирует POS-тегер, в частности, сообщает, какая модель должна использовать
  • , чтобы передать [упорядоченную] последовательность токенов в POS-тегер
  • Та, да!Используйте POS-теги для конечной цели вашего приложения НЛП.

Обратите внимание, как в приведенной выше последовательности предполагается, что модель легко доступна.
Модель представляет собой статистический «профиль»текст в целом, полученный при обучении Tagger набором текста, который легко помечается.
SharpNLP поставляется с моделью для общего английского языка, но для того, чтобы маркировать другие языки или если определенные корпуса, которые должны быть помечены, принадлежат к определенной области(например, медицинские отчеты или твиты или ...) может быть предпочтительнее переобучить тегер для повышения его точности.
Open / SharpNLP, так как большинство POS-тегеров, независимо от того, являются ли они автономными или их API, обычно включают функции для обученияих (= для создания модели с заданным образцом набора текста, который легко помечается), а также для проверки качества созданной модели / тегера (= для сравнения тегов, созданных в тестовом наборе, с тегами, ожидаемыми для этого набора).

1 голос
/ 18 октября 2013

Пожалуйста, прочитайте статью, которую я написал для этого.Он предоставит вам подробный пошаговый метод с примерами фрагментов кода.

Простой способ интеграции SharpNLP в ваш проект в Visual Studio

Надеюсь, это было полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...