2013년 11월 15일 금요일

mecab-ko-dic-1.4.3-20131115 배포합니다.

mecab-ko-dic-1.4.3-20131115이 나왔습니다.
  • 띄어쓰기 있는 긍정 지정사(VCP)에 페널티 비용 추가
  • '-받'과 같은 동사 중 필요 없는 동사 제거. 예) 사랑받(다)
  • '-치'와 같은 동사중 필요 없는 동사 제거. 예) 사기치(다)
여기서 받으실 수 있습니다.

2013년 10월 28일 월요일

mecab-ko-lucene-analyzer-0.13.3 배포합니다.

mecab-ko-lucene-analyzer-0.13.3이 나왔습니다.
  • StandardPosAppender에서 체언 접두사(XPN) 인덱싱 방식 변경. (독립적인 토큰이 되도록 변경)
여기서 받으실 수 있습니다.

ElasticSearch plugin 설치

bin/plugin --install analysis-mecab-ko-0.13.3 --url https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/elasticsearch-analysis-mecab-ko-0.13.3.zip

2013년 10월 23일 수요일

mecab-ko-lucene-analyzer-0.13.2 배포합니다.

mecab-ko-lucene-analyzer-0.13.2이 나왔습니다.
  • StandardPosAppender에서 명사 파생 접미사(XSN) 인덱싱 방식 변경. (독립적인 토큰이 되도록 변경)
여기서 받으실 수 있습니다.

ElasticSearch plugin 설치

bin/plugin --install analysis-mecab-ko-0.13.2 --url https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/elasticsearch-analysis-mecab-ko-0.13.2.zip

2013년 10월 8일 화요일

mecab-ko-dic-1.4.3-20131008 배포합니다.

mecab-ko-dic-1.4.3-20131008이 나왔습니다.
  • 조사와 어미('은', '의')가 문장 처음에 등장하는 오분석 수정. (연결 비용 수정)
  • 사전 추가
여기서 받으실 수 있습니다.

2013년 10월 2일 수요일

mecab-ko-dic-1.4.3-20131002 배포합니다.

mecab-ko-dic-1.4.3-20131002이 나왔습니다.
  • 띄어쓰기 있는 동사/형용사 파생 접미사에 페널티 비용 추가 (동사/형용사 파생 접미사로 오분석 방지)
여기서 받으실 수 있습니다.

mecab-ko-lucene-analyzer-0.13.1 배포합니다.

mecab-ko-lucene-analyzer-0.13.1이 나왔습니다.
  • UNKNOWN 형태소(사전에 없는 형태소)가 인덱스에서 제외되는 오류 수정
여기서 받으실 수 있습니다.

ElasticSearch plugin 설치

bin/plugin --install analysis-mecab-ko-0.13.1 --url https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/elasticsearch-analysis-mecab-ko-0.13.1.zip

2013년 9월 10일 화요일

mecab-ko-dic-1.4.2-20130910 배포합니다.

mecab-ko-dic-1.4.2-20130910이 나왔습니다.
  • 말뭉치에서 특수 기호(SY) 오류 수정하여 재학습
  • SSC(닫는 괄호)와 수사(NR)과의 연결 비용 올림
여기서 받으실 수 있습니다.

2013년 9월 6일 금요일

mecab-ko-lucene-analyzer-0.13.0 배포합니다.

mecab-ko-lucene-analyzer-0.13.0이 나왔습니다.
  • ElasticSearch plugin 추가
  • 어미와 보조 용언을 어절로 결합하는 규칙 제거
여기서 받으실 수 있습니다.

ElasticSearch plugin의 사용 설명서는 다음의 URL에서 확인하실 수 있습니다.

2013년 8월 26일 월요일

mecab-ko-dic-1.4.2-20130826 배포합니다.

mecab-ko-dic-1.4.2-20130826이 나왔습니다.
  • 잘못된 기분석 단어를 복합명사 사전으로 옮기거나 출현 비용 수정으로 대체
  • '빛나라'가 '빛/NN+나라/NN'로 오분석 되는 것을 막기 위해 '빛나/VV' 출현 비용 낮춤
