χρησιμοποιώντας το Σύστημα. χρησιμοποιώντας το 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 {
ιδιωτικό πτητικό στατικό PanguHelper _instance = null; ιδιωτικό στατικό αντικείμενο μόνο για ανάγνωση lockHelper = νέο αντικείμενο(); ιδιωτικό PanguHelper() { }
/// <summary> [Η προεπιλογή χρησιμοποιεί pangu.xml προφίλ κάτω από την ίδια διαδρομή] /// </summary> /// <returns></returns> δημόσιο στατικό PanguHelper ShareHelper { παίρνω { αν (_instance == null) { κλειδαριά (lockHelper) { αν (_instance == null) { _instance = νέο PanguHelper(); συμβολοσειρά configFile = ConfigurationManager.AppSettings["PANGU_CONFIG"] + ""; αν (configFile != "") { _instance. Χρήση(configFile); } } } }
επιστροφή _instance? } }
/// <summary> Αρχικοποιήστε το καθορισμένο αρχείο διαμόρφωσης /// </summary> <param name="configFile"> αρχείο διαμόρφωσης pangu</param> public void Use(string configFile) { PanGu.Segment.Init(configFile); }
/// <summary> Λήψη περιγραφής μέρους του λόγου /// </summary> <param name="pos"> μέρος της απαρίθμησης ομιλίας</param> /// <returns></returns> δημόσια συμβολοσειρά 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: επιστροφή "μη μορφική λέξη"; θήκη POS. POS_D_W: επιστροφή "σημεία στίξης". θήκη POS. POS_D_T: επιστροφή "λέξη του χρόνου"; θήκη 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: επιστρέψτε "επίρρημα επίρρημα μόρφημα"; θήκη POS. POS_D_C: επιστροφή "μορφικό συνδετικού συνδέσμου"; θήκη POS. POS_D_B: επιστροφή "για να διακρίνετε λέξεις για να διακρίνετε τα μορφώματα"; θήκη POS. POS_D_A: επιστροφή "επίθετο μόρφημα"; } επιστροφή "άγνωστο μέρος του λόγου"? }
/// <summary> Λήψη της μετοχής [Original Wordinfo] /// </summary> <param name="content"> το περιεχόμενο της λέξης που πρόκειται να διαχωριστεί</param> <param name="matchOptions"> χρησιμοποιήστε τις επιλογές αντιστοίχισης</param> <param name="matchParameter"> χρησιμοποιήστε την παράμετρο match</param> /// <returns></returns> public ICollection<WordInfo> GetSegmentWords(string content, MatchOptions matchOptions = null, MatchParameter matchParameter matchParameter = null) { Τμήμα τμήματος = νέο τμήμα(); <WordInfo> Λέξεις επιλογής = τμήμα. DoSegment(περιεχόμενο, matchOptions, matchParameter); λέξεις επιστροφής? }
/// <summary> Λήψη μετοχών /// </summary> <param name="content"> το περιεχόμενο της λέξης που πρόκειται να διαχωριστεί</param> <param name="matchOptions"> Οι επιλογές αντιστοίχισης χρησιμοποιούνται και όχι από προεπιλογή</param> <param name="matchParameter" > χρησιμοποιήσετε την παράμετρο που ταιριάζει, όχι από προεπιλογή</param> δημόσια λίστα<string> GetSplitWords(περιεχόμενο συμβολοσειράς, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Τμήμα τμήματος = νέο τμήμα(); <WordInfo> Λέξεις επιλογής = τμήμα. DoSegment(περιεχόμενο;matchOptions;matchParameter); <string> Λίστα λίστας = νέα Λίστα<string>(); foreach (λέξη WordInfo σε λέξεις) { λίστα. Προσθήκη(λέξη. Λέξη); } λίστα επιστροφής? }
/// <summary> Λάβετε τη μετοχή της καθορισμένης συχνότητας λέξεων /// </summary> <param name="content"> το περιεχόμενο της λέξης που πρόκειται να διαχωριστεί</param> <param name="frequency"> συχνότητα λέξης</param> <param name="matchOptions"> Οι επιλογές αντιστοίχισης χρησιμοποιούνται και όχι από προεπιλογή</param> <param name="matchParameter" > χρησιμοποιήσετε την παράμετρο που ταιριάζει, όχι από προεπιλογή</param> /// <returns></returns> δημόσια λίστα<string> GetSplitWordsByFrequency(περιεχόμενο συμβολοσειράς, διπλή συχνότητα, MatchOptions matchOptions = null, MatchParameter matchParameter matchParameter = null) { Τμήμα τμήματος = νέο τμήμα(); <WordInfo> Λέξεις επιλογής = τμήμα. DoSegment(περιεχόμενο, matchOptions, matchParameter);
<string> Λίστα λίστας = νέα Λίστα<string>(); foreach (λέξη WordInfo σε λέξεις) { if (συχνότητα == λέξη. Συχνότητα) { λίστα. Προσθήκη(λέξη. Λέξη); } } λίστα επιστροφής? }
/// <summary> Πάρτε μια μετοχή με καθορισμένο βάρος /// </summary> <param name="content"> το περιεχόμενο της λέξης που πρόκειται να διαχωριστεί</param> <param name="rank"> βάρος</param> <param name="matchOptions"> Οι επιλογές αντιστοίχισης χρησιμοποιούνται και όχι από προεπιλογή</param> <param name="matchParameter" > χρησιμοποιήσετε την παράμετρο που ταιριάζει, όχι από προεπιλογή</param> /// <returns></returns> public List<string> GetSplitWordsByRank(string content, int rank, MatchOptions matchOptions = null, MatchParameter matchParameter matchParameter = null) { Τμήμα τμήματος = νέο τμήμα(); <WordInfo> Λέξεις επιλογής = τμήμα. DoSegment(περιεχόμενο, matchOptions, matchParameter);
<string> Λίστα λίστας = νέα Λίστα<string>(); foreach (λέξη WordInfo σε λέξεις) { if (rank == λέξη. Κατάταξη) { λίστα. Προσθήκη(λέξη. Λέξη); } } λίστα επιστροφής? }
/// <summary> Αποκορύφωμα /// </summary> <param name="λέξη-κλειδί"> τη συμβολοσειρά για επισήμανση</param> <όνομα παραμέτρου ="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; string highlightStr = υψηλότερη. GetBestFragment(λέξη-κλειδί, περιεχόμενο);
Αν (συμβολοσειρά. IsNullOrEmpty(highlightStr)) { επιστροφή περιεχομένου· } επιστροφή highlightStr; }
}
}
|