використовуючи 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 == нуль) { Замок (замокПомічник) { якщо (_instance == нуль) { _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: повернути «розрізняти слова для розрізнення морфем»; справа ПОГАНА. POS_D_A: повернути «морфема прикметника»; } повернути «невідому частину мови»; }
/// <summary> Отримайте дієприкметник [Оригінальна інформація в Word] /// </summary> <param name="content"> зміст слова, яке слід розділити</param> <param name="matchOptions"> використовуйте параметри відповідності</param> <ім'я параметра="matchParameter"> використовуйте параметр match</param> /// <returns></returns> public ICollection<WordInfo> GetSegmentWords(string content, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Сегментний сегмент = новий Сегмент(); ICollection<WordInfo> слова = сегмент. DoSegment(content, matchOptions, matchParameter); відповідь; }
/// <summary> Отримати дієприкметники /// </summary> <param name="content"> зміст слова, яке слід розділити</param> <param name="matchOptions"> Опції Match використовуються, а не за замовчуванням</param> <name="matchParameter" > використовувати параметр відповідності, а не за замовчуванням</param> публічний список<string> GetSplitWords (string content, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Сегментний сегмент = новий Сегмент(); ICollection<WordInfo> слова = сегмент. 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"> Опції Match використовуються, а не за замовчуванням</param> <name="matchParameter" > використовувати параметр відповідності, а не за замовчуванням</param> /// <returns></returns> публічний список<string> GetSplitWordsByFrequency (string content, double frequency, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Сегментний сегмент = новий Сегмент(); ICollection<WordInfo> слова = сегмент. 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"> Опції Match використовуються, а не за замовчуванням</param> <name="matchParameter" > використовувати параметр відповідності, а не за замовчуванням</param> /// <returns></returns> публічний список<string> GetSplitWordsByRank(string content, int rank, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Сегментний сегмент = новий Сегмент(); ICollection<WordInfo> слова = сегмент. 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 = новий SimpleHTMLFormatter ("<font color='red'>", "</font>"); Створіть виділення, введіть HTML-код і об'єкт Pangu Semgent Highlighter highter = новий Highlighter(simpleHTMLFormatter, новий Segment()); Встановіть кількість символів для кожного підсумкового поля вище. FragmentSize = fragmentSize; підсвічування струн Str = висока. GetBestFragment(ключове слово, контент);
якщо (рядок. IsNullOrEmpty(highlightStr)) { повернення контенту; } повернення highlightStr; }
}
}
|