여기서 받으실 수 있습니다.

이번 1.4.1, 1.4.2 버전의 릴리스에서 실수가 잦았네요. 기존의 1.4.1, 1.4.2 버전은 사전 형식의 오류로 인해 mecab-ko-lucene-analyzer에서 문제가 있을 수 있으니 사용하시는 분들은 이 버전을 다시 받으시기 바랍니다.

mecab-ko-dic-1.4.2-20130825 배포합니다.

mecab-ko-dic-1.4.2-20130825이 나왔습니다.
  • 단어 끝에 숫자가 붙은 잘못된 의존명사(NNB) 제거
  • 한글로 이루어진 모르는 단어에 대해 'NN'에서 'UNKNOWN'으로 표기하는 것으로 변경
  • '저거나'가 '저/VV+거나/EC'로 오분석되는 것을 막기 위해 '저거'(저것/NP+이/VCP)의 단어 출현 비용 낮춤
여기서 받으실 수 있습니다.

2013년 8월 23일 금요일

mecab-ko-dic-1.4.1-20130823 배포합니다.

mecab-ko-dic-1.4.1-20130823이 나왔습니다.
  • 의존 명사(NNB)에 관한 분석 규칙 변경
  • 접두어 '명'('이름난', '뛰어난'의 뜻을 가지는) 추가
  • 몇몇 단어와 기분석 사전 추가
여기서 받으실 수 있습니다.

2013년 8월 7일 수요일

ElasticSearch 플러그인을 만드는 중입니다.

mecab-ko-lucene-analyzerElasticSearch 플러그인을 만드는 중입니다. mecab-ko-lucene-analyer의 dev-elasticsearch-analyzer 브랜치로 작업 중이며, 아직 정식으로 릴리스할 정도는 아니라고 판단되어, 베타 테스트로 설치할 수 있는 방법을 공유합니다.

아래의 링크에서 자세한 설치와 사용 방법을 보실 수 있습니다.
https://bitbucket.org/eunjeon/mecab-ko-lucene-analyzer/raw/master/elasticsearch-analysis-mecab-ko/
현재는 tokenizer만 구현되어 있는 상태고, 제가 ElasticSearch에 경험이 없어서, 어떤 부분을 더 구현해야 할지 잘 모르는 상태입니다. 혹시 ElasticSearch를 사용하시는 분들은 테스트해 보시고, 버그나 더 구현해야 할 부분과 같은 간단한 피드백을 주시면 매우 감사하겠습니다.

elasticsearch-0.90.2 기반으로 컴파일 했으며, elasticsearch-0.90.3에서 정상적으로 동작하는 것을 테스트 완료하였습니다.

2013년 7월 31일 수요일

2013년 7월 20일 토요일

mecab-ko-lucene-analyzer-0.12.0 배포합니다.

mecab-ko-lucene-analyzer-0.12.0이 나왔습니다.
  • mecab-ko-dic-1.4.0을 위한 코드 추가
여기서 받으실 수 있습니다.

mecab-ko-dic-1.4.0-20130720 배포합니다.

mecab-ko-dic-1.4.0-20130720이 나왔습니다.
  • 조사,어미,명사 파생 접미사 활용어 띄어쓰기 패널티를 주기위해 pos-id 변경 및 설정(dicrc) 변경
  • 인명사전(NN-Person.csv, NN-Person-Preanalysis.csv) 데이터 추가. (약 10만 단어 추가)
  • 안되/VV, 안된/VA+ETM, 안된다/VA+EF, 안된다는/VA+ETM 단어 출현 비용 수동으로 수정하여, 오분석 방지
  • 띄어쓰기 있는 어미 페널티 비용 500 -> 3000으로 변경
주의: mecab-ko-lucene-analyzer을 사용하시는 분들은 mecab-ko-lucene-analyzer-0.12.0으로 업데이트 하셔야합니다.

여기서 받으실 수 있습니다.

2013년 7월 7일 일요일

