Skip to content

Commit e91047b

Browse files
authored
Merge pull request #160 from bab2min/dev_issue_150_151
문장 분리 오류 수정
2 parents c62b968 + f9a18b7 commit e91047b

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

Diff for: src/Kiwi.cpp

+11-9
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,12 @@ namespace kiwi
181181
}
182182
}
183183

184+
/*
185+
* 문장 분리 기준
186+
* 1) 종결어미(ef) (요/jx)? (z_coda)? (so|sw|sh|sp|se|sf|(닫는 괄호))*
187+
* 2) 종결구두점(sf) (so|sw|sh|sp|se|(닫는 괄호))*
188+
* 3) 단 종결어미(ef) 바로 다음에 '요'가 아닌 조사(j)나 보조용언(vx), vcp, etm, 다른 어미(ec)가 뒤따르는 경우는 제외
189+
*/
184190
class SentenceParser
185191
{
186192
enum class State
@@ -240,6 +246,7 @@ namespace kiwi
240246
case POSTag::jx:
241247
case POSTag::vcp:
242248
case POSTag::etm:
249+
case POSTag::ec:
243250
if (t.tag == POSTag::jx && *t.morph->kform == u"")
244251
{
245252
if (state == State::ef)
@@ -262,9 +269,11 @@ namespace kiwi
262269
case POSTag::sh:
263270
case POSTag::sp:
264271
case POSTag::se:
265-
case POSTag::sf:
266272
case POSTag::ssc:
267273
break;
274+
case POSTag::sf:
275+
state = State::sf;
276+
break;
268277
case POSTag::sso:
269278
if (lineNumber == lastLineNumber) break;
270279
default:
@@ -354,13 +363,6 @@ namespace kiwi
354363
*/
355364
inline void fillSentLineInfo(vector<TokenInfo>& tokens, const vector<size_t>& newlines)
356365
{
357-
/*
358-
* 문장 분리 기준
359-
* 1) 종결어미(ef) (요/jx)? (z_coda)? (so|sw|sh|sp|se|sf|(닫는 괄호))*
360-
* 2) 종결구두점(sf) (so|sw|sh|sp|se|(닫는 괄호))*
361-
* 3) 단 종결어미(ef) 바로 다음에 '요'가 아닌 조사(j)나 보조용언(vx), vcp, etm이 뒤따르는 경우는 제외
362-
*/
363-
364366
SentenceParser sp;
365367
uint32_t sentPos = 0, lastSentPos = 0, subSentPos = 0, accumSubSent = 1, accumWordPos = 0, lastWordPos = 0;
366368
size_t nlPos = 0, lastNlPos = 0, nestedSentEnd = 0, nestedEnd = 0;
@@ -536,7 +538,7 @@ namespace kiwi
536538

537539
auto next = first;
538540
++next;
539-
while(next != last)
541+
while (next != last)
540542
{
541543
TokenInfo& current = *first;
542544
TokenInfo& nextToken = *next;

Diff for: test/test_cpp.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,7 @@ TEST(KiwiCpp, SentenceBoundaryErrors)
332332
Kiwi& kiwi = reuseKiwiInstance();
333333

334334
for (auto str : {
335+
u8"어떻게 보면 신제품에 대한 기대 이런 모멘텀들이 국내 증시의 적감의 수세를 촉발시킬 수도 있는 요인이 될 수도 있다라고 보시면 될 것 같습니다.",
335336
u8"관련 법령 이전에 만들어져 경사로 설치 의무 대상은 아닙니다.",
336337
u8"적법절차의 실질적인 내용을 침해하였는지 여부 등에 관하여 충분히 심리하지",
337338
u8"2023. 5. 10 주식회사 키위(이하 '회사'라 한다) 대표이사 XXX는 저녁을 직원들에게 사주었다.",

0 commit comments

Comments
 (0)