You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Zero/WebSemanticService/semantic/Semantic.API.Proxy/SemanticApiProxy.cs

189 lines
8.3 KiB

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
}
}

Powered by TurnKey Linux.