mecab-ko-lucene-analyzer-0.11.0 배포합니다.

mecab-ko-lucene-analyzer-0.11.0이 나왔습니다.
  • Apache Lucene/Solr 4.3.1 버전에 맞춰서 코드 수정.
주의: 이번 버전은 Lucene/Solr 4.3.x 버전을 사용하셔야 합니다.

여기서 받으실 수 있습니다.

2013년 6월 27일 목요일

Solr query를 어떻게 만드는 것이 좋을까?

편의상 평어체를 사용합니다.

Solr query parser의 문제점

Solr에 포함된 대부분의 query parser(Lucene, Dismax, ExtendedDismax 등)는 사용자의 검색어를 한번에 분석(analyze)하는 것이 아니라 여러 조각으로 나눠서 분석한다. 예를 들면 다음과 같다.
"president obama" +havard +professor
검색 쿼리가 위와 같은 경우 query parser가 "president obama", +havard, +processor에 대해서 각각 analyzer를 실행한다. 영어처럼 단어마다 띄어쓰기를 하는 언어에서는 문제가 없는 방식이다. 하지만 최적의 형태소 결합을 찾는 mecab-ko-lucene-analyzer의 특성상 완전한 문장이 analyzer로 들어와야 정확한 형태소 분석이 보장된다. 두 가지의 방식으로 ‘이성과 감성'이라는 문장을 분석하면 다음과 같이 다른 결과가 나온다.
'이성과', '감성'을 각각 형태소 분석을 했을 경우, mecab-ko-dic 형태소 분석 결과
이(관형사), 성과(명사), 감성(명사) => 원하는 형태소 분석 결과가 아님
'이성과 감성'을 형태소 분석 했을 경우, mecab-ko-dic 형태소 분석 결과
이성(명사), 과(조사), 감성(명사)

해결 방안

모든 단어 검색을 할 경우

'+이성과 +감성'과 같이 모든 단어 포함 검색을 하고 싶은 경우, Sloppy phrase query를 사용한다. 위의 예에서도 알 수 있듯이, phrase query인 경우 완전한 구문이 analyzer로 넘어간다. 충분히 큰 slop 값을 주면 모든 문서에 대해서 검색할 수 있다. lucene query parser의 경우 다음과 같이 사용할 수 있다.
q=title:"이성과 감성"~1000

일부 단어 검색을 할 경우

phrase query를 쓰기 힘든 일부 단어 검색의 경우, 공백 문자 앞에 ,(쉼표)와 같은 특정한 기호를 넣는 꼼수로 문제를 해결했다. 다음과 같은 식이다.
q=title:(이성과, 감성)
여기서 쉼표는 텍스트가 이어지는 지점이라는 힌트를 은전한닢 형태소 분석기에 제공하는 역할을 한다. 실제로 '이성과'와 '이성과,’를 mecab-ko-dic을 통해 형태소 분석을 하면 다음과 같이 다른 결과가 나온다.
이성과
이    MM,F,이,*,*,*,*,*
성과  NN,F,성과,*,*,*,*,*
EOS
이성과,
이성  NN,T,이성,*,*,*,*,*
과    JC,F,과,*,*,*,*,*
,     SY,*,*,*,*,*,*,*
EOS
SY(Symbol)은 mecab-ko-lucene-analyzer에서 인덱스에 남기지 않기 때문에, 사용할 수 있는 꼼수이다. 이 방법에도 부작용이 있는 경우가 발견되면, 지금의 해결 법은 바뀔 수 있다.

샘플

title과 body로 구성된 데이터를 검색한다고 했을 때, 다음과 같이 sloppy query에 가중치를 주고 edismax를 사용하여, 일부 단어 검색을 하는 query를 만들 수 있다.
사용자 검색어가 ‘이성과 감성' 일 때,
title="이성과 감성"~1000^5.0 OR body="이성과 감성"~1000^3.0 OR _query_:"{!edismax qf='title^2.0 body' mm='2<75%'}이성과 감성"
이 쿼리식이 최적이라는 것이 아니라, 어디까지나 예제일 뿐입니다. 효과적인 쿼리식이나 괜찮은 예제가 있으면 댓글로 알려주시면 감사하겠습니다.

