using System.Collections.Generic;
using ZeroLevel.Services.Semantic;
namespace Semantic.API.Proxy
{
///
/// Предоставляет доступ к Prime Semantic API
///
public sealed class SemanticApiProxy
: BaseProxy
{
public SemanticApiProxy(string baseUri)
: base(baseUri)
{
}
#region Split to words
///
/// Разделение текста на слова
///
/// Список слов
public IEnumerable ExtractWords(string text)
{
return Post>("/api/text/words", text);
}
///
/// Разделение текста на слова, без повторов
///
/// Список слов
public IEnumerable ExtractUniqueWords(string text)
{
return Post>("/api/text/words/unique", text);
}
///
/// Разделение текста на слова без стоп-слов и повторов
///
/// Список слов
public IEnumerable ExtractUniqueWordsWithoutStopWords(string text)
{
return Post>("/api/text/words/clean", text);
}
#endregion
#region Stemming
///
/// Разделение текста на стемы (основы слов)
///
/// Список стемов
public IEnumerable ExtractStems(string text)
{
return Post>("/api/stem", text);
}
///
/// Разделение текста на стемы (основы слов) без повторов
///
/// Список стемов
public IEnumerable ExtractUniqueStems(string text)
{
return Post>("/api/stem/unique", text);
}
///
/// Разделение текста на токены, на основе стемов
///
/// Список токенов (оригинальное слово, стем, позиция в тексте)
public IEnumerable ExtractUniqueStemsWithoutStopWords(string text)
{
return Post>("/api/stem/clean", text);
}
#endregion
#region Lemmatization
///
/// Разделение текста на леммы (начальные формы слов)
///
/// Список лемм
public IEnumerable ExtractLemmas(string text)
{
return Post>("/api/lemma", text);
}
///
/// Разделение текста на леммы (начальные формы слов) без повторов
///
/// Список лемм
public IEnumerable ExtractUniqueLemmas(string text)
{
return Post>("/api/lemma/unique", text);
}
///
/// Разделение текста на леммы (начальные формы слов) без повторов и стоп-слов
///
/// Список лемм
public IEnumerable ExtractUniqueLemmasWithoutStopWords(string text)
{
return Post>("/api/lemma/clean", text);
}
#endregion
#region Words occurences
///
/// Поиск вхождений слов в текст
///
/// Текст
/// Массив слов для поиска
/// Список токенов (слово, позиция)
public IDictionary> SearchWordsInTextDirectly(string text, string[] words)
{
return Post>>("/api/text/occurences/words", new WordsSearchRequest
{
Text = text,
Words = words
});
}
///
/// Поиск вхождений слов в текст, на основе стемминга
///
/// Текст
/// Массив слов для поиска
/// Список токенов (слово, стем, позиция)
public IDictionary> SearchWordsInTextByStemming(string text, string[] words)
{
return Post>>("/api/stem/occurences/words", new WordsSearchRequest
{
Text = text,
Words = words
});
}
///
/// Поиск вхождений слов в текст, на основе лемматизации
///
/// Текст
/// Массив слов для поиска
/// Список токенов (слово, лемма, позиция)
public IDictionary> SearchWordsInTextByLemmas(string text, string[] words)
{
return Post>>("/api/lemma/occurences/words", new WordsSearchRequest
{
Text = text,
Words = words
});
}
#endregion
#region Phrase occurences
///
/// Поиск вхождений фраз в текст
///
/// Текст
/// Массив фраз для поиска
/// Список фраз в тексте соответствующих поисковому запросу
public IDictionary> SearchPhrasesInTextDirectly(string text, string[] phrases)
{
return Post>>("/api/text/occurences/phrases", new WordsSearchRequest
{
Text = text,
Words = phrases
});
}
///
/// Поиск вхождений фраз в текст, на основе стемминга
///
/// Текст
/// Массив фраз для поиска
/// Список фраз в тексте соответствующих поисковому запросу
public IDictionary> SearchPhrasesInTextByStemming(string text, string[] phrases)
{
return Post>>("/api/stem/occurences/phrases", new WordsSearchRequest
{
Text = text,
Words = phrases
});
}
///
/// Поиск вхождений фраз в текст, на основе лемматизации
///
/// Текст
/// Массив фраз для поиска
/// Список фраз в тексте соответствующих поисковому запросу
public IDictionary> SearchPhrasesInTextByLemmas(string text, string[] phrases)
{
return Post>>("api/lemma/occurences/phrases", new WordsSearchRequest
{
Text = text,
Words = phrases
});
}
#endregion
}
}