GithubHelp home page GithubHelp logo

shineware / komoran Goto Github PK

View Code? Open in Web Editor NEW
275.0 19.0 62.0 113.46 MB

Korean Morphological Analyzer by shineware

License: Apache License 2.0

Java 71.49% Makefile 0.11% HTML 27.40% Python 0.95% CSS 0.06%
komoran nlp morphological-analysis korean-text-processing shineware korean-nlp

komoran's Introduction

KOMORAN 3.0

Java CI Coverage Status Downloads Downloads

English | 한국어

KOMORANKOrean MORphological ANalyzer의 약자로, Java로 구현한 한국어 형태소 분석기입니다.

주요 특징

  • 순수한 Java로 구현
    • 100% Java로만 개발되었기 때문에 자바가 설치된 환경이라면 어디서든지 사용 가능합니다.
  • 외부 라이브러리 독립적
    • 자체 제작한 Library들만을 사용하여 외부 Library와의 의존성 문제가 없습니다.
  • 경량화
    • 자소 단위 처리, TRIE 사전 등으로 약 50MB 메모리 상에서도 동작 가능합니다.
  • 쉬운 사용법
    • Library 적용 후 소스 코드 내 1줄만 추가하여 형태소 분석기를 사용할 수 있습니다.
  • 사전 관리 용이
    • 일반 텍스트 파일의 형태로 구성되어 가독성이 높으며 바로 편집이 가능합니다.
  • 새로운 분석 결과
    • 타 형태소 분석기와 달리 공백이 포함된 형태소 단위로 분석이 가능합니다.

데모 및 예시

  • KOMORAN 사이트에서 아래와 같이 분석 결과를 미리 확인해볼 수 있습니다.
  • 입력 문장: 대한민국은 민주공화국이다. KOMORAN Demo#1

설치

'설치하기' 문서를 참고해주세요.

빠른 사용법

'3분 만에 형태소 분석 따라하기' 문서를 참고해주세요.

사용 예시

KOMORAN 참고 자료

KOMORAN을 개발한 shineware에서 제공하는 참고자료입니다.

공식 Wrapper 자료

shineware에서 개발한 공식 wrapper 자료입니다.

  • PyKOMORAN에서 Python용 KOMORAN을 사용하실 수 있습니다.

그 외 참고 자료

사용자 분들께서 만들어주신 참고자료입니다.

  • Hyunjoong Kim님께서 Python 버전의 KOMORAN3Py(/lovit/komoran3py)를 공개해주셨습니다.

인용

@misc{komoran,
author = {Junsoo Shin, Junghwan Park, Geunho Lee},
title = {komoran},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/shineware/KOMORAN}}

참조된 논문 (2019~2020)

국내 논문

[2020년]
  • 우윤희, and 김현희. "국민청원 주제 분석 및 딥러닝 기반 답변 가능 청원 예측." 정보처리학회논문지. 소프트웨어 및 데이터 공학 9.2 (2020): 45-52.
  • 최병서, 이익훈, and 이상구. "신조어 및 띄어쓰기 오류에 강인한 시퀀스-투-시퀀스 기반 한국어 형태소 분석기." 정보과학회논문지 47.1 (2020): 70-77.
  • 이현섭, and 김진덕. "빅데이터 클러스터에서의 추출된 형태소를 이용한 유사 동영상 추천 시스템 설계." 한국정보통신학회논문지 24.2 (2020): 172-178.
[2019년]
  • 박종인, and 김남규. "복합 문서의 의미적 분해를 통한 다중 벡터 문서 임베딩 방법론." 지능정보연구 25.3 (2019): 19-41.
  • 안정원, 강예미, and 김건동. "AI 스피커와 감성 대화 시 답변 유형에 따른 사용자 선호도 연구." 한국디자인학회 학술발표대회 논문집 (2019): 227-228.
  • 우경진, and 정수현. "문장 유형에 따른 한글 형태소 분석기 비교." 한국정보과학회 학술발표논문집 (2019): 1388-1390.
  • 김시은, and 김민수. "감정 상태를 파악하는 상담용 챗봇 설계." Proceedings of KIIT Conference. 2019.
  • 이민정, and 김용현. "VoC 유형 자동분류." 대한산업공학회 추계학술대회 논문집 (2019): 2756-2780.
  • 김현지, et al. "조현병과 정신분열병에 대한 뉴스 프레임 분석을 통해 본 사회적 인식의 변화." 한국문헌정보학회지 53.4 (2019): 285-307.
  • 이새미, and 홍순구. "토픽모델링 기법을 활용한 블록체인 동향 분석." 한국정보통신학회 여성 ICT 학술대회 논문집 (2019): 44-47.
  • 한정훈, 구소현, and 이한주. "남녀 운동선수 관련 언론보도의 성평등 정도 분석." 한국사회체육학회지 78 (2019): 217-229.
  • 이현섭, et al. "키워드 분석을 위한 단어 및 형태소 추출 시스템 설계." 한국정보통신학회 종합학술대회 논문집 23.2 (2019): 538-539.
  • 윤재연. 추가 정보를 고려한 상품 리뷰 요약 기법. 2019. PhD Thesis. 서울대학교 대학원.
  • 신진섭, et al. "문서를 얼마 동안 보존해야 할까?-순환 신경망 기반의 문서 보존기간 자동 분류." 한국정보과학회 학술발표논문집 (2019): 850-852
  • 허광호, 고영중, and 서정연. "저-자원 언어의 번역 향상을 위한 다중-언어 기계번역." 한국정보과학회 학술발표논문집 (2019): 649-651.
  • 박찬민, et al. "한국어 ELMo 임베딩을 이용한 의미역 결정." 한국정보과학회 학술발표논문집 (2019): 608-610.
  • 최민성, and 온병원. "형태소 자질에 따른 Bi-LSTM 모델의 감성분석 정확도 비교연구." Proceedings of KIIT Conference. 2019.
  • 이인아, and 김혜진. "텍스트마이닝 기법을 활용한 국내외 장소성 관련 연구동향 분석." 한국비블리아학회지 30.2 (2019): 189-209.
  • 홍기혜, and 최민지. "텍스트 네트워크 분석을 활용한 학교사회복지와 교육복지 연구동향 비교 분석." 학교사회복지 46 (2019): 25-51.
  • Kim, Soohyon, et al. "경제 분석을 위한 텍스트 마이닝 (Text Mining for Economic Analysis)." Available at SSRN 3405781 (2019).
  • 배수진. "대학글쓰기의 과제와 빅데이터를 활용한 인문계 글쓰기 방안." 어문학 143 (2019): 395-421.
  • 정지수, et al. "문서 유사도를 통한 관련 문서 분류 시스템 연구." 방송공학회논문지 24.1 (2019): 77-86.
  • 고명현, et al. "효율적 대화 정보 예측을 위한 개체명 인식 연구." 방송공학회논문지 24.1 (2019): 58-66.