남겨진 문제

띄어쓰기 오류에서 오는 문제점

테스트 중 알게 된 예상치 못한 경우가 띄어쓰기가 없는데 여러 개의 token이 나오는 경우, 검색식이 만들어지는 방식이 좀 이상한 것이었다.
mecab-ko-lucene-analyzer의 Standard(Query|Index)Tokenizer에서는 어절에 가중치를 주기 위해서 어절 token을 유의어 개념으로 반환하는데 예를 들면 다음과 같다.
이성과 감성 => (이성과 이성) 감성
위에서보면 '이성과'와 '이성' 두 token을 position 변화 없이 (positionIncrement=0) 반환하는데, Solr의 debugQuery를 활용하여 보면, 띄어쓰기가 있는냐 없는냐에 따라, Solr에서 실제의 쿼리가 다르게 구성되는 것을 볼 수 있다.
title:(이성과, 감성) 분석 결과
"debug": {
  "rawquerystring": "title:(이성과, 감성)",
  "querystring": "title:(이성과, 감성)",
  "parsedquery": "((title:이성과 title:이성)/no_coord) title:감성",
  "parsedquery_toString": "(title:이성과 title:이성) title:감성",
...
}
위의 경우, '이성과'와 '이성'이 유의어 개념으로 올바르게 처리되고 있다. (parsedquery에서 괄호로 묶인 부분)
title:(이성과감성) 분석 결과
"debug": {
  "rawquerystring": "title:(이성과감성)",
  "querystring": "title:(이성과감성)",
  "parsedquery": "title:이성과 title:이성 title:감성",
  "parsedquery_toString": "title:이성과 title:이성 title:감성",
  ...
  }
‘이성과'와 ‘이성'이 유의어 개념이 아니라, 서로 다른 token으로 처리되고 있다.
Solr query parser가 왜 이런 결과를 내는지는 잘 모르겠다. 특별한 이유가 없는 한, 논리적으로 틀린 방식이라고 생각이 된다.
위의 문제를 해결 방안은 두 가지 정도로 생각된다.
  1. 사용자 검색어를 전처리를 통해 띄어쓰기 보정을 한 후에, Solr query를 구성
  2. 띄어쓰기 단위가 아니라, 형태소 분석기에서 나온 형태소 단위로 처리하는 query parser를 작성
일단 은전한닢 프로젝트에서는 작업양이 적게 느껴지는 첫 번째 방법을 통해서 문제를 해결할 수 있는지 조사하고 있다. 관련 작업이 끝나는 대로, 이 글을 수정하거나 새로운 글을 올릴 예정이다.
Written with StackEdit.

2013년 6월 9일 일요일

mecab-ko-lucene-analyzer-0.10.0 배포합니다.

mecab-ko-lucene-analyzer-0.10.0이 나왔습니다.
  • 복합명사 처리 로직 재작성
  • 기분석 사전 처리 로직 추가
  • StandardIndexTokenizerFactory에서 decompoundMinLength 속성 제거
  • StandardIndexTokenizerFactory에서 compoundNounMinLength 속성 추가. 해당 길이 보다 짧은 복합명사는 분해하지 않음. 기본값은 3.

주의: 이번 버전은 mecab-ko-dic-1.3.0 이상의 버전을 사용하셔야 합니다.

여기서 받으실 수 있습니다.

mecab-ko-dic-1.3.0-20130608 배포합니다.

mecab-ko-dic-1.3.0-20130608이 나왔습니다.
  • mecab-ko-lucene-analyzer-0.10.0  버전을 위해 사전 구조가 변경
    • 각 사전 단어에 인덱스 표현 필드 추가
    • Preanalysis 사전(기분석 사전) 추가
여기서 받으실 수 있습니다.

2013년 4월 27일 토요일

mecab-ko-dic-1.2.0-20130427 배포합니다.

