Skip to content

v4.1.2

Compare
Choose a tag to compare
@hyunwoongko hyunwoongko released this 21 Dec 04:04
· 155 commits to main since this release

1. Unicode related update (feature addition & bug fixes)

  • Add drop_space for split_morphemes
  • Add strip for split_sentences
  • Fix unicode related bugs

2. Powerful support for wikipedia-like text and paper-like text

텍스트 렌더링에 가까운 수준의 정확도와 디테일을 제공합니다.

  • 예제 1 (각주 및 인용)
from kss import split_sentences

data = """메시는 조별라운드 1차전인 나이지리아와의 경기에 선발 출전했으나 상대 골키퍼인 빈센트 에니에아마의 선방들에 막혀 골을 기록하지는 못했다.[12] 조별라운드 2차전인 대한민국과의 경기에서도 선발 출장했으며 아르헨티나의 모든 골(4골 가운데 3골은 곤살로 이과인이 기록한 득점(해트트릭)이었으며 나머지 1골은 대한민국의 박주영이 기록한 자책골이었다.)에 기여를 했다.[13] 또한 조별리그 3차전인 그리스와의 경기에서 메시는 경고누적을 우려하여 결장한 하비에르 마스체라노를 대신하여 주장 완장을 착용한 채 경기에 임했고, 좋은 경기력으로 상대를 위협하면서 무득점에도 맨 오브 더 매치에 선정되었다. "메시는 최고의 선수였다. 선수들이 경기 끝나고 '축구 하기 싫어졌다'고 할 정도였다. 워낙 훌륭한 선수라 막아낼 힘이 나지 않았다. 뭐 저런 선수가 있나 싶었다. 수비하려고 우르르 달려들면 옆으로 툭 패스하고 빠져들어가고… 참 영리한 선수였다." - 조용형, 월드컵 조별 리그에서 아르헨티나에 1 – 4로 패한 후. 16강전에 진출하자 4년 만에 다시 만난 상대인 멕시코를 상대로도 좋은 경기력을 보여줬으며 카를로스 테베스에게 어시스트를 기록하면서 테베스가 골을 넣을 수 있도록 도와줬다. 하지만 이 경기는 당시 오심 논란으로 화제가 되기도 했다. 테베스는 경기 직후 인터뷰에서 득점을 한 이후 주심을 쳐다봤고 주심이 오프사이드 판정을 내릴것이라 생각했지만 자신의 생각과 다르게 오프사이드 판정이 내려지지않아 그때서야 기뻐할 수 있었다고 한다. 실제로 정지된 화면으로 보면 메시에게서 공이 연결되는 순간 테베스는 완벽한 오프사이드 위치에 있었다."""

for sent in split_sentences(data):
    print(sent)
메시는 조별라운드 1차전인 나이지리아와의 경기에 선발 출전했으나 상대 골키퍼인 빈센트 에니에아마의 선방들에 막혀 골을 기록하지는 못했다.[12]
조별라운드 2차전인 대한민국과의 경기에서도 선발 출장했으며 아르헨티나의 모든 골(4골 가운데 3골은 곤살로 이과인이 기록한 득점(해트트릭)이었으며 나머지 1골은 대한민국의 박주영이 기록한 자책골이었다.)에 기여를 했다.[13]
또한 조별리그 3차전인 그리스와의 경기에서 메시는 경고누적을 우려하여 결장한 하비에르 마스체라노를 대신하여 주장 완장을 착용한 채 경기에 임했고, 좋은 경기력으로 상대를 위협하면서 무득점에도 맨 오브 더 매치에 선정되었다.
"메시는 최고의 선수였다. 선수들이 경기 끝나고 '축구 하기 싫어졌다'고 할 정도였다. 워낙 훌륭한 선수라 막아낼 힘이 나지 않았다. 뭐 저런 선수가 있나 싶었다. 수비하려고 우르르 달려들면 옆으로 툭 패스하고 빠져들어가고… 참 영리한 선수였다."
- 조용형, 월드컵 조별 리그에서 아르헨티나에 1 – 4로 패한 후.
16강전에 진출하자 4년 만에 다시 만난 상대인 멕시코를 상대로도 좋은 경기력을 보여줬으며 카를로스 테베스에게 어시스트를 기록하면서 테베스가 골을 넣을 수 있도록 도와줬다.
하지만 이 경기는 당시 오심 논란으로 화제가 되기도 했다.
테베스는 경기 직후 인터뷰에서 득점을 한 이후 주심을 쳐다봤고 주심이 오프사이드 판정을 내릴것이라 생각했지만 자신의 생각과 다르게 오프사이드 판정이 내려지지않아 그때서야 기뻐할 수 있었다고 한다.
실제로 정지된 화면으로 보면 메시에게서 공이 연결되는 순간 테베스는 완벽한 오프사이드 위치에 있었다.
  • 예제 2 (단락기호)
