7. 1 형태소 분석기 예광탄 만들기

형태소 분석기 메인 폼 자식 컨트롤 배치
[그림 7.1] 형태소 분석기 메인 폼 자식 컨트롤 배치
번호컨트롤 이름컨트롤 유형설명
1lb_content_infoLabel정보 표시
2tbox_contentTextBox내용 편집 창
3bnt_parseButton내용 분석 버튼
4gb_resultGroupBox결과 그룹 박스
5lb_cnt_infoLabel정보 표시
6lb_cntLabel전체 형태소 개수
7lv_resultListView결과 리스트 뷰
8ch_nameColumnHeader형태소 이름
9ch_rcntColumnHeader참조 개수

[표 7.1] 형태소 분석기 메인 폼의 자식 컨트롤

분석하기 버튼을 클릭했을 때 이벤트 핸들러를 작성합시다.

private void btn_parse_Click(object sender, EventArgs e)

이벤트 핸들러에서는 먼저 결과 리스트의 항목을 지워줍니다.

lv_result.Items.Clear();

내용 편집 창에 입력한 문자열을 얻어와서 형태소 분석기에게 분석 요청합니다. 형태소 분석기는 내용 분석 이외의 다른 작업을 진행하지 않으므로 정적 클래스로 작성합시다. 그리고 형태소 분석을 위해 정적 메버드 Parse를 제공합시다.

string content = tbox_content.Text;
List<Morpheme> list = MorphemeParser.Parse(content);

분석 결과의 형태소 개수를 lb_cnt 컨트롤의 Text 속성에 설정합니다. 그리고 결과 항목을 리스트 뷰에 추가합니다.

lb_cnt.Text = list.Count.ToString();
ListViewItem lvi = null;
foreach (Morpheme mo in list)
{
    lvi = new ListViewItem(
        new string[2] { mo.Name, mo.Count.ToString() }
        );
    lv_result.Items.Add(lvi);
}

▷ MainForm.cs

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using WSE_Core;
using MorphemeParserLib; 
namespace MorphemeParser_예광탄
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        } 
        private void btn_parse_Click(object sender, EventArgs e)
        {
            lv_result.Items.Clear(); 
            string content = tbox_content.Text;
            List<Morpheme> list = MorphemeParser.Parse(content); 
            lb_cnt.Text = list.Count.ToString(); 
            ListViewItem lvi = null;
            foreach (Morpheme mo in list)
            {
                lvi = new ListViewItem(
                    new string[2] { mo.Name, mo.Count.ToString() }
                    );
                lv_result.Items.Add(lvi);
            }
        }
    }
}