mecab-ko-dic-1.2.0-20130427이 나왔습니다.
  • mecab-ko에 맞춰서 학습 규칙 및 설정 변경
  • 인명사전(NN-Person.csv) 데이터 다량 추가
  • _Wikipedia.csv 사전을 단일 명사와 복합 명사 사전으로 나눔
여기서 받으실 수 있습니다.

mecab-ko-0.9.0 배포합니다.

mecab-ko 소개

mecab-ko는 은전한닢 프로젝트에서 사용하기 위한 MeCab의 fork 프로젝트 입니다. 최소한의 변경으로 한국어의 특성에 맞는 기능을 추가하는 것이 목표입니다.

0.9.0 버전에서는 공백 문자(white space)를 포함하는 특정 품사의 비용을 늘리는 기능이 추가되었습니다. mecab-ko-dic-1.2.0 버전부터 mecab-ko를 지원합니다.

보다 자세한 내용은 https://bitbucket.org/eunjeon/mecab-ko에서 확인하실 수 있습니다.

2013년 4월 12일 금요일

mecab-ko-lucene-analyzer-0.9.5 배포합니다.

mecab-ko-lucene-analyzer-0.9.5가 나왔습니다.
  • jar 패키지를 mecab-ko-mecab-loader.jar와 mecab-ko-lucene-analyzer.jar로 분리. (mecab-ko-mecab-loader.jar는 JNI 클래스를 포함하므로 System classpath에 위치해야 함)
  • 위의 사항과 관련하여 README.md를 변경
여기서 받으실 수 있습니다.
이전의 버전은 JNI 클래스 패키지가 분리되어있지 않아서, collection을 하나 이상 만들 수 없는 문제점이 있습니다. 꼭 새로운 버전을 사용하시기 바랍니다. 관련하여 설치 방법도 변경됐으니, https://github.com/eunjeon/mecab-ko-lucene-analyzer/blob/master/README.md를 다시 확인 해주시기 바랍니다.

2013년 4월 11일 목요일

mecab-ko-lucene-analyzer OpenJDK에서 사용하기

mecab-ko-lucene-analyzer가 OpenJDK 상에서는 제대로 동작을 하지 않는 문제가 발견되었습니다. 정확히는 MeCab의 JNI가 비정상적인 동작(형태소 분석 결과가 나오지 않음)을 합니다. MeCab은 Java 인터페이스를 만들기 위해서 SWIG라는 툴을 사용하는데, 이 문제가 SWIG의 문제인지 OpenJDK의 문제인지는 잘 모르겠습니다.

이것저것 시도해보다가 다음과 같이 mecab-java-0.996의 Makefile에서 gcc 최적화 옵션을 -O나 -O1으로 낮추면 정상 동작하는 것을 확인하였습니다. 뭔가 매우 찝찝하지만 일단은 여기까지 입니다. -_-a

테스트 된 환경은 다음과 같습니다.
CentOS 6.3
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.1) (rhel-1.45.1.11.1.el6-i386)
OpenJDK Server VM (build 20.0-b12, mixed mode)
관련하여 더 좋은 해결 방법을 아시는 분은 알려주시면 감사 하겠습니다.