해외 논문

[2020년]
  • Jee, H., M. Tamariz, and R. Shillcock. "The meaning-sound systematicity also found in the Korean language."
  • Park, Seungsoo, and Manhee Lee. "ARTAS: automatic research trend analysis system for information security." Proceedings of the 35th Annual ACM Symposium on Applied Computing. 2020.
  • Choi, Yong Suk, Hansung Kim, and Dongyoung Sohn. "Mapping Social Distress: A Computational Approach to Spatiotemporal Distribution of Anxiety." Social Science Computer Review (2020): 0894439320914505.
  • Jin, Hoon, and Dong-Won Joo. "Method and Steps for Diagnosing the Possibility of Corporate Bankruptcy Using Massive News Articles." IEIE Transactions on Smart Processing & Computing 9.1 (2020): 13-21.
[2019년]
  • Heo, Yoonseok, Sangwoo Kang, and Donghyun Yoo. "Multimodal neural machine translation with weakly labeled images." IEEE Access 7 (2019): 54042-54053.
  • Nam, Chung-Hyeon, and Kyung-Sik Jang. "KNE: An Automatic Dictionary Expansion Method Using Use-cases for Morphological Analysis." Journal of information and communication convergence engineering 17.3 (2019): 191-197.
  • Lee, Joohong, Dongyoung Sohn, and Yong Suk Choi. "A tool for spatio-temporal analysis of social anxiety with Twitter data." Proceedings of the 34th ACM/SIGAPP Symposium on Applied Computing. 2019.
  • Ihm, Sun-Young, Ji-Hye Lee, and Young-Ho Park. "Skip-Gram-KR: Korean Word Embedding for Semantic Clustering." IEEE Access 7 (2019): 39948-39961.
  • Kwon, Sunjae, Youngjoong Ko, and Jungyun Seo. "Effective vector representation for the Korean named-entity recognition." Pattern Recognition Letters 117 (2019): 52-57.
  • Kim, Jayong, and Y. Yi Mun. "A hybrid modeling approach for an automated lyrics-rating system for adolescents." European Conference on Information Retrieval. Springer, Cham, 2019.
  • Edmiston, Daniel, and Taeuk Kim. "Intrinsic Evaluation of Grammatical Information within Word Embeddings." (2019).
  • Xu, Guanghao, Youngjoong Ko, and Jungyun Seo. "Improving Neural Machine Translation by Filtering Synthetic Parallel Data." Entropy 21.12 (2019): 1213.
  • Kim, Tae-Ho, et al. "Emotional Voice Conversion using multitask learning with Text-to-speech." arXiv preprint arXiv:1911.06149 (2019).
  • Yoo, Kang Min, Taeuk Kim, and Sang-goo Lee. "Don't Just Scratch the Surface: Enhancing Word Representations for Korean with Hanja." arXiv preprint arXiv:1908.09282 (2019).
  • Lee, Sang Yup, and Min Ho Ryu. "Exploring characteristics of online news comments and commenters with machine learning approaches." Telematics and Informatics 43 (2019): 101249.
  • JAE-YON, L. E. E., and KIM HYUNJOO. "The Text-Mining of Munhwa (Culture): The Case of a Popular Magazine in 1930s Korea." Acta Koreana 22.2 (2019).
  • Kong, Hyesoo, and Wooju Kim. "Generating summary sentences using Adversarially Regularized Autoencoders with conditional context." Expert Systems with Applications 130 (2019): 1-11.
  • Jo, Wonkwang, and Myoungsoon You. "News media’s framing of health policy and its implications for government communication: A text mining analysis of news coverage on a policy to expand health insurance coverage in South Korea." Health Policy 123.11 (2019): 1116-1124.

참조된 문서 (2019~2020)

komoran's People

Contributors

9bow avatar changukshin avatar gamamoe avatar hnccho avatar junsoo-shin avatar shin285 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

komoran's Issues

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'. > java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

안녕하세요 ?
안드로이드 스튜디오에서 코모란을 이용해서 형태소분석을 해보려고 합니다
이클립스트에서는 성공을 했으나 안드로이드스튜디오에서는 계속 실패를 하고 있습니다.
새로운 프로젝트를 생성해서 그곳에서 코모란 형태소를 불러오고 싶어서
jar 을 libs에 추가하고 buil.gradle에 추가작업을 해주고 실행을 했더니
이런 에러가 발생하였습니다

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.> java.lang.RuntimeException: java.lang.RuntimeException:
com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

구글링으로 찾아보았지만 그 방법들 모두 돌아가지 않았습니다

혹시 해결하신분들이 있다면 답변부탁드리겠습니다
정말 감사합니다

KOMORAN Spark Wrapper

안녕하세요. Spark 환경에서 KOMORAN으로 고객 Review를 분석하는 개발자입니다.
제 경우, KOMORAN udf를 만들어서 분석하고 있는데요.
Spark용 Wrapper가 있으면 좋겠다는 생각이 듭니다.
혹시 Spark Wrapper를 작성해서 maven 등에 배포가 가능할까요?
가능하다면, 참고 및 준수해야 할 라이센스 규정 등을 알려주시면 감사하겠습니다.