from kss import split_sentences

data = """¶ 나무위키는 2015년 4월 17일에 설립된, 이용자의 자유와 권리를 평등하게 보장하고 지식과 정보의 공유에 힘쓰기 위해 개설된 위키이다.위키 사이트로서 나무위키는 특정 영역에 편중되지 않은, 학문·서브컬처 등 다양한 분야를 포용하여 진흥시키는 것을 목표로 하며, 경직되고 건조한 서술이 아닌 어느 정도 재미도 갖춘 서술을 지향한다.나무위키는 토론을 통해 중립적이고 사실적인 서술과 특정한 관점·세력에 종속되지 않는 서술을 지향하며, 보편적인 인권과 윤리에 어긋나는 사상과 집단을 배격한다. ¶ 나무위키는 문서를 작성하고 편집하기 위한 특별한 자격 증명을 두지 않는다. 다만, 나무위키의 편집자들이 모두 일관된 생각을 하고 있는 것은 아니기에, 분쟁이 발생할 시 이용자 간의 정당하고 자유로운 토론을 통하여 합의점을 도출함을 원칙으로 한다. 이러한 원칙이 지켜질 때 나무위키는 이용자의 자유로운 문서 서술과 토론을 보장한다. 그러나 타인의 의견을 무시하는 행위, 차별과 비하를 조장하는 행위는 용인되지 않으며, 이러한 행위를 할 시 제재될 수 있다. ¶ 나무위키의 이용자에 의한 자율운영, 분쟁 해결 시 최소한의 가이드라인의 정립을 통해 선량한 이용자들의 자유로운 위키 활동을 보장하기 위해서 2015년 5월 3일부터 나무위키 이용자들의 지속적인 자유토론을 통하여 본 기본방침을 작성하였고, 2015년 9월 5일 규정토론에 참여한 토론자 전원을 포함한 이용자의 합의에 따라 본 기본방침을 공표한다."""

for sent in split_sentences(data):
    print(sent)
¶ 나무위키는 2015년 4월 17일에 설립된, 이용자의 자유와 권리를 평등하게 보장하고 지식과 정보의 공유에 힘쓰기 위해 개설된 위키이다.
위키 사이트로서 나무위키는 특정 영역에 편중되지 않은, 학문·서브컬처 등 다양한 분야를 포용하여 진흥시키는 것을 목표로 하며, 경직되고 건조한 서술이 아닌 어느 정도 재미도 갖춘 서술을 지향한다.
나무위키는 토론을 통해 중립적이고 사실적인 서술과 특정한 관점·세력에 종속되지 않는 서술을 지향하며, 보편적인 인권과 윤리에 어긋나는 사상과 집단을 배격한다.
¶ 나무위키는 문서를 작성하고 편집하기 위한 특별한 자격 증명을 두지 않는다.
다만, 나무위키의 편집자들이 모두 일관된 생각을 하고 있는 것은 아니기에, 분쟁이 발생할 시 이용자 간의 정당하고 자유로운 토론을 통하여 합의점을 도출함을 원칙으로 한다.
이러한 원칙이 지켜질 때 나무위키는 이용자의 자유로운 문서 서술과 토론을 보장한다.
그러나 타인의 의견을 무시하는 행위, 차별과 비하를 조장하는 행위는 용인되지 않으며, 이러한 행위를 할 시 제재될 수 있다.
¶ 나무위키의 이용자에 의한 자율운영, 분쟁 해결 시 최소한의 가이드라인의 정립을 통해 선량한 이용자들의 자유로운 위키 활동을 보장하기 위해서 2015년 5월 3일부터 나무위키 이용자들의 지속적인 자유토론을 통하여 본 기본방침을 작성하였고, 2015년 9월 5일 규정토론에 참여한 토론자 전원을 포함한 이용자의 합의에 따라 본 기본방침을 공표한다.
  • 예제3 (참조기호; 애스터리스크, 칼표 등)
    • 참고로 문서 구조에 관련된 부분 (제 4절. 등)은 행갈이 기호(\n)가 살아 있어야 이렇게 나타낼 수 있습니다. 단 문장간의 행갈이는 필요 없습니다.