TARGET=MeCab
JAVAC=javac
JAVA=java
JAR=jar
CXX=c++
INCLUDE=/usr/lib/jvm/java-6-openjdk/include
PACKAGE=org/chasen/mecab
LIBS=`mecab-config --libs`
INC=`mecab-config --cflags` -I$(INCLUDE) -I$(INCLUDE)/linux
all:
    $(CXX) -O3 -c -fpic $(TARGET)_wrap.cxx  $(INC)
    $(CXX) -O1 -c -fpic $(TARGET)_wrap.cxx  $(INC)
    $(CXX) -shared  $(TARGET)_wrap.o -o lib$(TARGET).so $(LIBS)
    $(JAVAC) $(PACKAGE)/*.java
    $(JAVAC) test.java
    $(JAR) cfv $(TARGET).jar $(PACKAGE)/*.class
test:
    env LD_LIBRARY_PATH=. $(JAVA) test
clean:
    rm -fr *.jar *.o *.so *.class $(PACKAGE)/*.class

cleanall:
    rm -fr $(TARGET).java *.cxx

2013년 4월 7일 일요일

mecab-ko-dic-1.1.5-20130407 배포합니다.

mecab-ko-dic-1.1.5-20130407이 나왔습니다.
  • 명사(NN.csv)와 복합명사(NN-Compound.csv)에 중복으로 등록되어있는 어휘 정리
여기서 받으실 수 있습니다.

2013년 3월 31일 일요일

mecab-ko-dic-1.1.5-20130317 배포합니다.

mecab-ko-dic-1.1.5-20130317이 나왔습니다.
  • 관형형 전성 어미(ETM)가 앞 형태소의 종성 유무를 보도록 학습 방식 변경
여기서 받으실 수 있습니다.

2013년 3월 25일 월요일

은전한닢 프로젝트를 사용한 위키백과 검색 페이지

은전한닢 프로젝트 테스트용 한국 위키백과(http://ko.wikipedia.org/) 검색 페이지를 만들어 보았습니다. 다음의 URL에서 테스트 해보실 수 있습니다.
아마존의 무료 클라우드의 사양이 낮기 때문에, 검색 속도는 좋지 않습니다.
Intel(R) Core(TM) i5 CPU 760@2.80GHz에서 230,163개의 위키 페이지를 인덱싱하는데 6분 23초의 시간이 걸렸습니다.

mecab-ko-lucene-analyzer-0.9.4 배포합니다.

mecab-ko-lucene-analyzer-0.9.4가 나왔습니다.
  • TokenGenerator.decompoundNoun() 로직 변경 및 관련 유닛 테스트 수정.
  • Token TypeAttribute에 품사 태그 넣도록 코드 수정.
  • '떨어진 명사 파생 접미사(XSN)'에도 '떨어진 조사'와 같은 처리를 하도록 수정.
여기서 받으실 수 있습니다.

2013년 3월 17일 일요일

mecab-ko-dic-1.1.4-20130317 배포합니다.

mecab-ko-dic-1.1.4-20130317이 나왔습니다.
  • Atomic.csv 제거 및 관련 스크립트 제거. 원래 사전의 단어 출현 비용을 직접 바꾸는 방식으로 변경
  • 한글 미지 언어 처리 방식 변경. 띄어쓰기 오류 수정 확률 높임 (설명 참조)
  • 명사 + 부사격 조사 '에'의 연접 비용 높임
  • 감탄사 '제길'의 출현 비용 낮춤
  • 명사 '이용'의 출현 비용 낮춤
  • 약간의 단어 추가 및 삭제
여기서 받으실 수 있습니다.

한글 미지 언어 처리 방식 변경에 대한 설명

MeCab의 모르는 단어 처리에 대한 설정은 char.def 파일에서 할 수 있습니다. mecab-ko-dic-1.1.4-20130317 이전 버전에서는 다음과 같이 정의되어 있습니다.
HANGUL          1 1 2 # Korean
mecab-ko-dic-1.1.4-20130317 버전 이후부터는 다음과 같이 기본 값이 바뀝니다.
HANGUL          0 1 2 # Korean
'모르는 단어를 어떻게 처리할 것인가?'에 대한 설정인데 자세한 것은 다음의 URL에서 참조하실 수 있습니다. 물론 일본어 입니다. 구글 번역을 사용해 보세요. :)

설정의 내용은 다음과 같습니다.
카테고리이름 동작타이밍(0/1) 그룹핑(0/1) 길이(0, 2 ... n)
바뀐 부분은 동작 타이밍 부분인데, mecab 문서에 보면 다음과 같이 설명되어있습니다.
동작 타이밍:
  그 카테고리에서 언제 불명 단어 처리를 움직 일까를 정의합니다.
    0: 알려진 단어가 있으면 알 수 없는 언어 처리를 작동시키지 않습니다.
    1: 항상 미지 언어 처리를 움직입니다.
테스트 결과, '0'인 경우 띄어쓰기가 없는 텍스트의 경우에는 잘 분석되지만, 모르는 단어가 과하게 분석되는 경우가 있고, '1'인 경우 모르는 단어가 나왔을 경우, 최대한 그룹핑돼서 분석되지만, 띄어쓰기가 없는 텍스트의 경우에도 분석이 안되는 경향이 보입니다. 아래에서 테스트 결과를 볼 수 있습니다.

동작 타이밍이 ‘0’인 경우 (‘칼카나마’가 사전에 없는 단어):
칼카나마 재밌다.
NN,T,칼,*,*,*,*
NN,F,카,*,*,*,*
나마 JX,F,나마,*,*,*,*
재밌 VA,T,재밌,*,*,*,*
EF,F,다,*,*,*,*
. SF,*,*,*,*,*,*
EOS
제주국립경마공원
제주 NN,F,제주,*,*,*,*
국립 NN,T,국립,*,*,*,*
경마 NN,F,경마,*,*,*,*
공원 NN,T,공원,*,*,*,*
EOS
동작 타이밍이 ‘1’인 경우:
칼카나마 재밌다.
칼카나마 NN,*,*,*,*,*,*
재밌 NN+VV,T,재밌,Inflect,NN,VV,재미/NN+있/VV
EF,F,다,*,*,*,*
. SF,*,*,*,*,*,*
EOS
제주국립경마공원
제주국립경마공원 NN,*,*,*,*,*,*
형태소 분석을 하는 문서의 성격에 따라서 변경을 하여 쓰실 수 있습니다. 변경 방법은 char.def에서 해당 내용을 변경하시고, 컴파일을 다시 해주시면 됩니다.

2013년 3월 1일 금요일

mecab-ko-lucene-analyzer-0.9.3 배포합니다.

mecab-ko-lucene-analyzer-0.9.3가 나왔습니다.
  • StandardIndexTokenizerFactory에서 decompoundMinLength 의 역할 변경함. 복합명사 분해시 분해되는 토큰의 최소 길이 설정. 기본값은 2입니다.
    • decompoundMinLength = 1 : "자동차" -> "자동차", "자동", "차"
    • decompoundMinLength = 2 : "자동차" -> "자동차", "자동"
  • 설정방법은 여기를 참고하세요.
여기서 받으실 수 있습니다.

  • java compile version: jdk1.6.0_41

2013년 2월 27일 수요일

mecab-ko-lucene-analyzer-0.9.2 배포합니다.

mecab-ko-lucene-analyzer-0.9.2가 나왔습니다.
  • StandardIndexTokenizerFactory에서 decompoundMinLength(복합명사 분해 최소 길이)를 세팅할 수 있도록 함. 복합명사의 길이가 decompoundMinLength 보다 작으면 분해하지 않음. 참고
여기서 받으실 수 있습니다.

2013년 2월 26일 화요일

mecab-ko-dic-1.1.3-20130226 배포합니다.

mecab-ko-dic-1.1.3-20130226이 나왔습니다.
  • 한자 사전을 추가
  • 조사 + 모든 품사에 대한 연접 비용 학습 방식을 변경
  • 약간의 단어 추가 및 삭제
여기서 받으실 수 있습니다.

2013년 2월 21일 목요일

Cent OS 5.9에서 MeCab 및 mecab-ko-dic 설치하기

 주로 Ubuntu 12.10에서 작업과 테스트를 했는데, Cent OS 5.9에서 테스트 해보니, 설치가 쉽지 않네요. Cent OS 5.9가 gcc와 autotools 버전이 낮아서 생기는 문제로 생각됩니다. 삽질 끝에 설치 방법 올립니다. 참고로 Cent OS 6.3에서는 별 문제 없이 MeCab 및 mecab-ko-dic 설치가 가능합니다.

MeCab 설치

일단, Cent OS 5.9의 기본 gcc에서는 다음과 같은 에러를 내면서, 컴파일이 안됩니다.
libtool: link: g++ -O3 -Wall -o .libs/mecab mecab.o  ./.libs/libmecab.so -lpthread -lstdc++ -Wl,-rpath -Wl,/usr/local/lib
./.libs/libmecab.so: undefined reference to `__sync_val_compare_and_swap_4'
collect2: ld returned 1 exit status
make[2]: *** [mecab] 오류 1
...
검색을 좀 해보니, 그냥 gcc 버전을 올리는 것이 답인 듯 하여, 다음과 같이 gcc 4.4.7을 설치 하였습니다.
# yum install gcc44 gcc44-c++
이후, 다음과 같이 컴파일 및 설치를 진행하시면 잘됩니다.
$ cd mecab-0.994
$ ./configure CXX=g++44
$ make
# make install

mecab-ko-dic 설치

mecab-ko-dic도 autotools의 버전 문제로 ./configure가 안됩니다. 다음과 같이 autoreconf로 configure 파일을 다시 작성하신 후 설치하시면 됩니다.
$ tar xvzf mecab-ko-dic-1.1.2-20130219.tar.gz
$ cd mecab-ko-dic-1.1.2-20130219
$ autoreconf -vi
$ ./configure
$ make
$ make install

2013년 2월 19일 화요일

mecab-ko-lucene-analyzer-0.9.1 배포합니다.

mecab-ko-lucene-analyzer-0.9.1이 나왔습니다.
  • 오분석 된 조사 처리 방식이 변경되었습니다. 참고 이슈
  • 지역명 사전(NN-Place.csv)에서 중복 어휘 제거하였습니다.
  • 조사와 조사의 연접 비용 학습 방식을 변경하였습니다.
여기서 받으실 수 있습니다.

mecab-ko-dic-1.1.2-20130219 배포합니다.

mecab-ko-dic-1.1.2-20130219이 나왔습니다.
  • 과도한 형태소 분석을 막기위한 Atomic.csv 사전이 추가 되었습니다.
  • 지역명 사전(NN-Place.csv)에서 중복 어휘 제거하였습니다.
  • 조사와 조사의 연접 비용 학습 방식을 변경하였습니다.

여기서 받으실 수 있습니다.

2013년 2월 16일 토요일

mecab-ko-dic-1.1.1-20130213 배포합니다.

mecab-ko-dic-1.1.1-20130213이 나왔습니다.
여기서 받으실 수 있습니다.

2013년 2월 12일 화요일

은전한닢 프로젝트를 소개합니다.

은전한닢 프로젝트는 “검색에서 쓸만한 오픈소스 한국어 형태소 분석기를 만들자!” 라는 생각으로 시작하게 된 프로젝트입니다.

‘검색에서 쓸만한’이란 목표 때문에 다음의 두 가지 항목에 초점을 맞춰 개발을 진행하였습니다.
  • 검색 엔진 색인기에서 쓸 수 있는 적당한 품질과 속도
  • 자유로운 라이센스
현재 이용운, 유영호 두 명의 개발자가 공동으로 개발하고 있으며, 총 세 가지의 프로젝트 목표 중 처음 두 개의 결과물을 사용해보실 수 있습니다.
위의 모든 배포물은 아파치 라이센스 2.0에 따라 사용, 재배포 할 수 있습니다. 보다 자세한 사항은 Apache License 2.0을 참조하시기 바랍니다.

형태소 분석을 위한 말뭉치 학습과 사전 목록 일부는 21세기 세종계획의 성과물을 사용하였으며, MeCab을 사용하게 된 것은 다음의 글과 사이트가 결정적 역할을 하였습니다.
프로젝트에 관한 보다 자세한 사항을 은전한닢 프로젝트 마인드맵에서 보실 수 있습니다. 검색이나 한국어 형태소 분석기에 관심이 많으신 분들은 한번 사용해보시고, 많은 피드백 부탁 드립니다. 제발~!!!

형태소분석기 테스트 해보기 - mecab 자체에서의 형태소 분석과 solr 또는 elasticsearch 에서 어떻게 분석되는지를 간단하게 보실 수 있습니다.