windows 호환성 문제

버전 3.3.3 기준으로 windows에서 작동하지 않는 것으로 보입니다.

Komoran class 초기화를 다음 코드로 실행하면 오류가 납니다.

 Komoran komoran = new Komoran(DEFAULT_MODEL.FULL);

오류 메시지는 아래와 같습니다.

java.lang.NullPointerException
	at java.io.Reader.<init>(Reader.java:78)
	at java.io.InputStreamReader.<init>(InputStreamReader.java:97)
	at kr.co.shineware.nlp.komoran.modeler.model.PosTable.load(PosTable.java:107)
	at kr.co.shineware.nlp.komoran.core.model.Resources.loadPosTable(Resources.java:87)
	at kr.co.shineware.nlp.komoran.core.Komoran.<init>(Komoran.java:81)
	at KomoranTest.main(KomoranTest.java:10)
java.lang.NullPointerException
	at java.util.zip.InflaterInputStream.<init>(InflaterInputStream.java:83)
	at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:77)
	at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:91)
	at kr.co.shineware.ds.aho_corasick.model.AhoCorasickNode.load(AhoCorasickNode.java:129)
	at kr.co.shineware.ds.aho_corasick.AhoCorasickDictionary.load(AhoCorasickDictionary.java:33)
	at kr.co.shineware.nlp.komoran.modeler.model.IrregularTrie.load(IrregularTrie.java:79)
	at kr.co.shineware.nlp.komoran.core.model.Resources.loadIrregular(Resources.java:114)
	at kr.co.shineware.nlp.komoran.core.Komoran.<init>(Komoran.java:82)
	at KomoranTest.main(KomoranTest.java:10)
java.lang.NullPointerException
	at java.util.zip.InflaterInputStream.<init>(InflaterInputStream.java:83)
	at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:77)
	at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:91)
	at kr.co.shineware.ds.aho_corasick.model.AhoCorasickNode.load(AhoCorasickNode.java:129)
	at kr.co.shineware.ds.aho_corasick.AhoCorasickDictionary.load(AhoCorasickDictionary.java:33)
	at kr.co.shineware.nlp.komoran.modeler.model.Observation.load(Observation.java:84)
	at kr.co.shineware.nlp.komoran.core.model.Resources.loadObservation(Resources.java:96)
	at kr.co.shineware.nlp.komoran.core.Komoran.<init>(Komoran.java:83)
	at KomoranTest.main(KomoranTest.java:10)
java.lang.NullPointerException
	at java.util.zip.InflaterInputStream.<init>(InflaterInputStream.java:83)
	at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:77)
	at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:91)
	at kr.co.shineware.nlp.komoran.modeler.model.Transition.load(Transition.java:91)
	at kr.co.shineware.nlp.komoran.core.model.Resources.loadTransition(Resources.java:105)
	at kr.co.shineware.nlp.komoran.core.Komoran.<init>(Komoran.java:84)
	at KomoranTest.main(KomoranTest.java:10)
Exception in thread "main" java.lang.NullPointerException
	at kr.co.shineware.nlp.komoran.modeler.model.PosTable.getId(PosTable.java:58)
	at kr.co.shineware.nlp.komoran.core.model.Lattice.makeStartNode(Lattice.java:70)
	at kr.co.shineware.nlp.komoran.core.model.Lattice.init(Lattice.java:64)
	at kr.co.shineware.nlp.komoran.core.model.Lattice.<init>(Lattice.java:55)
	at kr.co.shineware.nlp.komoran.core.Komoran.analyze(Komoran.java:139)
	at KomoranTest.main(KomoranTest.java:13)

아마 Komoran class의 다음 부분이 문제인 것 같습니다.

        InputStream posTableFile = this.getResourceStream(modelPath + File.separator + "pos.table");
        InputStream irrModelFile = this.getResourceStream(modelPath + File.separator + "irregular.model");
        InputStream observationFile = this.getResourceStream(modelPath + File.separator + "observation.model");
        InputStream transitionFile = this.getResourceStream(modelPath + File.separator + "transition.model");

File.separator가 windows에서 \로 처리되어서 발생하는 문제인 것 같습니다.

기분석 사전 적용 시의 분석 결과 이슈

기분석 사전(fwd.user) 적용 시, 분석 결과가 이상하게 표현되고 있습니다.

기분석 사전 적용 전
[테스트/NNP(0,3), 단어/NNG(4,6)]

기분석 사전
테/NNG 스/NNG 트/NNG

기분석 사전 적용 후
[테/NNG(0,3), 스/NNG(0,3), 트/NNG(0,3), 단어/NNG(4,6)]

각 Token의 beginIndex와 endInex가 기분석 사전 적용 전과 동일한 것이 이슈로,
기분석 사전 적용 후 인덱스에 대한 재계산이 필요해보입니다.

android 지원

Hello! I'm developing applications for Korean on android but I can not use your library. Because it out memory.

Suggestion of a method accessibility

[English follows Korean]
@shin285 안녕하세요.
최근에 추가된 method getMorphesByTags의 메소드 접근성 변경에 대해 제안이 있습니다.
우선 현재 master branch의 코드는 다음과 같습니다.

// KomoranResult.java
...
public List<String> getMorphesByTags(String... str) {
    return this.getMorphesByTags(Arrays.asList(str));
}

private List<String> getMorphesByTags(Collection<String> targetPosCollection) {
    Set<String> targetPosSet = new HashSet<>(targetPosCollection);

    List<String> morphList = new ArrayList<>();
    for (LatticeNode latticeNode : resultNodeList) {
        if (targetPosSet.contains(latticeNode.getTag())) {
            morphList.add(parser.combine(latticeNode.getMorphTag().getMorph()));
        }
    }
    return morphList;
}
...

현재 버전에서는 String... str 형태의 varagrs 형태의 메소드만 public으로 사용할 수 있는데요.
현재 private로 되어있는 Collection<String>을 인자로 받는 method도 public으로 바꿀 수 있을지 여쭤보고 싶습니다.