from kss import split_sentences

data = """제 4절. 모델링\n그래서 우리는 모델의 레이어는 28개로 정했고*, 보캡사이즈는 50400으로 설정하였다.† 참고로 GPT(Generative Pre-trained Transformers)계열의 모델들은 OpenAI에서 발표하였고, NLG 작업을 수행할 수 있는 모델이다. 자기회귀 언어모델(Autoregressive Language Model)이라고 하는데, 과거의 텍스트를 디코더의 입력으로 받아 현재의 텍스트를 예측하여 출력한다. * 각 레이어는 하나의 피드포워드 블록과 하나의 셀프 어텐션 블록으로 구성된다. † 임베딩 매트릭스의 크기는 50400이지만 GPT-2 토크나이저는 50257 항목만 사용한다."""

for sent in split_sentences(data):
    print(sent)
제 4 절. 모델링
그래서 우리는 모델의 레이어는 28개로 정했고*, 보캡사이즈는 50400으로 설정하였다.†
참고로 GPT(Generative Pre-trained Transformers)계열의 모델들은 OpenAI에서 발표하였고, NLG 작업을 수행할 수 있는 모델이다.
자기회귀 언어모델(Autoregressive Language Model)이라고 하는데, 과거의 텍스트를 디코더의 입력으로 받아 현재의 텍스트를 예측하여 출력한다.
* 각 레이어는 하나의 피드포워드 블록과 하나의 셀프 어텐션 블록으로 구성된다.
† 임베딩 매트릭스의 크기는 50400이지만 토크나이저는 50257 항목만 사용한다.
  • 예제 4 (논문)
    • 참고로 문서 구조에 관련된 부분 (1. 서론 등)은 행갈이 기호(\n)가 살아 있어야 이렇게 나타낼 수 있습니다. 단 문장간의 행갈이는 필요 없습니다.
from kss import split_sentences

