kss

KSS: Korean String processing Suite

BSD-3-CLAUSE License

Downloads
32.8K
Stars
413
Committers
8
kss - v3.2.0

Published by hyunwoongko about 3 years ago

  • change default value of use_quotes_brackets_processing to False
    • it is for speed. if you want to use this option, set to True.
  • make preprocessing part parallelizable.
    • preprocessing is much faster now :-)
kss - v3.1.0

Published by hyunwoongko about 3 years ago

  • Fix default rule using morpheme features.
    • previous version segmented "없다 거나" -> ["없다", "거나"]
    • current version doesn't segment these cases.
  • Remove none backend option.
  • segment error rate
    • 3.5%+ -> 1.3% (mecab) / 2.3% (pynori)
kss - v3.0.3

Published by hyunwoongko about 3 years ago

kss - v3.0.2

Published by hyunwoongko about 3 years ago

  • Hot fix of logging bugs for longer text.
  • Add Memoization with LRU Cache for quotes calibration.
    • Quote calibration algorithm has time complexity of O(2^N).
    • It is very poor. So I applied memoization with caching.
kss - v3.0.1

Published by hyunwoongko about 3 years ago

1. Use morpheme features

  • Unlike 2.xx, unspecified eomi can also be segmented. (default backend is pynori)
  • e.g. ~소서(경어), ~세용(신조어), ~했음/임(전성어미) ~구나(미등록 어미), etc.
    >>> split_sentences("부디 만수무강 하옵소서 천천히 가세용~ 너 밥을 먹는구나 응 맞아 난 근데 어제 이사했음 그랬구나 이제 마지막임 응응")
    ['부디 만수무강 하옵소서', '천천히 가세용~', '너 밥을 먹는구나', '응 맞아 난 근데 어제 이사했음', '그랬구나 이제 마지막임', '응응']
    
  • Boost segmentation speed via changing morpheme analyzer backend to mecab.
    >>> split_sentences("부디 만수무강 하옵소서 천천히 가세용~ 너 밥을 먹는구나 응 맞아 난 근데 어제 이사했음 그랬구나 이제 마지막임 응응", backend="mecab")
    ['부디 만수무강 하옵소서', '천천히 가세용~', '너 밥을 먹는구나', '응 맞아 난 근데 어제 이사했음', '그랬구나 이제 마지막임', '응응']  
    
  • You can turn off this by changing morpheme analyzer backend to none.
    >>> split_sentences("부디 만수무강 하옵소서 천천히 가세용~ 너 밥을 먹는구나 응 맞아 난 근데 어제 이사했음 그랬구나 이제 마지막임 응응", backend="none") 
    ['부디 만수무강 하옵소서 천천히 가세용~ 너 밥을 먹는구나 응 맞아 난 근데 어제 이사했음 그랬구나 이제 마지막임 응응']
    

2. Support multiprocessing and batch processing

  • You can input Tuple[str] and List[str] as input text for batch processing.
    >>> split_sentences(["안녕하세요 반가워요", "반갑습니다. 잘 지내시나요?"])
    [['안녕하세요', '반가워요'], ['반갑습니다.', '잘 지내시나요?']]  
    
  • You can change the number of multiprocess worker. default is -1 (max)
    >>> split_sentences(["안녕하세요 반가워요", "반갑습니다. 잘 지내시나요?"], num_workers=4)
    [['안녕하세요', '반가워요'], ['반갑습니다.', '잘 지내시나요?']]