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