public으로 오픈 시 제가 생각하는 2가지 장점은 다음과 같습니다.

  • 메소드 호출 시 문자열 하드코딩보다 Collection 객체를 전달하는 것을 선호하는 사용자가 있을 수 있다.
  • Spark UDF에서 varargs를 지원하는 형태로 만들기가 어려움

특별한 side-effect가 없다면 변경할 수 있을까요?

Hello, KOMORAN Team.
I would like have a suggestion of accessibility change about getMorphesByTags recently added.
Current code of master branch is like this.

// KomoranResult.java
...
public List<String> getMorphesByTags(String... str) {
    return this.getMorphesByTags(Arrays.asList(str));
}

private List<String> getMorphesByTags(Collection<String> targetPosCollection) {
    Set<String> targetPosSet = new HashSet<>(targetPosCollection);

    List<String> morphList = new ArrayList<>();
    for (LatticeNode latticeNode : resultNodeList) {
        if (targetPosSet.contains(latticeNode.getTag())) {
            morphList.add(parser.combine(latticeNode.getMorphTag().getMorph()));
        }
    }
    return morphList;
}
...

We can only use varargs argument String... str method as a public in current version.
Is it possible to change private method that has Collection<String> argument to public method?

There may be two advantage if it is change to public method.

  • Some users prefer to use collection object than string hard coding when they call a method.
  • It is difficult to wrap varargs argument method to make Spark UDF.

Is it ok to change it if there is no side-effect?

코모란 어드민 페이지 개발

트레이닝 데이터, 사용자 사전, 기분석 사전을 관리하기 위한 코모란 어드민 페이지가 필요합니다....ㅠㅠ
별도의 repository(project)로 생성되어지길 간절히..아주 간절히 바랍니다..ㅠ

3.1.0 version 리소스 질문

안녕하세요
안드로이드에 프로젝트를 적용해보려고 시도중입니다.

3.1.0 이후 버전의 경우 Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'. > java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
에러로 인하여 사용이 불가능하여 가능한 버전을 찾던 중 3.1.0 이하의 버전은 빌드가 가능하여 이를 이용하여 프로젝트에 적용해보려고 합니다.

프로젝트 적용시 Komoran komoran = new Komoran("models"); 해당 부분에서 resource를 찾을 수 없다고 나오는데, 라이브러리 내에서 해당 resource를 포함하고 있지 않은 것인지 궁금합니다.

// test
try {
Komoran komoran = new Komoran("models");

        String input = "밀리언 달러 베이비랑 바람과 함께 사라지다랑 뭐가 더 재밌었어?";
        KomoranResult analyzeResultList = komoran.analyze(input);
        List<Token> tokenList = analyzeResultList.getTokenList();
        for (Token token : tokenList) {
            // result = token.toString() + '\n';
            System.out.println(token);
            System.out.println(token.getMorph() + "/" + token.getPos() + "(" + token.getBeginIndex() + "," + token.getEndIndex() + ")");
            System.out.println();
        }
    }

Code refactoring

코드 경량화 및 복잡도를 줄이기 위한 refactoring

코모란을 사용해 보고싶습니다.

웹 페이지내 한글 색인을 정리하기 위해 사용해 보려고 하는데요,
형태소 분석기에 대해 지식이 거의 없습니다.

혹시 코모란에서 트레이닝 샘플이 있던데,
트레이닝을 통해
코모란에 어떤 영향을 끼치는지,
문서나 참고할만한 자료 있을까요?

Add FileNotFoundException in addition to Exception

There are two constructors that creates a new Komoran() object, and one of the constructor receives a modelPath.

At this time, if the modelPath directory exists, but there are no model files in there, FileNotFoundException is occured as below log. (eg. models_notexist directory is empty)

java.io.FileNotFoundException: /KOMORAN/PyKOMORAN/python/PyKomoran/models_notexist/pos.table (No such file or directory)
       ...
    at java.io.FileInputStream.<init>(FileInputStream.java:93)
    at java.io.FileReader.<init>(FileReader.java:58)
    at kr.co.shineware.nlp.komoran.modeler.model.PosTable.load(PosTable.java:90)
    at kr.co.shineware.nlp.komoran.core.model.Resources.load(Resources.java:74)
    at kr.co.shineware.nlp.komoran.core.Komoran.load(Komoran.java:571)
    at kr.co.shineware.nlp.komoran.core.Komoran.<init>(Komoran.java:60)
    at kr.co.shineware.nlp.pykomoran.KomoranEntryPoint.init(KomoranEntryPoint.java:28)
       ...
java.io.FileNotFoundException: /KOMORAN/PyKOMORAN/python/PyKomoran/models_notexist/observation.model (No such file or directory)
       ...
    at java.io.FileInputStream.<init>(FileInputStream.java:93)
    at kr.co.shineware.ds.aho_corasick.model.AhoCorasickNode.load(AhoCorasickNode.java:107)
    at kr.co.shineware.ds.aho_corasick.AhoCorasickDictionary.load(AhoCorasickDictionary.java:22)
    at kr.co.shineware.nlp.komoran.modeler.model.Observation.load(Observation.java:76)
    at kr.co.shineware.nlp.komoran.core.model.Resources.load(Resources.java:75)
    at kr.co.shineware.nlp.komoran.core.Komoran.load(Komoran.java:571)
    at kr.co.shineware.nlp.komoran.core.Komoran.<init>(Komoran.java:60)
    at kr.co.shineware.nlp.pykomoran.KomoranEntryPoint.init(KomoranEntryPoint.java:28)
       ...
java.io.FileNotFoundException: /KOMORAN/PyKOMORAN/python/PyKomoran/models_notexist/transition.model (No such file or directory)
       ...
    at java.io.FileInputStream.<init>(FileInputStream.java:93)
    at kr.co.shineware.nlp.komoran.modeler.model.Transition.load(Transition.java:69)
    at kr.co.shineware.nlp.komoran.core.model.Resources.load(Resources.java:76)
    at kr.co.shineware.nlp.komoran.core.Komoran.load(Komoran.java:571)
    at kr.co.shineware.nlp.komoran.core.Komoran.<init>(Komoran.java:60)
    at kr.co.shineware.nlp.pykomoran.KomoranEntryPoint.init(KomoranEntryPoint.java:28)
       ...
