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

변경내용

  • 특수문자 연속해서 나올 경우 형태소분석이 안되는 문제 해결

seunjeon-1.0.2 배포합니다.


Wan-Hee Lee 님께서 기여해준신 내용 릴리즈합니다. 도움을 주셔서 감사합니다.

특수문자가 연속해서 나오는 경우 형태소분석 자체가 안되는 경우가 있었습니다. 중요한 버그 해결이라 모두 업그레이드 해서 사용하셔야 합니다.

Maven

<dependencies>
    <dependency>
        <groupId>org.bitbucket.eunjeon</groupId>
        <artifactId>seunjeon_2.11</artifactId>
        <version>1.0.2</version>
    </dependency>
</dependencies>

sbt

libraryDependencies += "org.bitbucket.eunjeon" %% "seunjeon" % "1.0.2"


변경내용

  • 특수문자가 연속해서 나오는 경우 형태소분석이 되지 않는 버그 고침

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 사용시 주의해야 합니다.


seunjeon-1.0.1 배포합니다.

Wan-Hee Lee 님께서 기여해준신 내용 릴리즈합니다. 도움을 주셔서 감사합니다.

Maven

<dependencies>
    <dependency>
        <groupId>org.bitbucket.eunjeon</groupId>
        <artifactId>seunjeon_2.11</artifactId>
        <version>1.0.1</version>
    </dependency>
</dependencies>

sbt

libraryDependencies += "org.bitbucket.eunjeon" %% "seunjeon" % "1.0.1"

변경 내용

  • 사용자 사전 로딩 보그 수정. 추천하는 방식은 아니나, mecab-ko-dic-2.0.1-20150920 에서 사용하던 csv 사전을 그대로 사용하실 수 있습니다. 이용하시던 사용자 사전이 있다면 그대로 사용하실수 있습니다. 하지만 사전 버전이 다르면 문제가 될 수 있습니다. 사전버전에따라 좌/우문맥ID가 다를 수 있기 때문에 주의해서 사용해야 합니다.
  • Scala 1.10, Scala 1.11 모두 지원합니다.

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

주요기능

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

seunjeon 1.0.0 배포합니다.

많은 부분 변경되었습니다. 클래스명도 바뀌고 멤버변수들도 많이 바뀌었습니다. 업그레이드 하시는분은 조금 신경을 써야할 것 같습니다.

* 소스 및 사용법: https://bitbucket.org/eunjeon/seunjeon

Maven

<dependencies>
    <dependency>
        <groupId>org.bitbucket.eunjeon</groupId>
        <artifactId>seunjeon_2.11</artifactId>
        <version>1.0.0</version>
    </dependency>
</dependencies>

사용

scala

import org.bitbucket.eunjeon.seunjeon.Analyzer

// 형태소 분석
Analyzer.parse("아버지가방에들어가신다.").foreach(println)

// 어절 분석
Analyzer.parseEojeol("아버지가방에들어가신다.").foreach(println)
// or
Analyzer.parseEojeol(Analyzer.parse("아버지가방에들어가신다.")).foreach(println)

/**
  * 사용자 사전 추가
  * surface,cost
  *   surface: 단어
  *   cost: 단어 출연 비용. 작을수록 출연할 확률이 높다.
  */
Analyzer.setUserDict(Seq("덕후", "버카충,-100", "낄끼빠빠").toIterator)
Analyzer.parse("덕후냄새가 난다.").foreach(println)

// 활용어 원형
Analyzer.parse("슬픈").flatMap(_.deInflect()).foreach(println)

// 복합명사 분해
Analyzer.parse("삼성전자").flatMap(_.deCompound()).foreach(println)
품사태그는 여기를 참고하세요.

java

https://bitbucket.org/eunjeon/seunjeon/src/34ede59563e24fa051f5f325f91a8b1e6d1e0f12/?at=v0.1.0


새로운 기능

  • Windows OS 지원(by 이항령 https://bitbucket.org/akaroice/)
  • offset 값을 문장단위에서 전체 문서 기준으로 변경 
  • 사전 - endPos 를 substring에 잘 어울리도록 1을 더해줬음.
  • 사전 - POS id 를 int 에서 enum 타입으로 변경
  • 사전 - pos 를 poses로 변경. compound, inflect, preanalysis 처리에 적합
  • 사전 로딩 시간 다소 단축
  • preAnalysis 사전 자동 분해
  • 복합명사 분해 기능 지원 (deCompound)
  • 활용어의 원형 추출 기능 지원 (deInflect)
  • 형태소분석 속도 개선(for/map -> while 문 사용)