레이블이 analysis인 게시물을 표시합니다. 모든 게시물 표시
레이블이 analysis인 게시물을 표시합니다. 모든 게시물 표시

2018년 2월 10일 토요일

seunjeon-1.5.0/elasticsearch-analysis-seunjeon 6.1.1.1 배포합니다.

vengadan 의 contribution 으로 사전 압축 기능이 추가되었습니다. 낮은 성능의 인스턴스에서 실행시킬 수 있기를 기대합니다. 
그리고 line feed 단위로 분석을 수행하여 문서 크기가 크더라도 메모리 사용을 최소화합니다.
전체적으로 heap 메모리 사용에 신경을 썼습니다.
앞으로도 고민할만한 곳이 많이 있는 것 같으나.. 시간이 부족하여 이후에 시간날 때 천천히 진행해보겠습니다.

메뉴얼:
* elasticsearch plugin
* seunjeon

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/

2016년 12월 24일 토요일

seunjeon1.3.0 / elasticsearch-analysis-seunjeon 5.1.1.1 릴리즈합니다.

사용자 사전에 복합명사 추가가 가능해졌습니다.

'+' 로 복합명사를 표현할 수 있습니다.
  예: "낄끼+빠빠"
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 에 명시하겠습니다.

감사합니다.

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 파일을 수정해서 설치하여 사용하셔도 됩니다.

소스 및 메뉴얼


설치

./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를 직접 구현하게 되었습니다. 성능이 눈에 띄게 좋아진건 아니지만 다소 개선되었습니다. 버그가 보이면 주저하지마시고 빠르게 알려주세요 ^^

소스 및 메뉴얼


설치

./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 '꽃이피다'

주요기능

  • 사용자 사전
  • 복합명사 분해
  • 활용어의 원형 추출
  • 어절추출
  • 추출함 품사 지정