java.io.FileNotFoundException: /KOMORAN/PyKOMORAN/python/PyKomoran/models_notexist/irregular.model (No such file or directory)
       ...
    at java.io.FileInputStream.<init>(FileInputStream.java:93)
    at kr.co.shineware.ds.aho_corasick.model.AhoCorasickNode.load(AhoCorasickNode.java:107)
    at kr.co.shineware.ds.aho_corasick.AhoCorasickDictionary.load(AhoCorasickDictionary.java:22)
    at kr.co.shineware.nlp.komoran.modeler.model.IrregularTrie.load(IrregularTrie.java:71)
    at kr.co.shineware.nlp.komoran.core.model.Resources.load(Resources.java:77)
    at kr.co.shineware.nlp.komoran.core.Komoran.load(Komoran.java:571)
    at kr.co.shineware.nlp.komoran.core.Komoran.<init>(Komoran.java:60)
    at kr.co.shineware.nlp.pykomoran.KomoranEntryPoint.init(KomoranEntryPoint.java:28)
       ...

Each class file actually throws an Exception like this, but need to throw more specific Exception (such as FileNotFoundException).

If it's reasonable, please let me know. I'll make a PR.

Thanks. :D

API 문서 추가

  • 각 클래스/메소드에 Javadoc을 위한 comment 추가
  • Example code 추가

KomoranResult의 getTokenList 시 간헐적으로 NullPointException 발생

komoran3.0 사용을 위해 테스트 하고 있습니다.
동작은 잘 하는데 특정 글자에서 java.lang.NullPointerException 에러가 발생하고 있습니다.
테스트한 글자는 '센', '센트롤이' 두가지 이구요 '센트롤' 이라고 하면 에러없이 정상작동 합니다.
KomoranResult.java 에서 Second 에 셋팅되지 않아서 에러가 나는것 같습니다.
if(jasoBeginIdx >= syllableAreaList.get(i).getSecond()){
syllableAreaPair.setSecond(i+1);
}

좀 더 추척해봤지만 소스 전체를 다 이해하지 못해서 어떻게 수정해야할지를 모르겠습니다~~
도움 부탁드려요~

Android Stduio에서 컴파일시 클래스 충돌이 발생합니다.

문제 설명

#18
Kotlin(안드로이드 스튜디오)에서 KOMORAN을 사용하면 컴파일 시 클래스 충돌이 일어납니다.
구글링을 거쳐본 결과, 코틀린에서 자바 라이브러리 등을 연결하면 그렇다고 하는 일부 의견도 있던데, 이 라이브러리만 이렇게 동작을 하는지라 그거랑은 다른 문제인거 같습니다..

어떤 문제이고 어떤 방식으로 해결하면 될지 조언해주시면 감사하겠습니다! 😃

재현 경로

프로젝트 단위 그레이들
repositories { .... maven { url 'https://jitpack.io' } }

앱단위 그레이들
dependencies { .... implementation 'com.github.shin285:KOMORAN:3.3.3' }

설정 후 코드에서 import조차 하지않고 바로 실행하였습니다.

환경 정보

  • OS 종류 / 버전: Android Oreo(개발환경은 Windows)
  • 언어 : Kotlin
  • Komoran 버전: 3.3.3
  • 그레이들 버전: 3.4.0
  • 코틀린 버전:1.3.21
  • 안드로이드 스튜디오 버전: 3.4.2

추가 정보

로그
Duplicate class kr.co.shineware.ds.aho_corasick.AhoCorasickDictionary found in modules KOMORAN-3.3.3.jar (com.github.shin285:KOMORAN:3.3.3) and aho-corasick-1.0.9.jar (com.github.shineware:aho-corasick:1.0.9)
Duplicate class kr.co.shineware.ds.aho_corasick.FindContext found in modules KOMORAN-3.3.3.jar (com.github.shin285:KOMORAN:3.3.3) and aho-corasick-1.0.9.jar (com.github.shineware:aho-corasick:1.0.9)
Duplicate class kr.co.shineware.ds.aho_corasick.model.AhoCorasickNode found in modules KOMORAN-3.3.3.jar (com.github.shin285:KOMORAN:3.3.3) and aho-corasick-1.0.9.jar (com.github.shineware:aho-corasick:1.0.9)
Duplicate class kr.co.shineware.util.common.argument.ArgumentUtil found in modules KOMORAN-3.3.3.jar (com.github.shin285:KOMORAN:3.3.3) and commons-1.0.1.jar (com.github.shineware:commons:1.0.1)
Duplicate class kr.co.shineware.util.common.collection.MapUtil found in modules KOMORAN-3.3.3.jar (com.github.shin285:KOMORAN:3.3.3) and commons-1.0.1.jar (com.github.shineware:commons:1.0.1)
Duplicate class kr.co.shineware.util.common.collection.MapUtil$1 found in modules KOMORAN-3.3.3.jar (com.github.shin285:KOMORAN:3.3.3) and commons-1.0.1.jar (com.github.shineware:commons:1.0.1)
Duplicate class kr.co.shineware.util.common.file.FileUtil found in modules KOMORAN-3.3.3.jar (com.github.shin285:KOMORAN:3.3.3) and commons-1.0.1.jar (com.github.shineware:commons:1.0.1)
Duplicate class kr.co.shineware.util.common.model.Jaso found in modules KOMORAN-3.3.3.jar (com.github.shin285:KOMORAN:3.3.3) and commons-1.0.1.jar (com.github.shineware:commons:1.0.1)
Duplicate class kr.co.shineware.util.common.model.Jaso$TYPE found in modules KOMORAN-3.3.3.jar (com.github.shin285:KOMORAN:3.3.3) and commons-1.0.1.jar (com.github.shineware:commons:1.0.1)
Duplicate class kr.co.shineware.util.common.model.Pair found in modules KOMORAN-3.3.3.jar (com.github.shin285:KOMORAN:3.3.3) and commons-1.0.1.jar (com.github.shineware:commons:1.0.1)
Duplicate class kr.co.shineware.util.common.model.Syllable found in modules KOMORAN-3.3.3.jar (com.github.shin285:KOMORAN:3.3.3) and commons-1.0.1.jar (com.github.shineware:commons:1.0.1)
Duplicate class kr.co.shineware.util.common.string.StringUtil found in modules KOMORAN-3.3.3.jar (com.github.shin285:KOMORAN:3.3.3) and commons-1.0.1.jar (com.github.shineware:commons:1.0.1)

