C/C++:
int sol_GetFetchedSentenceW( HGREN_SBROKER hSegmenter, const wchar_t * SentenceBuffer )
int sol_GetFetchedSentenceA( HGREN_SBROKER hSegmenter, const char * SentenceBuffer )
int sol_GetFetchedSentence8( HGREN_SBROKER hSegmenter, const char * SentenceBufferUtf8 )
C#:
int sol_GetFetchedSentenceW( IntPtr hSegmenter, StringBuilder SentenceBuffer )
string sol_GetFetchedSentenceFX( IntPtr hSegmenter )
Delphi:
function sol_GetFetchedSentenceW( hSegmenter: PInteger; SentenceBuffer: PWideChar ): Integer;
function sol_GetFetchedSentenceA( hSegmenter: PInteger; SentenceBuffer: PAnsiChar ): Integer;
function sol_GetFetchedSentence8( hSegmenter: PInteger; SentenceBufferUtf8: PAnsiChar ): Integer;
PHP:
sol_GetFetchedSentence8( $hSegmenter )
Аргументы:
hSegmenter - дескриптор перечислителя, который возвратила функция sol_CreateSentenceBrokerMem[W,A,8].
SentenceBuffer - указатель на область памяти, куда будет скопировано предложение.
Возвращает:
Количество символов в скопированном предложении для W и A функций, количество скопированных байтов для 8 функции. PHP-версия возвращает строку с предложением в кодировке utf-8. C#-функция sol_GetFetchedSentenceFX также возвращает строку.
Размер буфера, необходимого для копирования предложения, следует определять с помощью вызова sol_GetFetchedSentenceLen или использовать значение, которое вернула sol_FetchSentence.
Для платформы .NET удобнее использовать специальную функцию-обертку sol_GetFetchedSentenceFX, которая возвращает строку с текстом предложения и избавляет от необходимости в манипуляциях с объектом .NET класса StringBuilder.
Функции могут вызываться одновременно из нескольких потоков, но нужно учитывать stateful характер всего комплекта функций сегментации, то есть вызов sol_FetchSentence из одного потока приведет к ошибке, если в это время выполняется вызов sol_GetFetchedSentenceXXX из других потоков.
В состав SDK грамматического словаря входит небольшой пример использования API сегментатора и токенизатора. Исходный текст этой программы также доступен по этой ссылке.
Смотрите подробное описание алгоритмов токенизации.
C++:
const wchar_t Text[] = L"...";
while(true)
{
int rc = sol_FetchSentence( hSegmenter );
if( rc<0 )
break;
wchar_t *sentence_buf = new wchar_t[ rc+1 ];
sol_GetFetchedSentenceW( hSegmenter, sentence_buf );
// ...
delete[] sentence_buf;
}
sol_DeleteSentenceBroker(hSegmenter);
C#:
IntPtr hSegmenter = GrammarEngine.sol_CreateSentenceBrokerMemW( hEngine, text, GrammarEngineAPI.RUSSIAN_LANGUAGE );
while( GrammarEngine.sol_FetchSentence( hSegmenter )>=0 )
{
string sentence = GrammarEngine.sol_GetFetchedSentenceFX( hSegmenter );
// ...
}
GrammarEngine.sol_DeleteSentenceBroker( hSegmenter );
PHP:
$Text = "А.С. Пушкин знал, что такое 3.141";
$hSegmenter = sol_CreateSentenceBrokerMem8( $hEngine, $Text, RUSSIAN_LANGUAGE );
while( sol_FetchSentence( $hSegmenter )>=0 )
{
$Sentence = sol_GetFetchedSentence8( $hSegmenter );
echo "sentence=", $Sentence, "\n";
}
sol_DeleteSentenceBroker($hSegmenter);
Приобретение SDK грамматического словаря
API layer C++ source code: grammar_engine_api.cpp
Вернуться к списку функций API
© Elijah Koziev 2010
Поисковая система
SDK Поисковой системы
Экранный переводчик
|
|
изменено 29-Oct-11 | ||||||||||||||||||||||||||||||||||||||