используя System; с использованием System.Collections.Generic; с использованием System.Linq; с использованием System.Text; с использованием System.Threading.Tasks; с использованием PanGu.Dict; с использованием PanGu.Framework; с использованием PanGu.Match; с использованием PanGu.Setting; с использованием PanGu.HighLight; с использованием Lucene.Net.Analysis; используя System.IO; с использованием PanGu; с использованием System.Configuration;
Пространство имён Pangu.Helper
{ общественный класс PanguHelper {
private volatile static PanguHelper _instance = null; приватный статический объект только для чтения lockHelper = новый объект(); private PanguHelper() { }
/// <summary> [По умолчанию pangu.xml профиль по тому же пути] /// </summary> /// <returns></returns> public static PanguHelper ShareHelper { Получить { если (_instance == null) { Замок (LockHelper) { если (_instance == null) { _instance = новый PanguHelper(); string configFile = ConfigurationManager.AppSettings["PANGU_CONFIG"] + ""; if (configFile != "") { _instance. Use(configFile); } } } }
вернуться _instance; } }
/// <summary> Инициализировать указанный конфигурационный файл /// </summary> <param name="configFile"> pangu configuration file</param> public void Use (string configFile) { PanGu.Segment.Init(configFile); }
/// <summary> Получите описание части речи /// </summary> <param name="pos"> перечисление частей речи</param> /// <returns></returns> public string GetPosDescrip{filter}t(POS pos) { Switch (POS) { Дело ПЛОХОЕ. POS_UNK: вернуть «неизвестную часть речи»; Дело ПЛОХОЕ. POS_D_K: возврат «заднего компонента»; Дело ПЛОХОЕ. POS_D_H: вернуть «предшествующую компоненту»; Дело ПЛОХОЕ. POS_A_NZ: вернуть «другое собственное имя»; Дело ПЛОХОЕ. POS_A_NX: возврат «иностранного персонажа»; Дело ПЛОХОЕ. POS_A_NR: вернуть «имя человека»; Дело ПЛОХОЕ. POS_D_Z: вернуть «статусное слово»; Дело ПЛОХОЕ. POS_A_NT: возвращение «корпуса институтов»; Дело ПЛОХОЕ. POS_A_NS: вернуть «название места»; Дело ПЛОХОЕ. POS_D_Y: вернуть «морфема настроения слова настроения»; Дело ПЛОХОЕ. POS_D_X: вернуть «неморфемное слово»; Дело ПЛОХОЕ. POS_D_W: возврат «пунктуации»; Дело ПЛОХОЕ. POS_D_T: вернуть «слово времени»; Дело ПЛОХОЕ. POS_D_S: возврат «место слов»; Дело ПЛОХОЕ. POS_D_V: вернуть «глагольный морфем»; Дело ПЛОХОЕ. POS_D_U: вернуть «морфему частицы частицы»; Дело ПЛОХОЕ. POS_D_R: вернуть «местоимение местоимения морфема»; Дело ПЛОХОЕ. POS_A_Q: вернуть «кванторный кванторный морфем»; Дело ПЛОХОЕ. POS_D_P: вернуть «предлог»; Дело ПЛОХОЕ. POS_D_MQ: возврат «квантор»; Дело ПЛОХОЕ. POS_A_M: вернуть «число, число, число»; Дело ПЛОХОЕ. POS_D_O: возвращение «ономатопея»; Дело ПЛОХОЕ. POS_D_N: вернуть «морфему существительного»; Дело ПЛОХОЕ. POS_D_F: вернуть «азимутальное слово азимут морфема»; Дело ПЛОХОЕ. POS_D_E: вернуть «морфему междомения»; Дело ПЛОХОЕ. POS_D_L: вернуть «идиому»; Дело ПЛОХОЕ. POS_D_I: возврат «идиома»; Дело ПЛОХОЕ. POS_D_D: вернуть «наречие наречие морфема»; Дело ПЛОХОЕ. POS_D_C: вернуть «морфему конъюнктивного соединения»; Дело ПЛОХОЕ. POS_D_B: return «для различия слов для различения морфем»; Дело ПЛОХОЕ. POS_D_A: вернуть «прилагательный морфема»; } возврат «неизвестная часть речи»; }
/// <summary> Получите причастие [Original Wordinfo] /// </summary> <param name="content"> содержимое слова, которое должно быть разделено</param> <param name="matchOptions"> используйте опции совпадения</param> <название параметра="matchParameter"> использовать параметр совпадения</param> /// <returns></returns> public ICollection<WordInfo> GetSegmentWords(string content, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Сегментный сегмент = новый Сегмент(); ICollection<WordInfo> words = сегмент. DoSegment(content, matchOptions, matchParameter); ответные слова; }
/// <summary> Получите причастие /// </summary> <param name="content"> содержимое слова, которое должно быть разделено</param> <param name="matchOptions"> Опции совпадения используются, а не по умолчанию</param> <название параметра="matchParameter" > использовать параметр совпадения, а не по умолчанию</param> публичный список<string> GetSplitWords (string content, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Сегментный сегмент = новый Сегмент(); ICollection<WordInfo> words = сегмент. DoSegment(content,matchOptions,matchParameter); <string> List list = новый List<string>(); foreach (WordInfo слово в словах) { Список. Add(word. Слово); } список возвратов; }
/// <summary> Получите причастие указанной частоты слова /// </summary> <param name="content"> содержимое слова, которое должно быть разделено</param> <param name="частота"> частота слова</param> <param name="matchOptions"> Опции совпадения используются, а не по умолчанию</param> <название параметра="matchParameter" > использовать параметр совпадения, а не по умолчанию</param> /// <returns></returns> публичный список<string> GetSplitWordsByFrequency (содержание строк, двойная частота, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Сегментный сегмент = новый Сегмент(); ICollection<WordInfo> words = сегмент. DoSegment(content, matchOptions, matchParameter);
<string> List list = новый List<string>(); foreach (WordInfo слово в словах) { если (частота == слово. Частота) { Список. Add(word. Слово); } } список возвратов; }
/// <summary> Получите причастие с заданным весом /// </summary> <param name="content"> содержимое слова, которое должно быть разделено</param> <param name="ранг"> вес</param> <param name="matchOptions"> Опции совпадения используются, а не по умолчанию</param> <название параметра="matchParameter" > использовать параметр совпадения, а не по умолчанию</param> /// <returns></returns> публичный<string> список GetSplitWordsByRank(string content, int rank, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Сегментный сегмент = новый Сегмент(); ICollection<WordInfo> words = сегмент. DoSegment(content, matchOptions, matchParameter);
<string> List list = новый List<string>(); foreach (WordInfo слово в словах) { если (ранг == слово. Звание) { Список. Add(word. Слово); } } список возвратов; }
/// <summary> Основные моменты /// </summary> <param name="keyword"> строка для выделения</param> <param name="content">content</param> <param name="fragmentSize"> количество символов для каждого поля сводки</param> <returns>Выделенный материал</returns> публичная статическая строка HighLight (ключевое слово строки, содержание строки, int fragmentSize) { Создайте HTML-код с параметром, выделяющим поисковый запрос SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter ("<font color='red'>", "</font>"); Создайте выделение, введите HTML-код и объект Pangu Semgent Highlighter highter = new Highlighter(simpleHTMLFormatter, new Segment()); Задайте количество символов для каждого сводного поля выше. FragmentSize = fragmentSize; высветка струныStr = выше. GetBestFragment(ключевое слово, содержание);
если (строка. IsNullOrEmpty(highlightStr)) { возврат контента; } return highlightStr; }
}
}
|