grammar.in 내부 규칙 정리 요청

KOMORAN Admin 개발 중, 호환성을 위해 grammar.in의 규칙 정리를 요청드리고자 합니다.

요청 내용은 다음 2가지입니다.

  1. <start>, <end>의 이름 변경: BOE, EOE 정도를 제안합니다. Begin/End Of Eojeol의 약자입니다.

  2. 대문자 사용: 모든 품사를 비롯한 어절 토큰의 이름은 대문자 사용하는 것으로 요청드립니다. 이는 모든 종류의 사전에서도 동일하게 적용되어야 합니다.

komoran.setUserDic 에서 dic.user 파일을 읽을수 없습니다ㅠ

java에서 Exception in thread "main" java.lang.NoSuchMethodError: kr.co.shineware.nlp.komoran.modeler.model.Observation.put(Ljava/lang/String;ID)V
at kr.co.shineware.nlp.komoran.core.analyzer.Komoran.setUserDic(Unknown Source)
at text.Test.main(Test.java:25)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
계속 이런 오류가 납니다ㅠ

사용자 사전 등록 오류

기능 설명

어떤 상황에서, 무엇을 추가하거나 / 변경하길 원하시나요?

사용자 사전을 다음과 같이 등록하였으나, 반영된 결과가 나오지 않습니다.
참고로, /t이 4번의 공백으로 변환하도록 설정이 되어있는 상태입니다.
komoran.setUserDic("src/main/res/raw/dic.user");

추가 정보

참고할 수 있는 다른 정보가 있다면 남겨주세요.

기본적인 사용 방법에 대한 질문

안녕하세요. 코모란 잘 사용중인 유저입니다. 감사드리구요..

일반적인 java프로그래밍 환경에서는 잘 실행되는데 안드로이드 환경에서 실행이 안 되어서 질문하나 드립니다

Komoran komoran = new Komoran("코모란 폴더경로"); 

로 처음에 경로설정을 하는데.. 일반 컴퓨터 환경에서는 그냥 경로를 적으니 되던게 안드로이드 환경에서는 잘 되지 않습니다.
더 정확히는 경로를 어떻게 설정하면 좋을지 모르겠습니다.

getAssets().open("파일명")

으로 파일은 읽어올 수 있겠는데 안드로이드에서 폴더 경로를 얻는 방법은 없는 것 같아 안되나보다 싶었는데 제작자님이 안드로이드에서 정상작동을 확인하셨다고 하여.. 질문드립니다

깃헙 이슈란은 피드백용 게시판으로 알고 있는데 질문글을 올릴 곳을 몰라서 부득이하게 이곳에 올립니다. 죄송하구요.. 좋은 프로그램 감사드립니다 -

가을이 가/VV+을/ETM로 분석되는 문제

문제 설명

종성이 없는 용언 뒤에 명사형 전성어미 이 붙었을 때 VV+ETM으로 분석되는 문제

재현 경로

가을에 대한 형태소 분석 결과가 가/VV 을/ETM로 출력

기대 상황

종성이 없는 용언을/ETM이 분석될 수 없음

환경 정보

어떤 환경에서 이 문제가 발생하였나요?

  • OS 종류 / 버전:
  • Komoran 버전: 3.3.7
  • Java 버전:

How to use android?

Hello! I'm developing applications for Korean on android but I can not use your library. Because it out memory.

내부 사전은 어떻게 구성되어 있는지요?

내부 사전 단어 확인 방법 질문

안녕하세요 좋은 자료를 이렇게 만들어 주셔서 너무 감사합니다.
komoran 사용에 앞서 궁금한 점이 있어 문의 드립니다.

  • 질문1 : 사용자 사전에 추가하기전 해당 단어가 이미 사전에 있는지 확인 하고 싶습니다.
    soynlp 등에서 word extractor나 noun extractor 을 제공합니다. 이런 것을 활용해 자동적으로 새 단어들을 생성하고 싶습니다.
    이렇게 찾아주는 전체 단어를 사용자 사전에 넣는 것은 비효율적일 것 같고, soynlp 에서 찾아주는 단어들이 기존 사전에 있는지만 확인하여 없는 것들만 넣어 주는 것이 나을 것 같은데 기존 사전 포함 여부를 어떻게 알 수 있는지 궁금합니다.
    또 이렇게 추가 단어를 넣는 경우도 지속적으로 쓸 경우에는 기존 사전에 넣는 것이 좋을 것 같은데 어떻게 처리할 수 있을지 궁금합니다.

  • 질문 2
    소스코드를 보면 corpus_build 폴더에 사전과 같은 형태가 있습니다.
    혹시 해당 사전에 제가 단어를 추가하면 되는 것인지요?
    kkoma의 사전을 보면 수십만개 이상의 단어들이 있습니다. Komoran corpus_build 에는 6만여 단어 정도만 보입니다. kkoma 의 단어들을 komoran 에 붙여 넣으면 될까요? 품사 태그도 다르고, 단어 형태소들도 다를 것 같은데 그냥 붙여 넣으면 될까요?

바쁘시겠지만 시간 되시면 알려주시면 큰 도움이 될 것 같습니다.
읽어 주셔서 감사합니다.

안녕하세요, 코모란을 써보고 싶은 초보입니다.