data = """1. 서론\n문장이란 생각이나 감정을 말로 표현할 때 완결된 내용을 나타내는 최소의 단위로, 자연어 처리의 주요 작업들에서 문장이 기본적인 처리 단위가 된다. 문장 단위의 작업을 수행하기 위해서는 우선 문장의 경계를 인식하는 것이 필요하다[1]. 최근 다양한 SNS 플랫폼이 등장하고, 이용자의 수가 급증함에 따라 온라인에서 얻을 수 있는 다양한 분야의 정보 활용 가치가 높아지고 있다. 일반적으로 문어체는 비교적 정확한 구두점을 사용하며, 제한된 종결어미를 사용하고 있으므로 비교적 간단하게 문장 경계를 인식할 수 있다. 기존에 공개된 여러 문장 경계 인식기1)는 일 반 문서에 대해 높은 성능을 보인다. 반면 댓글이나 SNS 문서에는 좋은 성능을 보이지 않는다. 그 이유는 SNS 문 서의 다음과 같은 특징을 고려하지 않았기 때문이다. 1) 구두점이 자주 생략된다. 2) 특수기호나 자소를 이용한 다양한 이모티콘이 사용된다. 3) 유행어, 줄임말 등 새로운 형태의 종결어미가 자주 사용된다. 본 논문은 문어체뿐 아니라 SNS에서 사용되는 다양한 문체에서도 잘 적용되는 문장 경계 인식기를 제안한다. 제안된 문장 경계 인식기는 SNS 문서에 잘 적용되도록 다음의 두 가지를 개선한다. 첫째로 학습 말뭉치를 확장 한다. 학습 말뭉치를 일반 문서로만 제한하지 않고, SNS 문서도 함께 학습할 수 있도록 학습 말뭉치에 SNS 문서를 추가한다. 둘째로 자질 집합을 확장한다. 기존의 문장 경계 인식기의 자질을 이용하여 말뭉치의 범위만 늘리는 것으로는 성능을 높이기에 한계가 있어 각종 자소, 특수기호, 이모티콘을 추가하여 다양한 형식으로 문장이 종결되는 SNS 문서에 적합하도록 개선한다. 이와 같은 개선법을 적용하여 CRF로 학습한 제안된 모델은 일반 문서뿐 아니라 SNS 문서에서도 좋은 성능을 보였다. 본 논문의 구성을 다음과 같다. 2장에서 문장 분리에 관련된 연구를 조사하고, 3장에서 SNS 문서에서의 다양한 고려사항을 자세히 기술한다. 4장에서는 각각 제안된 모델을 평가하고 5장에서 결론을 맺고 향후 연구에 대해 기술한다.\n4. 실험 및 분석\n4.1 실험 환경\n훈련 및 평가를 위해 3장에서 기술한 말뭉치 구축 방법에 따라 일반 문서와 SNS 문서에서 문장을 추출하여 전체 말뭉치를 구성하였다. 전체 말뭉치 중에서 훈련 및 평가 말뭉치를 표 3과 같이 분리하였다.\n\n5. 결론 및 향후 연구\n본 논문에서는 기계학습 방법을 이용하여 문어체로 이루어진 일반 문서와 비형식적인 문장으로 구성된 SNS 문서 문장 경계 인식 모델을 제안하였다. 학습 말뭉치의 영역을 일반 문서와 SNS 문서로 확장하고, SNS 문서에서 자주 보이는 형태의 단어 유형을 새로 정의해 이를 자질로 사용하여 효과적으로 문장 경계 인식을 수행하였다. 제안한 모델은 일반 문서의 문장 경계 인식 성능으로 99.1%의 재현율을 보였으며, SNS 문서에서도 88.3%의 높은 재현율을 보였다. 향후 연구로는 후처리 규칙을 이용하여 재현율을 더 높여 다양한 내용의 말뭉치를 사용하여 더 넓은 분야에서 이용 가능한 문장 경계 인식기를 제안하고자 한다.\n참고문헌\n[1] 김주희, 서정연, “비형식적인 문서에 강건한 문장 경계 인식”,한국컴퓨터종합학술대회 논문집, vol. 37, no. 1, pp. 266-270, 2010.\n[2] M. D. Riley, “Some Applications of Tree-based Modeling to Speech and Language”, Proceedings of the DARPA Speech and Natural Language Workshop, pp. 339-352, 1989\n[3] 임희석, 한군희, “메모리 기반의 기계 학습을 이용한 한국어 문장 경계 인식”, 한국콘텐츠학회논문지 vol. 4, no. 4, pp. 133-139, 2004\n[4] 이충희, 장명길, 서영훈, "웹 문서를 위한 개선된 문장경계인식 방법", 정보과학회논문지, 소프트웨어 및 응용, 제37권, 제6호, pp. 455-465, 2010.\n[5] 이주은, 구민서, 김선홍, 신호섭, “블로그 데이터에 대한 문장 경계 인식”, 한국HCI학회 학술대회, pp.1221-1223, 2014"""

for sent in split_sentences(data):
    print(sent)
