본문 바로가기

Lucene

[lucene] Dictionary Class.

CharTokenizer에 이어서 한글 Analyzer를 만들기 위해 작성한 사전 클래스입니다.

이 클래스는 루씬에서 제공되는 클래스는 아니고 제가 필요에 의해서 작성한

클래스입니다.

기본적인 틀은 루씬 인 액션에 있는 소스를 참고하였고 세부적인 내용은

제가 작성을 하였습니다. 참고해주시구요..


사전을 몇개 만들었다.

명사사전/ 이름사전/ 불용어사전/ 동의어사전/ 어미제거사전

자..이렇게 해놓고 모든걸 적용시켜보니.. 일단 색인어 추출을 (not 형태소분석) 하는데 있어서 어미제거가 되어버리면 , 단어가 너무 많이 망가지는 현상이 발생하여
현재는 어미제거는 하지 않고 있다.

위 사전들을 적용한 클래스를 앞으로 하나하나 작성을 해볼텐데..

일단 기본이 되는 사전 클래스..

사전 클래스는 어렵게 구현하지는 않았다. (못했다.-_-)

일단 기본적으로 웹에서도 관리가 되도록 하기 위해서

addWord, removeWord, findWord 3개의 메서드를 가진 추상 클래스를 작성하고

나머지들은 위 클래스를 상속해 구현하는 방식으로 작성을 하였다.

사전을 읽어들이는 방식은

이름사전이나 명사사전은 HashSet으로 파일을 읽어 들이는 방식으로 만들었고,

싱글턴 패턴을 사용하여, 사전 클래스를 불필요하게 로딩하지 않도록 하였다.

(사전의 양이 많아질 수록 부담이 되기 때문에..)

단어 추가 같은 경우는 일단 메모리에 존재하는 HashSet에서 데이터를 확인하고

단어가 없으면 Hash에 단어를 추가 후 파일에도 추가하는 방법으로 구현하였으며

삭제 같은 경우는 Hash에서 단어를 삭제 후

이 Hash를 다시 파일로 전부 Write하는 방식으로 구현하였다.

그리고 이 로딩된 Hash를 참조 할 수 있는 get 메서드를 구현하여 나중에 설명 할

필터 클래스에서 이 사전을 가져다가 사용 할 수 있도록 하였다.

사전 자체도 그냥 txt로 만들어서 읽어오기 때문에 딱히 구현에 어려움이 있는

그런 클래스는 아니었다.


뭐 딱히 설명 할 게 있는 클래스는 아니지만..이런 클래스도 사용했다..라고 작성해두기 위함입니다.