코모란을 안드로이드 스튜디오에 써보고 싶은데

평소 jar 파일을 import하거나 gradle에 코드를 써서 가져오는 정도만 해왔습니다.

그런데 그 밖의 방법으로 어떻게 가져오는 지 잘 모르겠습니다.

부끄럽지만 질문해봅니다.

Token indexing confusion

Using Komoran-3.1.0 I have run the test code. However I am confused about the meaning of beginIndex and endIndex. I need to retrieve original 어절, however the behavior of beginIndex and endIndex appears to have been changed from a previous version. The endIndex value seems to be too high. Also I am not sure whether endIndex is an inclusive or exclusive range. I'm not sure if it's a bug or not.

Example:

Token [morph=밀리언 달러 베이비, pos=NNP, beginIndex=0, endIndex=11]
밀리언 달러 베이비/NNP(0,11)

>>> '밀리언 달러 베이비랑 바람과 함께 사라지다랑 뭐가 더 재밌었어?'[0:11]

In Python, [0:11] is '밀리언 달러 베이비랑' (it seems like 랑 is extra here)

Token [morph=재밌, pos=VA, beginIndex=30, endIndex=33]
재밌/VA(30,33)

>>> '밀리언 달러 베이비랑 바람과 함께 사라지다랑 뭐가 더 재밌었어?'[30:33]

[30:33] is '재밌었' (it seems like 었 is extra here)

Could you explain the methodology of the token index and how I can get the original 어절?

I want output like:

밀리언 달러 베이비랑 => (밀리언 달러 베이비/NNP, 랑/JKB)
재밌었어? => (재밌/VA, 었/EP, 어/EF, ?/SF)

But token index is including too much of the original text.

Full output from Java:

String input = "밀리언 달러 베이비랑 바람과 함께 사라지다랑 뭐가 더 재밌었어?";

==========print 'getTokenList()'==========
Token [morph=밀리언 달러 베이비, pos=NNP, beginIndex=0, endIndex=11]
밀리언 달러 베이비/NNP(0,11)

Token [morph=랑, pos=JKB, beginIndex=10, endIndex=12]
랑/JKB(10,12)

Token [morph=바람과 함께 사라지다, pos=NNG, beginIndex=12, endIndex=24]
바람과 함께 사라지다/NNG(12,24)

Token [morph=랑, pos=JKB, beginIndex=23, endIndex=25]
랑/JKB(23,25)

Token [morph=뭐, pos=NP, beginIndex=25, endIndex=27]
뭐/NP(25,27)

Token [morph=가, pos=JKS, beginIndex=26, endIndex=28]
가/JKS(26,28)

Token [morph=더, pos=MAG, beginIndex=28, endIndex=30]
더/MAG(28,30)

Token [morph=재밌, pos=VA, beginIndex=30, endIndex=33]
재밌/VA(30,33)

Token [morph=었, pos=EP, beginIndex=32, endIndex=34]
었/EP(32,34)

Token [morph=어, pos=EF, beginIndex=33, endIndex=35]
어/EF(33,35)

Token [morph=?, pos=SF, beginIndex=34, endIndex=35]
?/SF(34,35)

==========print 'getNouns()'==========
[밀리언 달러 베이비, 바람과 함께 사라지다]

==========print 'getPlainText()'==========
밀리언 달러 베이비/NNP 랑/JKB 바람과 함께 사라지다/NNG 랑/JKB 뭐/NP 가/JKS 더/MAG 재밌/VA 었/EP 어/EF ?/SF

==========print 'getList()'==========
[Pair [first=밀리언 달러 베이비, second=NNP], Pair [first=랑, second=JKB], Pair [first=바람과 함께 사라지다, second=NNG], Pair [first=랑, second=JKB], Pair [first=뭐, second=NP], Pair [first=가, second=JKS], Pair [first=더, second=MAG], Pair [first=재밌, second=VA], Pair [first=었, second=EP], Pair [first=어, second=EF], Pair [first=?, second=SF]]

NoSuchMethodError

안녕하세요 코모란 3을 메이븐 프로젝트에 사용하고 싶은 학생입니다.

com.github.shin285
KOMORAN
3.3.2



jitpack.io
https://jitpack.io

위 코드 처럼 komoran을 받았는데
analyze메소드 수행 시 NoSuchMethodError가 계속 뜨는데 문제를 모르겠네요....

에러는 아래와 같습니다....

java.lang.NoSuchMethodError: kr.co.shineware.ds.aho_corasick.AhoCorasickDictionary.newFindContext()Lkr/co/shineware/ds/aho_corasick/FindContext;
at kr.co.shineware.nlp.komoran.core.Komoran.analyze(Komoran.java:126)

단지
Komoran komoran = new Komoran("C:\Users\USER\Desktop\models");

	KomoranResult result = komoran.analyze("안녕하세요");

이것만 수행하는데 에러가 나네요..

영문이 섞인 문서의 경우 분석이 가능한지 궁금합니다.

안녕하세요.
이전에 웹 문서 색인화에 코모란을 사용하려고 질문을 올렸었어습니다.

  • 혹시 코모란은 한글+영어 가 섞인 문서의 경우의 분석도 지원하나요?

아니면,

  • http://shineware.tistory.com/search/EN-POSTA
    영문 형태소 분석기를 보았습니다.
    이것도 혹시 프로젝트를 계속 진행하실 의향이 있으신가요?
    영문쪽 색인화도 필요할것 같아서요.

Training module 개발

직접 트레이닝 데이터를 통해 모델을 생성할 수 있는 training 모듈 개발

대학로가 대학/NNG 로/JKB로 분석 되는 문제

문제 설명

종성이 포함된 명사류와 로/JKB는 결합할 수 없으나 현재 아래와 같은 내용들이 발생
미남로 -> 미남/NNG+로/JKB
대학로 -> 대학/NNG+로/JKB
구남로 -> 구남/NNG+로/JKB

환경 정보

어떤 환경에서 이 문제가 발생하였나요?

  • OS 종류 / 버전:
  • Komoran 버전: 3.3.7 이하 버전
  • Java 버전:

