вторник, 1 мая 2007 г.

Эксперименты - 2

Потратив н-ое количество времени выяснил, что OpenNLP - это все-таки не совсем то, что хочется. Т.е. - оно, конечно, работает, но... Претензий много :) Например, то, как эта библиотека написана. Сразу видно тяжёлое детство в виде Java проекта :) Особенно меня потряс код вида:
class MyClass
{
   MyClass(StringBuilder sb): this (sb.ToString().ToCharArray())
   {
   }

   MyClass(char[] str)
   {
      ...
   }
}
И такое там везде... Неудивительно что столько памяти расходуется. Ну и сама работа библиотеки, хм... странная. Т.е. того, что я хочу - а хочу я предсказуемости результата парсинга - от нее не добиться. Поэтому опять переключился на Link Grammar .NET Lib. Тоже страшная :) Начать с того, что ее .Net Framework порт представляет собой смесь из трех проектов:
  1. на чистом Си
  2. на Managed С++
  3. на C#

А уж как они взаимодействуют друг с другом - это вообще песня :) Ну про то, что разобраться как работает Си кусочек практически невозможно я думаю можно и не упоминать...

MC++ проект использует часть классов, описанных в С# проекте. А тот, в свою очередь - активно пользуется классами написанными на MC++

В результате - 6 часов пытался научить эту библиотеку принимать на вход не строку с предложением, а массив слов предложения.

Примечание: нет, я конечно слышал о том, что MC++ - далеко не самый лучший язык. Но что настолько, я даже и не догадывался. Например вот такое:

int Sentence::separate_sentence(System::Collections::Generic::IList __gc* words, Sentence_s *sent) ;

Ну да ладно... Этот вопрос я все-таки решил. Впереди самое трудное - заставить Cи-часть взаимодействовать с моей базой данных, а не читать данные с диска.

Комментариев нет:

Отправить комментарий