Nltk: ๋ฌธ์žฅ ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ถ„ํ• ๋˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2015๋…„ 11์›” 23์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: nltk/nltk

ํ‘œ์ค€ ๋ฌธ์žฅ ํ† ํฌ๋‚˜์ด์ € sent_tokenize ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ํŠน์ • ๊ฒฝ์šฐ์— ํ…์ŠคํŠธ๋ฅผ ๋ฌธ์žฅ์œผ๋กœ ๋ถ„ํ• ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ํ…์ŠคํŠธ๋ฅผ ๋‘ ๋ฌธ์žฅ์œผ๋กœ ๋ถ„ํ• ํ•˜๋Š” ๋ฐ ์‹คํŒจํ•œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

[sent for sent in nltk.sent_tokenize('Model wears size S. Fits size.')]

์ด ๋ฐ˜ํ™˜ ['Model wears size S. Fits size.'] ๋Œ€์‹ ์—, ['Model wears size S.', 'Fits size.'] . . ์•ž์˜ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์—ด์— ํ•˜๋‚˜์˜ ๋ฌธ์ž๋งŒ ํฌํ•จ๋œ ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฌธ์ž ์ˆ˜๊ฐ€ >= 2 ์ด๋ฉด ํ…์ŠคํŠธ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค.

inactive tokenizer

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

Smashwords์˜ Mike Suttons๊ฐ€ ๋ฐœํ–‰ํ•œ "Three Plays"์—์„œ ์ถ”์ถœํ•œ BookCorpus ์˜ ์‹ค์ œ ์˜ˆ์ œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

sent_tokenize('The weather is terrible, and my day was ok. You are supposed to take your medicine.')

์‚ฐ์ถœ

['The weather is terrible, and my day was ok. You are supposed to take your medicine.']

nltk๊ฐ€ k. ๋ฅผ ๋ฌธ์žฅ ๊ตฌ๋ถ„์ž๋กœ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  5 ๋Œ“๊ธ€

S. Fits๊ฐ€ ์‚ฌ๋žŒ์˜ ์„ฑ๊ณผ ์ด๋ฆ„์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด ๋ฌธ์žฅ ํ† ํฌ๋‚˜์ด์ €์—์„œ ์ˆ˜์ •ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ค์›Œ ๋ณด์ž…๋‹ˆ๋‹ค.

๊ฐˆ ๋ฐฉ๋ฒ•์€ ๊ธฐ๋ณธ NLTK ๋ฌธ์žฅ ํ† ํฌ๋‚˜์ด์ €๋ฅผ ํ•˜์œ„ ํด๋ž˜์Šคํ™”ํ•˜๊ฑฐ๋‚˜ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ…์ŠคํŠธ์—์„œ ์ด๋Ÿฌํ•œ ์‚ฌ๋žŒ ์ด๋ฆ„์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์‚ฌ๋žŒ ์ด๋ฆ„์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ทœ์น™์„ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค. ๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์€ ํ† ํฐํ™” ์ „์— size <X> ๋ฅผ size_<X> ๋ฐ”๊พธ๊ณ  ํ…์ŠคํŠธ๊ฐ€ ๋ฌธ์žฅ์œผ๋กœ ๋ถ„ํ• ๋œ ํ›„ ๋‹ค์‹œ ๋ฐ”๊พธ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ . ๋ฐฉ๊ธˆ ๋‹ค์‹œ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ œ๊ฐ€ ์ œ์‹œํ•œ ์ฒซ ๋ฒˆ์งธ ์‚ฌ๋ก€๋Š” ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ถ„ํ• ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋•Œ๋•Œ๋กœ ๋ถ„ํ• ๋ฉ๋‹ˆ๋‹ค! ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ์ด ๋น ๋ฅธ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค.

import nltk
import pprint

pp = pprint.PrettyPrinter(indent=4)
s = 'Test {}. Test {}.'
[nltk.sent_tokenize(s.format(char, char)) for char in 'abcdefghijklmnopqrstuvwxyz']
[pp.pprint(nltk.sent_tokenize(s.format(char, char))) for char in 'abcdefghijklmnopqrstuvwxyz']

์‚ฐ์ถœ:

['Test a.', 'Test a.']
['Test b.', 'Test b.']
['Test c. Test c.']
['Test d. Test d.']
['Test e. Test e.']
['Test f. Test f.']
['Test g. Test g.']
['Test h. Test h.']
['Test i.', 'Test i.']
['Test j.', 'Test j.']
['Test k. Test k.']
['Test l. Test l.']
['Test m. Test m.']
['Test n. Test n.']
['Test o.', 'Test o.']
['Test p. Test p.']
['Test q.', 'Test q.']
['Test r. Test r.']
['Test s. Test s.']
['Test t. Test t.']
['Test u.', 'Test u.']
['Test v. Test v.']
['Test w. Test w.']
['Test x.', 'Test x.']
['Test y.', 'Test y.']
['Test z.', 'Test z.']

@kmike ,

@JernejJerin ๊ทœ์น™ ๊ธฐ๋ฐ˜ ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์ •๊ทœ์‹๊ณผ ๊ฐ™์€ ์„ค๋ช…์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„ํ• ์˜ "๊ทœ์น™"์„ ์ œ์–ด/์„ค๋ช…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

sent_tokenizer ํ›ˆ๋ จ์— ์‚ฌ์šฉ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ Kiss and Strunk(2006) punkt ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž…๋‹ˆ๋‹ค. ๋ฌธ์žฅ ๊ฒฝ๊ณ„๋ฅผ ํ•™์Šตํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ํ†ต๊ณ„ ์‹œ์Šคํ…œ์ด๋ฏ€๋กœ ์™„๋ฒฝํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๋ชจ๋ธ์—์„œ ์ƒ์„ฑ๋œ ํ™•๋ฅ ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ์ธ๊ฐ„๊ณผ ๊ฐ™์€ ๊ทœ์น™์€ ํ•„์š”ํ•˜์ง€ ์•Š์Œ).

Smashwords์˜ Mike Suttons๊ฐ€ ๋ฐœํ–‰ํ•œ "Three Plays"์—์„œ ์ถ”์ถœํ•œ BookCorpus ์˜ ์‹ค์ œ ์˜ˆ์ œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

sent_tokenize('The weather is terrible, and my day was ok. You are supposed to take your medicine.')

์‚ฐ์ถœ

['The weather is terrible, and my day was ok. You are supposed to take your medicine.']

nltk๊ฐ€ k. ๋ฅผ ๋ฌธ์žฅ ๊ตฌ๋ถ„์ž๋กœ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