komoran 3.3.4 버전 안드로이드 API 24-5에서 실행했을 때 오류 발생

기능 설명

어떤 상황에서, 무엇을 추가하거나 / 변경하길 원하시나요?
현 코모란 버전은 안드로이드 스튜디오 API 24-25(Nougat)에서 실행했을 때 오류가 발생합니다.

추가 정보

참고할 수 있는 다른 정보가 있다면 남겨주세요.

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.komoran, PID: 4578
java.lang.NoSuchMethodError: No static method join(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/String; in class Ljava/lang/String; or its super classes (declaration of 'java.lang.String' appears in /system/framework/core-oj.jar)
at kr.co.shineware.nlp.komoran.core.Komoran.(Komoran.java:79)
at com.example.komoran.MainActivity.onCreate(MainActivity.java:25)
at android.app.Activity.performCreate(Activity.java:6679)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

트레이닝 데이터 추가

기능 설명

  • 현재 트레이닝 데이터가 오래되었기 때문에 신조어나 최신 데이터가 반영이 안되어 있음
  • 국립국어원에 공개된 자료를 통해 최신 데이터로 학습이 필요

추가 정보

https://ithub.korean.go.kr/ -> 통합자료실 -> 기타 참고자료

Need to clean up the README

README.md contains various contents including installation and usage,
so it is necessary to clean up.

I suggest the following progress:

  1. Transfer some content to komoran / docs (official document)
  2. Keep the README concise
  3. Translate as many languages as possible (including Korean)

KOMORAN README 파일 내에 사용법을 비롯하여 다양한 내용들이 혼재되어 있어, 이를 정리하는 것이 필요합니다.

다음과 같은 진행을 제안합니다.

  1. komoran / docs로 일부 내용을 이관합니다.
  2. README를 간결하게 정리합니다.
  3. 가능한 다양한 언어(한국어 등)로 번역합니다.

Maven repository에 라이브러리 적용

안녕하세요. Komoran을 사용해서 한국어 텍스트 분석을 해보려고 하는 학생입니다. 학교에서 term project로 한국어 텍스트 분석을 수행하고 있는데, 프로젝트가 Maven 기반으로 작성되어있습니다. 그런데, Komoran은 아직 maven central repository에는 올라가지 않은 모양이더라고요.

혹시 가능하다면 Komoran을 Maven을 통해 사용하도록 하는 계획은 없으신가요?

ModelBuilder의 Observation 값 계산에 대한 질문입니다

안녕하세요, 질문을 어디에 드려야할지 몰라 여기에 남깁니다. 혹시 다른 더 좋은 곳이 있다면 알려주세요..

현재 Baum-Welch 알고리즘을 사용하여 코모란의 HMM 모델을 러닝하고 있습니다.
러닝된 값을 코모란에서 읽을 수 있도록 저장하는데, 다음의 observation을 계산하는 부분이 잘 이해되지 않아 질문드립니다. (https://github.com/shin285/KOMORAN/blob/master/src/main/java/kr/co/shineware/nlp/komoran/modeler/builder/ModelBuilder.java#L215)

private void calObservation(Map<String, Integer> totalPrevPOSTf) {

    this.observation = new Observation();

    Set<Entry<String, Map<String,Integer>>> wordDicEntrySet = wordDic.getDictionary().entrySet();
    for (Entry<String, Map<String, Integer>> wordPosTfEntry : wordDicEntrySet) {
        String word = wordPosTfEntry.getKey();
        Set<Entry<String,Integer>> posTfSet = wordPosTfEntry.getValue().entrySet();
        for (Entry<String, Integer> posTf : posTfSet) {
            int totalPosTf = totalPrevPOSTf.get(posTf.getKey());
            double observationScore = (double)posTf.getValue()/totalPosTf;
            observationScore = Math.log10(observationScore);
            this.observation.put(word,posTf.getKey(),this.table.getId(posTf.getKey()),observationScore);
        }
    }
}

이 함수에서 입력으로 들어오는 totalPrevPOSTf는 grammar 파일로부터 계산된 값으로 보입니다. 이 값을 사용하여 observation 값을 normalization 하는 것처럼 보이는데, 여기에 대해 좀 더 부연 설명해주실 수 있을까요?

감사합니다.

에러 리포팅

형태소 분석 대상 문구 : 코스피지수 코스피지수, 재고순환, 소비자기대지수, 수출입물가비율

행태소 분석 결과

Pair [first=코스피, second=NNP]
Pair [first=지수, second=NNG]
Pair [first=코스, second=NNG]
Pair [first=피, second=NNG]
Pair [first=지수, second=NNG]
Pair [first=,, second=SP]
Pair [first=재고, second=NNG]
Pair [first=순환, second=NNG]
Pair [first=,, second=SP]
Pair [first=소비자, second=NNG]
Pair [first=기대, second=NNG]
Pair [first=지수, second=NNG]
Pair [first=,, second=SP]
Pair [first=수출입, second=NNG]
Pair [first=물가, second=NNG]
Pair [first=비율, second=NNG]

사용자 사전 추가 : "코스피 NNP", "지수 NNG" 2개 추가
기분석 사전 추가 : "코스피지수 코스피/NNP 지수/NNG" 1개 추가

그러나 형태소 분석 결과는 위와 같이 나옵니다. 이상해서 문의좀 드립니다. 해결방법이 있을까요?

n-best 분석 결과 지원

안녕하세요 KOMORAN 3.0 유용하게 잘 사용하고 있습니다.
관련해서 여쭤보고 싶은것이 있는데 2.4버전에서 지원하던
n-best 분석결과는 3.0에서 지원하지 않는지 여쭤보고 싶습니다.
또한 analzeTextfile 을 이용할 때 inputfilename에 들어가는 textfile의 경로를
어디에 위치해야하는지도 궁금합니다.
바쁘시겠지만 답변 부탁드리겠습니다. 감사합니다!

출처: http://shineware.tistory.com/ [To. Me]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.