diff --git a/README.md b/README.md index 042bb4ada353e348d944ce14ae8c3a5e3f1f4bc2..8ab5d76916e22515ba194c3b0750a32fe3e6d0fc 100644 --- a/README.md +++ b/README.md @@ -90,119 +90,119 @@ cmd창에서 저장한 공간으로 이동한다 <br> # 1. Konlpy & Soynlp 설명 -__Konlpy__는 __Kkma__, __Twitter__, __Komoran__이라는 3가지 태거가 "tag" 패키지 안에 정리되어 있습니다. -3가지 태거는 성능의 차이를 보일 뿐 성능은 같으므로 __Kkma__로 __Konlp__y의 함수에 대하여 설명을 시작하겠습니다. -<br> -__Soynlp__에서는 품사 태깅의 기능은 없으나 토큰화를 전문적으로 하는 __tokenizer__가 "tokenizer" 패키지 안에 정의되어 있습니다. -__Soynlp__에 관해서는 성능 분석에서 같이 다루도록 하겠습니다. -<br> -#### morphs -> __morphs__ 함수는 학습되어 있는 형태소 단위로 토큰화를 하지만 품사 태깅은 이루어지지 않습니다. ->  - -#### nouns -> __nouns__ 함수는 학습되어 있는 명사 단위로 토큰화를 합니다. ->  - -#### pos -> __pos__ 함수는 학습되어 있는 형태소 단위로 토큰화를 하며 품사 태깅도 같이 이루어지고 있습니다. ->  - -#### sentences -> __sentences__ 함수는 Kkma(꼬꼬마)에서만 제공하는 함수로 문장 단위로 토큰화를 합니다. ->  +> __Konlpy__는 __Kkma__, __Twitter__, __Komoran__이라는 3가지 태거가 "tag" 패키지 안에 정리되어 있습니다. +> 3가지 태거는 성능의 차이를 보일 뿐 성능은 같으므로 __Kkma__로 __Konlp__y의 함수에 대하여 설명을 시작하겠습니다. +> <br> +> __Soynlp__에서는 품사 태깅의 기능은 없으나 토큰화를 전문적으로 하는 __tokenizer__가 "tokenizer" 패키지 안에 정의되어 있습니다. +> __Soynlp__에 관해서는 성능 분석에서 같이 다루도록 하겠습니다. +> <br> +> #### morphs +>> __morphs__ 함수는 학습되어 있는 형태소 단위로 토큰화를 하지만 품사 태깅은 이루어지지 않습니다. +>>  + +> #### nouns +>> __nouns__ 함수는 학습되어 있는 명사 단위로 토큰화를 합니다. +>>  + +> #### pos +>> __pos__ 함수는 학습되어 있는 형태소 단위로 토큰화를 하며 품사 태깅도 같이 이루어지고 있습니다. +>>  + +> #### sentences +>> __sentences__ 함수는 Kkma(꼬꼬마)에서만 제공하는 함수로 문장 단위로 토큰화를 합니다. +>>  # 2. 성능 분석 -## Konlpy -- __Kkma(꼬꼬마)__ -- __Twitter(트위터)__ -- __Komoran(코모란)__ - - -#### 아버지가방에들어가신다. -> "아버지가방에들어가신다."에 대하여 태거들마다 상이하게 품사 태깅을 하고 있습니다. <br> +> ## Konlpy +> - __Kkma(꼬꼬마)__ +> - __Twitter(트위터)__ +> - __Komoran(코모란)__ +>  + +> #### 아버지가방에들어가신다. +>> "아버지가방에들어가신다."에 대하여 태거들마다 상이하게 품사 태깅을 하고 있습니다. <br> 하지만 제대로 토큰화하는 태거는 하나도 없는 점을 미루어 보면 한국어 자연어 처리에 대한 어려움을 볼 수 있습니다.<br> 태거를 직접 사용해보고 사용하는 환경에서 가장 좋은 성능을 보이는 태거를 선택하는 것이 좋습니다. -<br><br> ->  +> <br><br> +>>  -#### 머리를 감기다. -> "머리를 감기다."라는 문장에 대해 "감기"를 동사로 인식하는 것이 바람직합니다. <br> +> #### 머리를 감기다. +>> "머리를 감기다."라는 문장에 대해 "감기"를 동사로 인식하는 것이 바람직합니다. <br> 코모란은 동사로 인식하나 트위터와 꼬꼬마는 그렇지 못하는 모습을 볼 수 있습니다.<br> -<br> ->  +> <br> +>>  -## Soynlp -- __MaxScoreTokenizer__ -- __RegexTokenizer__ - +> ## Soynlp +> - __MaxScoreTokenizer__ +> - __RegexTokenizer__ +>  -> Soynlp는 기본적으로 띄워쓰기 기반 토큰화를 합니다. 동시에 tokenizer들은 각각의 기능을 가지고 있습니다.<br> -MaxScoreTokenizer는 scores 기능을 가집니다. scores란 토큰화를 원하는 단어에 대하여 점수를 매김으로써 우선적으로 추출을 할 수 있는 기능입니다.<br> -RegexTokenizer는 문장에서 규칙성을 띄는 부분이 있다면 우선적으로 추출을 할 수 있습니다.<br><br> ->  +>> Soynlp는 기본적으로 띄워쓰기 기반 토큰화를 합니다. 동시에 tokenizer들은 각각의 기능을 가지고 있습니다.<br> +> MaxScoreTokenizer는 scores 기능을 가집니다. scores란 토큰화를 원하는 단어에 대하여 점수를 매김으로써 우선적으로 추출을 할 수 있는 기능입니다.<br> +> RegexTokenizer는 문장에서 규칙성을 띄는 부분이 있다면 우선적으로 추출을 할 수 있습니다.<br><br> +>>  # 3. Konlpy(Twitter) vs Soynlp(MaxScoreTokenizer) -<br> +> <br> -|| Konlpy | Soynlpy | -|:-:|:-----------:|:------------:| -| 장점 | 띄어쓰기가 없어도 토큰화 가능 | 고유 명사 추출가능 | -| 단점 | 고유 명사 추출이 힘듦 | 띄어쓰기가 제대로 되지 않으면 토큰화가 안됨 | -<br><br> +> || Konlpy | Soynlpy | +> |:-:|:-----------:|:------------:| +> | 장점 | 띄어쓰기가 없어도 토큰화 가능 | 고유 명사 추출가능 | +> | 단점 | 고유 명사 추출이 힘듦 | 띄어쓰기가 제대로 되지 않으면 토큰화가 안됨 | +> <br><br> # 4. python Korean NLP -> __고유 명사를 추출하기 위한 Soynlp__ <br> - __띄어쓰기와 무관한 토큰화 Konlpy__<br><br> +>> __고유 명사를 추출하기 위한 Soynlp__ <br> +> __띄어쓰기와 무관한 토큰화 Konlpy__<br><br> -### - Result ->  +> ### - Result +>>  # 5. How to use Korean NLP -### Installation -- 사용을 원하는 python file과 동일한 폴더에 다운로드 후 import 하셔서 정상 실행이 됩니다. -- Library file에 import를 하시는 경우 korea_nlp_library.py file을 Download 해주세요. +> ### Installation +> - 사용을 원하는 python file과 동일한 폴더에 다운로드 후 import 하셔서 정상 실행이 됩니다. +> - Library file에 import를 하시는 경우 korea_nlp_library.py file을 Download 해주세요. -### tokenizer() -- 문자의 토큰화 +> ### tokenizer() +> - 문자의 토큰화 -``` -> kn.tokenizer(sentence,scores) -``` +> ``` +>> kn.tokenizer(sentence,scores) +> ``` -### NounExtractor() -- 문장에서 'Noun'추출 +> ### NounExtractor() +> - 문장에서 'Noun'추출 -``` -> kn.NounExtractor(sentence,scores) -``` +> ``` +>> kn.NounExtractor(sentence,scores) +> ``` -### sentence & scores -- 각 함수의 parameter로 들어감으로 함수 사용 이전에 정의해준다 -- sentence : 전처리해주고 싶은 문장 -- scores : 고유명사로 간직하고 싶은 단어<br> >> scores = {'지정한 고유명사' : 주고 싶은 score} +> ### sentence & scores +> - 각 함수의 parameter로 들어감으로 함수 사용 이전에 정의해준다 +> - sentence : 전처리해주고 싶은 문장 +> - scores : 고유명사로 간직하고 싶은 단어<br> >> scores = {'지정한 고유명사' : 주고 싶은 score} -``` -> sentence = '우리 밀플랜비 먹으러 갈래?' -> scores = {'밀플랜비' : 1.0} -``` -##### - score의 차등화 -- score의 점수 차를 이용하여 고유명사 사이의 우선순위를 결정할 수 있다. +> ``` +>> sentence = '우리 밀플랜비 먹으러 갈래?' +>> scores = {'밀플랜비' : 1.0} +> ``` +> ##### - score의 차등화 +> - score의 점수 차를 이용하여 고유명사 사이의 우선순위를 결정할 수 있다. -> __아래와 같이 밀플랜비는 1.0이라는 score를 플랜비는 0.5라는 score를 주었다.__<br> -__이렇게 되면 밀플랜비라는 단어를 전처리할 때 ['밀','플랜비']라고 추출이 되는 것이 아니라__<br> -__더 score가 높은 ['밀플랜비']가 추출이 된다.__<br> +>> __아래와 같이 밀플랜비는 1.0이라는 score를 플랜비는 0.5라는 score를 주었다.__<br> +> __이렇게 되면 밀플랜비라는 단어를 전처리할 때 ['밀','플랜비']라고 추출이 되는 것이 아니라__<br> +> __더 score가 높은 ['밀플랜비']가 추출이 된다.__<br> -``` -> sentence = '밀플랜비를 먹는건 우리의 플랜비였는데...' -> scores = {'밀플랜비' : 1.0, '플랜비' : 0.5} -``` +> ``` +>> sentence = '밀플랜비를 먹는건 우리의 플랜비였는데...' +>> scores = {'밀플랜비' : 1.0, '플랜비' : 0.5} +> ``` -- 상세한 설명은 __'example.md'__ +> - 상세한 설명은 __'example.md'__ <br>