1. 서론
문장이란 생각이나 감정을 말로 표현할 때 완결된 내용을 나타내는 최소의 단위로, 자연어 처리의 주요 작업들에서 문장이 기본적인 처리 단위가 된다.
문장 단위의 작업을 수행하기 위해서는 우선 문장의 경계를 인식하는 것이 필요하다[1].
최근 다양한 SNS 플랫폼이 등장하고, 이용자의 수가 급증함에 따라 온라인에서 얻을 수 있는 다양한 분야의 정보 활용 가치가 높아지고 있다.
일반적으로 문어체는 비교적 정확한 구두점을 사용하며, 제한된 종결어미를 사용하고 있으므로 비교적 간단하게 문장 경계를 인식할 수 있다.
기존에 공개된 여러 문장 경계 인식기1)는 일 반 문서에 대해 높은 성능을 보인다.
반면 댓글이나 SNS 문서에는 좋은 성능을 보이지 않는다.
그 이유는 SNS 문 서의 다음과 같은 특징을 고려하지 않았기 때문이다.
1) 구두점이 자주 생략된다.
2) 특수기호나 자소를 이용한 다양한 이모티콘이 사용된다.
3) 유행어, 줄임말 등 새로운 형태의 종결어미가 자주 사용된다.
본 논문은 문어체뿐 아니라 SNS에서 사용되는 다양한 문체에서도 잘 적용되는 문장 경계 인식기를 제안한다.
제안된 문장 경계 인식기는 SNS 문서에 잘 적용되도록 다음의 두 가지를 개선한다.
첫째로 학습 말뭉치를 확장 한다.
학습 말뭉치를 일반 문서로만 제한하지 않고, SNS 문서도 함께 학습할 수 있도록 학습 말뭉치에 SNS 문서를 추가한다.
둘째로 자질 집합을 확장한다.
기존의 문장 경계 인식기의 자질을 이용하여 말뭉치의 범위만 늘리는 것으로는 성능을 높이기에 한계가 있어 각종 자소, 특수기호, 이모티콘을 추가하여 다양한 형식으로 문장이 종결되는 SNS 문서에 적합하도록 개선한다.
이와 같은 개선법을 적용하여 CRF로 학습한 제안된 모델은 일반 문서뿐 아니라 SNS 문서에서도 좋은 성능을 보였다.
본 논문의 구성을 다음과 같다.
2장에서 문장 분리에 관련된 연구를 조사하고, 3장에서 SNS 문서에서의 다양한 고려사항을 자세히 기술한다.
4장에서는 각각 제안된 모델을 평가하고 5장에서 결론을 맺고 향후 연구에 대해 기술한다.
4. 실험 및 분석
4.1 실험 환경
훈련 및 평가를 위해 3장에서 기술한 말뭉치 구축 방법에 따라 일반 문서와 SNS 문서에서 문장을 추출하여 전체 말뭉치를 구성하였다.
전체 말뭉치 중에서 훈련 및 평가 말뭉치를 표 3과 같이 분리하였다.
5. 결론 및 향후 연구
본 논문에서는 기계학습 방법을 이용하여 문어체로 이루어진 일반 문서와 비형식적인 문장으로 구성된 SNS 문서 문장 경계 인식 모델을 제안하였다.
학습 말뭉치의 영역을 일반 문서와 SNS 문서로 확장하고, SNS 문서에서 자주 보이는 형태의 단어 유형을 새로 정의해 이를 자질로 사용하여 효과적으로 문장 경계 인식을 수행하였다.
제안한 모델은 일반 문서의 문장 경계 인식 성능으로 99.1%의 재현율을 보였으며, SNS 문서에서도 88.3%의 높은 재현율을 보였다.
향후 연구로는 후처리 규칙을 이용하여 재현율을 더 높여 다양한 내용의 말뭉치를 사용하여 더 넓은 분야에서 이용 가능한 문장 경계 인식기를 제안하고자 한다.
참고문헌
[1] 김주희, 서정연, “비형식적인 문서에 강건한 문장 경계 인식”,한국컴퓨터종합학술대회 논문집, vol. 37, no. 1, pp. 266-270, 2010.
[2] M. D. Riley, “Some Applications of Tree-based Modeling to Speech and Language”, Proceedings of the DARPA Speech and Natural Language Workshop, pp. 339-352, 1989
[3] 임희석, 한군희, “메모리 기반의 기계 학습을 이용한 한국어 문장 경계 인식”, 한국콘텐츠학회논문지 vol. 4, no. 4, pp. 133-139, 2004
[4] 이충희, 장명길, 서영훈, "웹 문서를 위한 개선된 문장경계인식 방법", 정보과학회논문지, 소프트웨어 및 응용, 제37권, 제6호, pp. 455-465, 2010.
[5] 이주은, 구민서, 김선홍, 신호섭, “블로그 데이터에 대한 문장 경계 인식”, 한국HCI학회 학술대회, pp.1221-1223, 2014