@@ -181,6 +181,12 @@ namespace kiwi
181
181
}
182
182
}
183
183
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
+ */
184
190
class SentenceParser
185
191
{
186
192
enum class State
@@ -240,6 +246,7 @@ namespace kiwi
240
246
case POSTag::jx:
241
247
case POSTag::vcp:
242
248
case POSTag::etm:
249
+ case POSTag::ec:
243
250
if (t.tag == POSTag::jx && *t.morph ->kform == u" 요" )
244
251
{
245
252
if (state == State::ef)
@@ -262,9 +269,11 @@ namespace kiwi
262
269
case POSTag::sh:
263
270
case POSTag::sp:
264
271
case POSTag::se:
265
- case POSTag::sf:
266
272
case POSTag::ssc:
267
273
break ;
274
+ case POSTag::sf:
275
+ state = State::sf;
276
+ break ;
268
277
case POSTag::sso:
269
278
if (lineNumber == lastLineNumber) break ;
270
279
default :
@@ -354,13 +363,6 @@ namespace kiwi
354
363
*/
355
364
inline void fillSentLineInfo (vector<TokenInfo>& tokens, const vector<size_t >& newlines)
356
365
{
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
-
364
366
SentenceParser sp;
365
367
uint32_t sentPos = 0 , lastSentPos = 0 , subSentPos = 0 , accumSubSent = 1 , accumWordPos = 0 , lastWordPos = 0 ;
366
368
size_t nlPos = 0 , lastNlPos = 0 , nestedSentEnd = 0 , nestedEnd = 0 ;
@@ -536,7 +538,7 @@ namespace kiwi
536
538
537
539
auto next = first;
538
540
++next;
539
- while (next != last)
541
+ while (next != last)
540
542
{
541
543
TokenInfo& current = *first;
542
544
TokenInfo& nextToken = *next;
0 commit comments