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