използвайки 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;
Namespace Pangu.Helper
{ публичен клас PanguHelper {
private volatile static PanguHelper _instance = null; частен статичен обект за четене lockHelper = нов обект(); private PanguHelper() { }
/// <summary> [По подразбиране използва профила pangu.xml по същия път] /// </summary> /// <returns></returns> публичен статичен 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) { Суич (POS) { случай POS. POS_UNK: върни "неизвестна част от речта;" случай POS. POS_D_K: връщане на "следящ компонент"; случай POS. POS_D_H: върни "предходен компонент"; случай POS. POS_A_NZ: връщане на "друго собствено име"; случай POS. POS_A_NX: връщане на "чужд символ"; случай POS. POS_A_NR: върни "името на лицето"; случай POS. POS_D_Z: връщане на "статусна дума"; случай POS. POS_A_NT: връщане на "корпус от институции"; случай POS. POS_A_NS: връщане на "име на място"; случай POS. POS_D_Y: връщане "морфема на настроение дума"; случай POS. POS_D_X: return "неморфемна дума"; случай POS. POS_D_W: връщане на "пунктуация"; случай POS. POS_D_T: връщане на "word of time"; случай POS. POS_D_S: връщане на "дума за място"; случай POS. POS_D_V: връща "глагол морфема"; случай POS. POS_D_U: връща "морфема на частицата частица"; случай POS. POS_D_R: връща "местоимение морфема"; случай POS. POS_A_Q: връщане на "кванторен кванторен морфем"; случай POS. POS_D_P: връщане на "предлог"; случай POS. POS_D_MQ: връщане на "квантор"; случай POS. POS_A_M: връщане на "число, число, число"; случай POS. POS_D_O: връщане на "ономатопея"; случай POS. POS_D_N: връща "съществително морфем"; случай POS. POS_D_F: връщане на "азимутната дума азимутна морфема"; случай POS. POS_D_E: връщане на "морфема на интердомекция"; случай POS. POS_D_L: връщане на "идиом"; случай POS. POS_D_I: връщане на "идиом"; случай POS. POS_D_D: return "наречие морфема"; случай POS. POS_D_C: връща "конюнктивна конюнктивна морфема"; случай POS. POS_D_B: return "за разграничаване на думи за разграничаване на морфеми"; случай POS. POS_D_A: връща "морфема на прилагателно"; } връщане на "неизвестна част на речта"; }
/// <summary> Вземете причастие [Оригинална информация] /// </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"> Опциите за съвпадение се използват, не по подразбиране</param> <param name="matchParameter" > използва параметъра за съвпадение, а не по подразбиране</param> публичен<string> списък GetSplitWords (string content, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Сегментен сегмент = нов Сегмент(); ICollection<WordInfo> думи = сегмент. DoSegment(content,matchOptions,matchParameter); <string> List list = new List<string>(); foreach (WordInfo дума в думи) { списък. Add(word. Word); } списък за връщане; }
/// <summary> Получаване на причастие на зададената честота на думата /// </summary> <param name="content"> съдържанието на думата, която трябва да се отдели</param> <param name="честота"> честота на думата</param> <param name="matchOptions"> Опциите за съвпадение се използват, не по подразбиране</param> <param name="matchParameter" > използва параметъра за съвпадение, а не по подразбиране</param> /// <returns></returns> публичен<string> списък GetSplitWordsByFrequency(съдържание на низове, двойна честота, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Сегментен сегмент = нов Сегмент(); ICollection<WordInfo> думи = сегмент. DoSegment(content, matchOptions, matchParameter);
<string> List list = new List<string>(); foreach (WordInfo дума в думи) { ако (честота == дума. Честота) { списък. Add(word. Word); } } списък за връщане; }
/// <summary> Вземете причастие с определено тегло /// </summary> <param name="content"> съдържанието на думата, която трябва да се отдели</param> <param name="ранг"> тегло</param> <param name="matchOptions"> Опциите за съвпадение се използват, не по подразбиране</param> <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 = new List<string>(); foreach (WordInfo дума в думи) { ако (ранг == дума. Ранг) { списък. Add(word. Word); } } списък за връщане; }
/// <summary> Акценти /// </summary> <param name="keyword"> низа за маркиране</param> <param name="content">content</param> <param name="fragmentSize"> броят на символите за всяко обобщено поле</param> <returns>Изтъкнато съдържание</returns> публичен статичен низ HighLight(низова ключова дума, string content, 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; }
}
}
|