vengadan 의 contribution 으로 사전 압축 기능이 추가되었습니다. 낮은 성능의 인스턴스에서 실행시킬 수 있기를 기대합니다.
그리고 line feed 단위로 분석을 수행하여 문서 크기가 크더라도 메모리 사용을 최소화합니다.
전체적으로 heap 메모리 사용에 신경을 썼습니다.
앞으로도 고민할만한 곳이 많이 있는 것 같으나.. 시간이 부족하여 이후에 시간날 때 천천히 진행해보겠습니다.
메뉴얼:
* elasticsearch plugin
* seunjeon
2018년 2월 10일 토요일
2017년 9월 10일 일요일
elasticsearch-analysis-seunjeon 5.4.1.0 배포합니다.
오랜만의 작업입니다.
* 인덱스별로 사용자사전을 따로 로드하도록 변경하였습니다. 기존에 사전을 singleton으로 관리하다보니 변경된 사용자 사전을 적용하려면 elasticsearch를 재시작해야 했습니다. 이제는 사전 변경 후 인덱스를 새로 생성하면 analyzer instance가 만들어지면서 사용자사전 instance도 새로 만들어집니다. 아무래도 단점은 인덱스별로 사용자사전이 로드되다보니 사전 크기만큼 메모리 사용이 더 많아질 수 있습니다. 단, 시스템 사전은 singleton입니다.
README: https://bitbucket.org/eunjeon/seunjeon/raw/master/elasticsearch/
README: https://bitbucket.org/eunjeon/seunjeon/raw/master/elasticsearch/
2016년 12월 24일 토요일
seunjeon1.3.0 / elasticsearch-analysis-seunjeon 5.1.1.1 릴리즈합니다.
사용자 사전에 복합명사 추가가 가능해졌습니다.
'+' 로 복합명사를 표현할 수 있습니다.
예: "낄끼+빠빠"
escaping은 '\'로 가능합니다.
예: "c\+\+"
'+' 로 복합명사를 표현할 수 있습니다.
예: "낄끼+빠빠"
escaping은 '\'로 가능합니다.
예: "c\+\+"
seunjeon
- https://bitbucket.org/eunjeon/seunjeon
import org.bitbucket.eunjeon.seunjeon.Analyzer // 형태소 분석 Analyzer.parse("아버지가방에들어가신다.").foreach(println) // 어절 분석 Analyzer.parseEojeol("아버지가방에들어가신다.").foreach(println) // or Analyzer.parseEojeol(Analyzer.parse("아버지가방에들어가신다.")).foreach(println) /** * 사용자 사전 추가 * surface,cost * surface: 단어명. '+' 로 복합명사를 구성할 수 있다. * '+'문자 자체를 사전에 등록하기 위해서는 '\+'로 입력. 예를 들어 'C\+\+' * cost: 단어 출연 비용. 작을수록 출연할 확률이 높다. */ Analyzer.setUserDict(Seq("덕후", "버카충,-100", "낄끼+빠빠,-100", """C\+\+""").toIterator) Analyzer.parse("덕후냄새가 난다.").foreach(println) // 활용어 원형 Analyzer.parse("빨라짐").flatMap(_.deInflect()).foreach(println) // 복합명사 분해 val ggilggi = Analyzer.parse("낄끼빠빠") ggilggi.foreach(println) // 낄끼빠빠 ggilggi.flatMap(_.deCompound()).foreach(println) // 낄끼+빠빠 Analyzer.parse("C++").flatMap(_.deInflect()).foreach(println) // C++
analysis-seunjeon
- https://bitbucket.org/eunjeon/seunjeon/raw/master/elasticsearch/
#!/usr/bin/env bash ES='http://localhost:9200' ESIDX='seunjeon-idx' curl -XDELETE "${ES}/${ESIDX}?pretty" sleep 1 curl -XPUT "${ES}/${ESIDX}/?pretty" -d '{ "settings" : { "index":{ "analysis":{ "analyzer":{ "korean":{ "type":"custom", "tokenizer":"seunjeon_default_tokenizer" } }, "tokenizer": { "seunjeon_default_tokenizer": { "type": "seunjeon_tokenizer", "index_eojeol": false, "user_words": ["낄끼+빠빠,-100", "c\\+\\+", "어그로", "버카충", "abc마트"] } } } } } }' sleep 1 echo "# 삼성/N 전자/N" curl -XGET "${ES}/${ESIDX}/_analyze?analyzer=korean&pretty" -d '삼성전자' echo "# 빠르/V 지/V" curl -XGET "${ES}/${ESIDX}/_analyze?analyzer=korean&pretty" -d '빨라짐' echo "# 슬프/V" curl -XGET "${ES}/${ESIDX}/_analyze?analyzer=korean&pretty" -d '슬픈' echo "# 새롭/V 사전/N 생성/N" curl -XGET "${ES}/${ESIDX}/_analyze?analyzer=korean&pretty" -d '새로운사전생성' echo "# 낄끼/N 빠빠/N c++/N" curl -XGET "${ES}/${ESIDX}/_analyze?analyzer=korean&pretty" -d '낄끼빠빠 c++'
2016년 12월 15일 목요일
elasticsearch-analysis-seunjeon 5.1.1.0 배포합니다.
기능상 변경 없이 elasticsearch 5.1.1 버전에 맞게 새로 빌드하였습니다.
앞으로는 기능추가 없이 단순 elasticsearch 버전에 맞추는 릴리즈는 따로 공지하지 않겠습니다.
릴리즈 목록은 bitbucket README 에 명시하겠습니다.
감사합니다.
앞으로는 기능추가 없이 단순 elasticsearch 버전에 맞추는 릴리즈는 따로 공지하지 않겠습니다.
릴리즈 목록은 bitbucket README 에 명시하겠습니다.
감사합니다.
2016년 11월 6일 일요일
elasticsearch-analysis-seunjeon 5.0.0.0 배포합니다.
elasticsearch 5.0.0 지원 plugin 배포합니다. 추가된 기능은 없습니다. elastic팀 가이드대로 java 8 이상에서 실행해야 합니다.
추가나 수정된 기능은 없습니다.
추가나 수정된 기능은 없습니다.
소스 및 메뉴얼
설치
./bin/elasticsearch-plugin install https://oss.sonatype.org/service/local/repositories/releases/content/org/bitbucket/eunjeon/elasticsearch-analysis-seunjeon/5.0.0.0/elasticsearch-analysis-seunjeon-5.0.0.0.zip
2016년 9월 28일 수요일
elasticsearch-analysis-seunjeon 2.4.0.1 배포합니다.
elasticsearch plugin 2.4.0.1 배포합니다.
수정내용:
몇몇 단어에대해 deinflect 안되는 문제 해결.
소스 및 메뉴얼
설치
./bin/plugin install org.bitbucket.eunjeon/elasticsearch-analysis-seunjeon/2.4.0.1
2016년 9월 11일 일요일
elasticsearch-analysis-seunjeon 2.3.5.0 / 2.4.0.0 배포합니다.
elasticsearch 2.3.5 / 2.4.0 용 플러그인 배포합니다.
수정내용:
없음.
소스 및 메뉴얼
설치
./bin/plugin install org.bitbucket.eunjeon/elasticsearch-analysis-seunjeon/2.4.0.0
./bin/plugin install org.bitbucket.eunjeon/elasticsearch-analysis-seunjeon/2.3.5.0
2016년 5월 22일 일요일
elasticsearch-analysis-seunjeon 2.3.3.0 / 2.2.0.1 / 2.3.2.1 배포합니다.
elasticsearch 2.3.3 용 플러그인 배포합니다. 버그수정도 있습니다.
수정내용:
- 복합명사가 길게 쓰여져있을 경우 하나의 UNK로 뽑히는 문제 해결. 예를 들어 "농어촌체험휴양하누리마을" 를 분석할 경우 그대로 "농어촌체험휴양하누리마을/UNK"로 분석 되었던 것을 "농어촌/체험/휴양/하누리/마을" 로 분석하게 수정. 관련 이슈: https://groups.google.com/forum/#!topic/eunjeon/eRZvjP-U69I
- max_unk_length 옵션 추가. 설정할수있게 해두었지만 사용할일은 거의 없을 것 같습니다.
소스 및 메뉴얼
설치
./bin/plugin install org.bitbucket.eunjeon/elasticsearch-analysis-seunjeon/2.3.3.0
./bin/plugin install org.bitbucket.eunjeon/elasticsearch-analysis-seunjeon/2.3.2.1
./bin/plugin install org.bitbucket.eunjeon/elasticsearch-analysis-seunjeon/2.2.0.1
2016년 5월 7일 토요일
elasticsearch-analysis-seunjeon 2.3.2.0 배포합니다.
elasticsearch 2.3.2 용 플러그인 배포합니다. 변경사항은 없습니다.
소스 및 메뉴얼
설치
./bin/plugin install org.bitbucket.eunjeon/elasticsearch-analysis-seunjeon/2.3.2.0
2016년 4월 26일 화요일
elasticsearch-analysis-seunjeon 2.3.0.0 / elasticsearch-analysis-seunjeon 2.3.1.0 배포합니다
elasticsearch 가 plugin하위 호환을 맞춰주지 않아 새로운 버전이 나올때마다 plugin도 새롭게 릴리즈를 해줘야 합니다. 사실 해주는거라곤 plugin-descriptor.properties 파알안에 elasticsearch.version=x.x.x 값만 바꿔주는 정도인데, 참 귀찮게 하네요.
혹시 은전한닢 버전이 늦게 나오더라도 파일 다운받으셔서 직접 plugins/analysis-seunjeon/ 디렉토리에 복사해주셔도 되고, 아니면 zip파일에서 plugin-descriptor.properties 파일을 수정해서 설치하여 사용하셔도 됩니다.
소스 및 메뉴얼
https://bitbucket.org/eunjeon/seunjeon/src/.../elasticsearch?at=es-2.3.0.0
https://bitbucket.org/eunjeon/seunjeon/src/.../elasticsearch?at=es-2.3.1.0
https://bitbucket.org/eunjeon/seunjeon/src/.../elasticsearch?at=es-2.3.1.0
설치
./bin/plugin install org.bitbucket.eunjeon/elasticsearch-analysis-seunjeon/2.3.0.0
./bin/plugin install org.bitbucket.eunjeon/elasticsearch-analysis-seunjeon/2.3.1.0
2016년 2월 24일 수요일
elasticsearch-analysis-seunjeon 2.2.0.0 배포합니다.
elasticsearch 2.2.0 버전용 플러그인 릴리즈합니다. elasticsearch 버전별로 플러그인도 릴리즈해줘야 하는 번거로움이 있네요. 조금 대응이 늦더라도 이해부탁드립니다.
기능적으로 새롭게 추가한 것은 없습니다.
다만 기존에는 내부적으로 사전 탐색에 https://github.com/takawitter/trie4j 를 사용하고 있었는데, trie4j가 값 저장에 boxed Integer를 사용하고 있어 성능상 아쉬움이 있었습니다. 그래서 double array trie를 직접 구현하게 되었습니다. 성능이 눈에 띄게 좋아진건 아니지만 다소 개선되었습니다. 버그가 보이면 주저하지마시고 빠르게 알려주세요 ^^
기능적으로 새롭게 추가한 것은 없습니다.
다만 기존에는 내부적으로 사전 탐색에 https://github.com/takawitter/trie4j 를 사용하고 있었는데, trie4j가 값 저장에 boxed Integer를 사용하고 있어 성능상 아쉬움이 있었습니다. 그래서 double array trie를 직접 구현하게 되었습니다. 성능이 눈에 띄게 좋아진건 아니지만 다소 개선되었습니다. 버그가 보이면 주저하지마시고 빠르게 알려주세요 ^^
소스 및 메뉴얼
설치
./bin/plugin install org.bitbucket.eunjeon/elasticsearch-analysis-seunjeon/2.2.0.0
2016년 2월 20일 토요일
elasticsearch-analysis-seunjeon 2.1.1.3 배포합니다.
버그 fix 버전 새롭게 릴리즈합니다. 버그리포팅 및 의견 주신분들 감사합니다.
소스 및 메뉴얼
설치
./bin/plugin install org.bitbucket.eunjeon/elasticsearch-analysis-seunjeon/2.1.1.3
변경내용
- 활용어 원형 추출시 offet 오류로 exception 나는 문제 해결
- 영문 소문자로 변환해서 분석. 영어 단어는 소문자로 관리하면 됨
2016년 2월 8일 월요일
elasticsearch-analysis-seunjeon 2.1.1.2 배포합니다.
seunjeon 1.0.3 패치내용 적용하여 새로 릴리즈합니다.
흔히 발생할 수 있는 버그에 대한 패치입니다. 형태소분석 자체가 안되는 경우가 있었으니 모두 업그레이드 하여 사용하세요~
흔히 발생할 수 있는 버그에 대한 패치입니다. 형태소분석 자체가 안되는 경우가 있었으니 모두 업그레이드 하여 사용하세요~
소스 및 메뉴얼
https://bitbucket.org/eunjeon/seunjeon/src/.../elasticsearch/?at=es-2.1.1.2설치
./bin/plugin install org.bitbucket.eunjeon/elasticsearch-analysis-seunjeon/2.1.1.2
변경내용
- 특정 키워드가 들어간 문장에서 분석이 다 되지 않는 문제 해결
2016년 1월 30일 토요일
elasticsearch-analysis-seunjeon 2.1.1.1 배포합니다.
seunjeon 1.0.2 패치내용 적용하여 새로 릴리즈합니다.
흔히 발생할 수 있는 버그에 대한 패치입니다. 형태소분석 자체가 안되는 경우가 있었으니 모두 업그레이드 하여 사용하세요~
흔히 발생할 수 있는 버그에 대한 패치입니다. 형태소분석 자체가 안되는 경우가 있었으니 모두 업그레이드 하여 사용하세요~
소스 및 메뉴얼
https://bitbucket.org/eunjeon/seunjeon/src/.../elasticsearch?at=es-2.1.1.1설치
./bin/plugin install org.bitbucket.eunjeon/elasticsearch-analysis-seunjeon/2.1.1.1
변경내용
- 특수문자 연속해서 나올 경우 형태소분석이 안되는 문제 해결
2016년 1월 19일 화요일
elasticsearch-analysis-seunjeon 2.1.1.0 배포합니다.
이윤희님 의견과 커뮤니티에서 나오는 이야기를 듣고 기능 추가 합니다.
소스 및 메뉴얼
https://bitbucket.org/eunjeon/seunjeon/src/.../elasticsearch?at=es-2.1.1.0설치
./bin/plugin install org.bitbucket.eunjeon/elasticsearch-analysis-seunjeon/2.1.1.0
변경내용
- 사용자사전을 파일에서 읽을 수 있는 기능 추가. user_dict_path 옵션
- 항상 키워드와 품사태그를 함께 토크나이징 하던 것(예:자전거/N)을 옵션으로 선택할 수 있게 함. pos_tagging 옵션. stopword filter나 synonym filter 사용시 주의해야 합니다.
2016년 1월 5일 화요일
elasticsearch-analysis-seunjeon 2.1.0.0 배포합니다.
한국어 형태소분석기 elasticsearch plugin입니다. 기존 mecab-ko-lucene-analyzer 가 있지만 설치의 불편함때문에 순수 jvm에서 돌아가는 seunjeon을 가지고 만들었습니다. 설치가 편리한것이 가장 큰 장정입니다. 많은 피드백 부탁드립니다.
설치
./bin/plugin install org.bitbucket.eunjeon/elasticsearch-analysis-seunjeon/2.1.0.0
사용방법 (자세히..)
#!/bin/bash ES='http://localhost:9200' ESIDX='seunjeon-idx' curl -XDELETE $ES/$ESIDX?pretty curl -XPUT $ES/$ESIDX/?pretty -d '{ "settings" : { "index":{ "analysis":{ "analyzer":{ "korean":{ "type":"custom", "tokenizer":"seunjeon_tokenizer" }, "korean_noun": { "type":"custom", "tokenizer":"noun_tokenizer" } }, "tokenizer": { "seunjeon_tokenizer": { "type": "seunjeon_tokenizer", "user_words": ["낄끼빠빠,-100", "버카충"] }, "noun_tokenizer": { "type": "seunjeon_tokenizer", "index_eojeol": false, "index_poses": ["N"] } } } } } }' sleep 1 echo "========================================================================" curl -XGET $ES/$ESIDX/_analyze?analyzer=korean\&pretty -d '낄끼빠빠' echo "========================================================================" curl -XGET $ES/$ESIDX/_analyze?analyzer=korean\&pretty -d '삼성전자' echo "========================================================================" curl -XGET $ES/$ESIDX/_analyze?analyzer=korean\&pretty -d '슬픈' echo "========================================================================" curl -XGET $ES/$ESIDX/_analyze?analyzer=korean_noun\&pretty -d '꽃이피다'
주요기능
- 사용자 사전
- 복합명사 분해
- 활용어의 원형 추출
- 어절추출
- 추출함 품사 지정
피드 구독하기:
글 (Atom)