기존에 Python으로 작성된 문장 분리 라이브러리를
ONNX 기반으로 C# 환경에서 사용할 수 있도록 포팅해봤습니다.
최대한 간단하고 가볍게 동작할 수 있도록 최적화를 시도했지만,
혹시 로직 등 개선이 필요한 부분이 있다면 알려주세요.
사용 시 ONNX Runtime만 맞춰주시면 됩니다.
아직 초기 버전이라, 코드는 추후 재작업을 거치기 위해 내리거나 변경할 수도 있습니다.
종속성
패키지 | 설명 |
---|---|
Microsoft.ML.OnnxRuntime |
ONNX 모델 실행을 위한 런타임 라이브러리, CPU/CUDA/DirectML 등 환경에 맞는 패키지 사용 |
CommunityToolkit.HighPerformance |
Span / Memory 기반 고성능 메모리 접근용 유틸리티 |
System.Numerics.Tensors |
텐서 및 벡터 연산 지원 라이브러리 |
BlingFire |
모델 입력용 토크나이저로 사용, wtpsplit.BlingFire 에 포함, 필요시 대체 가능 |
HuggingfaceHub |
(선택 사항) Huggingface 모델 다운로드용 |
입력 예시
교정을 할 때에는 원본에 최대한 가깝게 전사하는 것을 지향합니다 그렇다고 하여 처음부터 완벽하게 동일한 사본을 만드는 것에 집착할 필요는 없으며 할 수 있는 만큼 가깝게 텍스트를 옮기는 것이 토씨 하나 틀림 없는 타이포그래피 보다 더 중요합니다 위키문헌은 웹사이트기 때문에 책에서는 가능한 것들이 웹사이트에선 안 되는 경우도 있기 마련입니다 예를 들어 신문처럼 여러 단으로 내용을 나타내는 문헌을 위키문헌으로 옮긴다면 단을 유지하여 텍스트를 옮길 필요가 없으며 오히려 가독성을 해치는 요인이 되기도 합니다 위키문헌에서는 여러 페이지를 모아 하나의 작품으로 보여주기 때문입니다 따라서 이런 경우에는 굳이 단을 유지하기 보다 일반적인 문단 형식을 따라 자연스럽게 문단을 바꿔야 할 때 바꾸는 것이 바람직합니다
출력 예시
[ Sentence: 1 ]
교정을 할 때에는 원본에 최대한 가깝게 전사하는 것을 지향합니다
[ Sentence: 2 ]
그렇다고 하여 처음부터 완벽하게 동일한 사본을 만드는 것에 집착할 필요는 없으며 할 수 있는 만큼 가깝게 텍스트를 옮기는 것이 토씨 하나 틀림 없는 타이포그래피 보다 더 중요합니다
[ Sentence: 3 ]
위키문헌은 웹사이트기 때문에 책에서는 가능한 것들이 웹사이트에선 안 되는 경우도 있기 마련입니다
[ Sentence: 4 ]
예를 들어 신문처럼 여러 단으로 내용을 나타내는 문헌을 위키문헌으로 옮긴다면 단을 유지하여 텍스트를 옮길 필요가 없으며 오히려 가독성을 해치는 요인이 되기도 합니다
[ Sentence: 5 ]
위키문헌에서는 여러 페이지를 모아 하나의 작품으로 보여주기 때문입니다
[ Sentence: 6 ]
따라서 이런 경우에는 굳이 단을 유지하기 보다 일반적인 문단 형식을 따라 자연스럽게 문단을 바꿔야 할 때 바꾸는 것이 바람직합니다