1 / 13

14 주 실습강의

14 주 실습강의. 2009. 1 학기 , 소프트웨어 설계 및 실험 (Ⅰ). 검색어 자동완성. 검색어로 입력한 키워드를 분석해서 , 예상되는 키워드를 자동으로 완성해주는 기능 일반적으로 한글의 경우 자소 단위까지 분석한다 네이버의 자동완성. 문자 코드 – 아스키 코드 (ASCII). 1 바이트로 영문자 , 특수문자 표현 한글을 표현할 수 없다. 문자 코드 – 완성형 한글 코드.

eagan-wolf
Télécharger la présentation

14 주 실습강의

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 14주 실습강의 2009. 1학기, 소프트웨어 설계 및 실험(Ⅰ)

  2. 검색어 자동완성 • 검색어로 입력한 키워드를 분석해서, 예상되는 키워드를 자동으로 완성해주는 기능 • 일반적으로 한글의 경우 자소 단위까지 분석한다 • 네이버의 자동완성

  3. 문자 코드 – 아스키 코드(ASCII) • 1바이트로 영문자, 특수문자 표현 • 한글을 표현할 수 없다

  4. 문자 코드 – 완성형 한글 코드 • 한글은 초성(19), 중성(21), 종성(28 – 받침 없는 경우 포함)의 조합으로총 11,172가지의 음절글자를 만들 수 있다. • 1바이트로 표현 불가능 • 현대 한글 • 초성 : ㄱ ㄲ ㄴ ㄷ ㄸ ㄹ ㅁ ㅂ ㅃ ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ • 중성 : ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ ㅘ ㅙ ㅚ ㅛ ㅜ ㅝ ㅞ ㅟ ㅠ ㅡ ㅢ ㅣ • 종성 : ㄱ ㄲ ㄳ ㄴ ㄵ ㄶ ㄷ ㄹ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅁ ㅂ ㅄ ㅅ ㅆ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ • KS C 5601-1987 • 1987년에 가장 먼저 국가 표준으로 정해짐 • 한글을 표상하는 두 바이트 각각의 첫번째 비트는 1 • 실제 생활에서 사용된다고 생각되는 2,350자만 한글 코드에 배당 • 1989년에 1,930자를 덧붙임(현행 표준 완성형)

  5. 문자 코드 – 조합형 한글 코드 • 가능한 모든 한글 글자를 표상 • 완성형과 더불어 1992년에 국가 표준이 됨(KS 5601-1992) • 전체 16비트에 최초 비트는 1로, 이후 두 바이트가 한글임을 표시하고, 나머지 5 비트씩 초성, 중성, 종성 부분을 각각 나타낸다. • 예) 조합형에서 문자 ‘강’의 표상 • 자소 분리가 간단하기 때문에, 한글 텍스트 처리 프로그램을 만드는 데 많이 이용 • 7-bit 아스키 코드 영역과 충돌이 일어날 수 있음

  6. 문자 코드 – 유니코드(Unicode) • 전세계의 모든 문자 표현하고자 함. • 모든 현대 문자, 고대 문자를 지원하지는 못한다. • 한글 • 완성형으로 11,172가지의 음절글자가 포함 • 초성(19), 중성(21), 종성(28 – 받침이 없는 경우 포함) 포함 • 고어 포함(‘ㄴㄴ’, ‘ㅂㄱ’ 등) • 윈도우 시작 – 보조프로그램 – 시스템 도구 – 문자표 참조 • 간단한 함수로 초성, 중성, 종성 분리 가능

  7. 실습 - 자동완성 • CodePlex에서 제공하는 Silverlight Toolkit을 이용 • http://silverlight.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=20430 • Silverlight 2 Toolkit March 2009 Installer를 Download 후 설치 • AutoCompleteBox 사용 • System.Windows.Controls.Input.Toolkit 참조 추가

  8. 실습 - 자동완성 • Page.xaml • <UserControl>에 아래 내용추가 • xmlns:Toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit" • <Toolkit:AutoCompleteBox> 추가

  9. 실습 - 자동완성 • Page.xaml.cs • 결과

  10. 실습 - 자동완성 • 유니코드를 이용한 자소 분리 // 초성 List<string> chosung = new List<string>() { "ㄱ", "ㄲ", "ㄴ", "ㄷ", "ㄸ", "ㄹ", "ㅁ", "ㅂ", "ㅃ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅉ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ" }; // 중성 List<string> jungsung = new List<string>() { "ㅏ", "ㅐ", "ㅑ", "ㅒ", "ㅓ", "ㅔ", "ㅕ", "ㅖ", "ㅗ", "ㅘ", "ㅙ", "ㅚ", "ㅛ", "ㅜ", "ㅝ", "ㅞ", "ㅟ", "ㅠ", "ㅡ", "ㅢ", "ㅣ" }; // 종성 List<string> jongsung = new List<string>() { "", "ㄱ", "ㄲ", "ㄱㅅ", "ㄴ", "ㄴㅈ", "ㄴㅎ", "ㄷ", "ㄹ", "ㄹㄱ", "ㄹㅁ", "ㄹㅂ", "ㄹㅅ", "ㄹㅌ", "ㄹㅍ", "ㄹㅎ", "ㅁ", "ㅂ", "ㅂㅅ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ" };

  11. 실습 - 자동완성 • 자소 분리 함수 string StringToJaso(string str) { int hangul, jong, jung, cho; string result = ""; int i = 0; for (i = 0; i < str.Length; i++) { if (str[i] < 128) // 영문 result += str[i]; else if (str[i] >= 0xAC00 && str[i] <= 0xD7A3) // 한글(완성형) : 0xAC00 -> '가', 0xD7A3 -> '힣' { hangul = (int)(str[i]) - 0xAC00; jong = hangul % 28; jung = ((hangul - jong) / 28) % 21; cho = ((hangul - jong) / 28) / 21; result += chosung.ElementAt(cho) + jungsung.ElementAt(jung) + jongsung.ElementAt(jong); } else if (str[i] >= 0x3131 && str[i] <= 0x3163) // 한글(자소) : 0x3131 -> 'ㄱ', 0x3163 -> 'l' { result += str[i]; } } return result; }

  12. 실습 - 자동완성 • TextFilter 추가 • 검색어 또는 저장된 value를 수정하여 원하는 검색할 수 있다

  13. 실습 - 자동완성 • 기본구현 • 13주차 게시판의 TextBox를 AutoCompleteBox로 바꿔 검색어 자동완성을 만든다. • 자동완성 대상 단어는 InvertedIndex에 저장된 term이다. • 오늘 실습내용을 바탕으로 자소 단위까지 분석한다. • 추가구현 • Term에 대한 df로 자동완성 우선순위를 정한다. • 힌트 : descending sorting

More Related