System을 사용; System.Collections.Generic을 사용; System.Linq를 사용; System.Text 사용; System.Threading.Tasks를 사용; PanGu.Dict를 사용; PanGu.Framework를 사용; PanGu.Match를 사용; PanGu.설정을 사용; PanGu.HighLight 사용 중; Lucene.Net.Analysis를 사용; System.IO; 판구를 사용하고; System.Configuration을 사용;
네임스페이스 Pangu.Helper
{ 공공 클래스 팽구헬퍼 {
개인 휘발성 정적 PanguHelper _instance = null; private static readonly object lockHelper = new object(); private PanguHelper() { }
/// <summary> [기본값은 같은 경로 하에 pangu.xml 프로필을 사용합니다] /// </summary> /// <returns></returns> 공개 정적 PanguHelper ShareHelper { 가져오기 { 만약 (_instance == null) { lock (lockHelper) { 만약 (_instance == null) { _instance = 새로운 PanguHelper(); string configFile = ConfigurationManager.AppSettings["PANGU_CONFIG"] + ""; if (configFile != "") { _instance. Use(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> public string GetPosDescrip{filter}t(POS pos) { 스위치 (POS) { 케이스 쓰레기. POS_UNK: "미지의 품사"로 반환; 케이스 쓰레기. POS_D_K: "후행 부품"을 반환; 케이스 쓰레기. POS_D_H: "이전 부품"을 반환; 케이스 쓰레기. POS_A_NZ: "다른 고유명사"를 반환; 케이스 쓰레기. POS_A_NX: "외국 문자"로 반환; 케이스 쓰레기. POS_A_NR: "사람 이름"을 반환; 케이스 쓰레기. POS_D_Z: "status word"를 반환; 케이스 쓰레기. POS_A_NT: "기관 기관" 반환; 케이스 쓰레기. POS_A_NS: "지명"을 반환; 케이스 쓰레기. POS_D_Y: "mood word mood morpheme" 반환; 케이스 쓰레기. POS_D_X: "비형태소 단어"를 반환; 케이스 쓰레기. POS_D_W: "구두점"으로 반환; 케이스 쓰레기. POS_D_T: "시야의 말"로 반환; 케이스 쓰레기. POS_D_S: "place word"를 반환; 케이스 쓰레기. POS_D_V: return "동사 형태소"; 케이스 쓰레기. POS_D_U: "입자 입자 형태소"를 반환; 케이스 쓰레기. POS_D_R: "대명사 대명사 형태소"를 반환; 케이스 쓰레기. POS_A_Q: "양화사, 양사, 형태소"를 반환; 케이스 쓰레기. POS_D_P: "전치사"로 반환; 케이스 쓰레기. POS_D_MQ: 반환 "양화사"; 케이스 쓰레기. POS_A_M: "numeral, numeral, numeral" 반환; 케이스 쓰레기. POS_D_O: "의성어"를 반환; 케이스 쓰레기. POS_D_N: "명사 형태소"를 반환; 케이스 쓰레기. POS_D_F: "방위각 단어 방위각 형태소"를 반환; 케이스 쓰레기. POS_D_E: "감탄사 형태소"를 반환; 케이스 쓰레기. POS_D_L: '관용구' 반환; 케이스 쓰레기. POS_D_I: "관용구"로 반환; 케이스 쓰레기. POS_D_D: "부사 adverb 형태소"를 반환; 케이스 쓰레기. POS_D_C: return "결합 접속 형태소"; 케이스 쓰레기. POS_D_B: "단어를 구별하여 형태소를 구별하기 위해"로 돌아갑니다; 케이스 쓰레기. POS_D_A: "형용사 형태소"를 반환; } "미지의 품사"로 반환; }
/// <summary> 분사 [원본 단어정보] 받아보세요. /// </summary> <param name="content"> 분리할 단어의 내용</param> <param name="matchOptions"> matching 옵션을 사용</param>하세요 <param name="matchParameter"> match 매개변수를 사용</param>하세요 /// <returns></returns> public ICollection<WordInfo> GetSegmentWords(문자열 content, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { 세그먼트 세그먼트 = 새로운 세그먼트(); 이해<WordInfo> 단어 = 구절. DoSegment(content, 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(content, matchOptions, matchParameter); 리스트<string> 리스트 = 새 리스트<string>(); foreach (단어 정보 단어 속 단어) { 목록. 추가(단어). 워드); } 리턴 리스트; }
/// <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 = null) { 세그먼트 세그먼트 = 새로운 세그먼트(); 이해<WordInfo> 단어 = 구절. DoSegment(content, matchOptions, matchParameter);
리스트<string> 리스트 = 새 리스트<string>(); foreach (단어 정보 단어 속 단어) { 만약 (주파수 == 단어). 빈도) { 목록. 추가(단어). 워드); } } 리턴 리스트; }
/// <summary> 명시된 가중치를 가진 분사를 구하세요 /// </summary> <param name="content"> 분리할 단어의 내용</param> <param name="rank"> 가중치</param> <param name="matchOptions"> 매치 옵션은 사용되지만 기본은 아닙니다</param> <param name="matchParameter" > 기본값은 아닌 매칭 매개변수를 사용합니다</param> /// <returns></returns> 공개 목록<string> GetSplitWordsByRank(문자열 내용, 정수형 순위, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { 세그먼트 세그먼트 = 새로운 세그먼트(); 이해<WordInfo> 단어 = 구절. DoSegment(content, matchOptions, matchParameter);
리스트<string> 리스트 = 새 리스트<string>(); foreach (단어 정보 단어 속 단어) { 만약 (순위 == 단어). 계급) { 목록. 추가(단어). 워드); } } 리턴 리스트; }
/// <summary> 하이라이트 /// </summary> <param name="keyword"> 하이라이트할 문자열</param> <param name="content">content</param> <param name="fragmentSize"> 각 요약 필드의 문자 수</param> <returns>하이라이트 콘텐츠</returns> 공개 정적 문자열 HighLight(문자열 키워드, 문자열 콘텐츠, 정수형 fragmentSize) { 검색어를 강조하는 매개변수가 포함된 HTML 코드를 만드세요 SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<font color='red'>", "</font>"); 하이라이트 생성, HTML 코드 입력, Pangu 객체 Semgent 하이라이터 하이터 = new Highlighter(simpleHTMLFormatter, new Segment()); 각 요약 필드의 문자 수를 설정합니다 더 높게. FragmentSize = fragmentSize; string highlightStr = highter. GetBestFragment(키워드, 콘텐츠);
만약 (스트링. IsNullOrEmpty(highlightStr)) { 콘텐츠 반환; } 하이라이트스트리트 반환; }
}
}
|