Hey Tech
[ํ์ด์ฌ/NLP] ๋น ๋ฅด๊ฒ ํ๊ตญ์ด ํํ์ ๋ถ์ํ๋ ๋ฐฉ๋ฒ (feat. KoNLPy) ๋ณธ๋ฌธ
[ํ์ด์ฌ/NLP] ๋น ๋ฅด๊ฒ ํ๊ตญ์ด ํํ์ ๋ถ์ํ๋ ๋ฐฉ๋ฒ (feat. KoNLPy)
Tony Park 2021. 1. 18. 19:33๐ ๋ชฉ์ฐจ
1. KoNLPy setup
1.1. KoNLPy ์ค์น
1.2. KoNLPy import
1.3. ํํ์ ๋ถ์๊ธฐ ๋น๊ต
2. ํํ์๋ณ ํ ํฐํ(tokenization)ํ๊ธฐ
2.1. ํ ํฐํ without ํ์ฌ ํ๊น
2.2. ํ ํฐํ with ํ์ฌ ํ๊น
2.3. ๋ช ์ฌ๋ง ์ถ์ถํ๊ธฐ
1. KoNLPy setup
1.1. KoNLPy ์ค์น
KoNLPy ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ค์น๋์ด ์์ง ์๋ ๋ถ๋ค์ ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์
์ ์ค์นํด ์ฃผ์๊ธธ ๋ฐ๋๋๋ค.
heytech.tistory.com/3
[Python/NLP] MacOS์์ KoNLPy ์ค์นํ๊ธฐ
์ค๋์ ํ๊ตญ์ด ์์ฐ์ด์ฒ๋ฆฌ(NLP)๋ฅผ ์ํ ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ KoNLPy๋ฅผ MacOS์์ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๊ณต์ ํฉ๋๋ค. 1. ์ฌ์ ์ค์นํญ๋ชฉ 1.1. MacOS/Linux ํจํค์ง ๋งค๋์ https://brew.sh/index_ko Homebrew The Missing P..
heytech.tistory.com
1.2. KoNLPy import
from konlpy.tag import Mecab
mecab = Mecab()
KonNLPy ์ค์น๊ฐ ์๋ฃ๋์๋ค๋ฉด ์ด์ ํ์ด์ฌ์์ KoNLPy ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ import ํฉ๋๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ KoNLPy์์ ์ ๊ฐ ์ฃผ๋ก ์ฌ์ฉ์ Mecab ํํ์ ๋ถ์๊ธฐ๋ฅผ ์ฌ์ฉํ๊ฒ ์ต๋๋ค. ๋ง์ฝ Mecab ํํ์ ๋ถ์๊ธฐ๊ฐ ์ ์์ ์ผ๋ก ๋์ํ์ง ์๋๋ค๋ฉด, ์๋ ํฌ์คํ ์ ์ฐธ๊ณ ํด ์ฃผ์ธ์!
https://heytech.tistory.com/395
Mecab ์ค์น ์๋ฌ ํด๊ฒฐํ๊ธฐ: Exception: Install MeCab in order to use it: http://konlpy.org/en/latest/install/
๐จ๐ป ๋ค์ด๊ฐ๋ฉฐ KoNLPy์ Mecab ํจํค์ง๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์น๋์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ํน์๋ ์ค์น๋์ด ์์ง ์๋ค๋ฉด ์๋ ํฌ์คํ ์ ์ฐธ๊ณ ํด ์ฃผ์ธ์. https://heytech.tistory.com/3 [Python/NLP] KoNLPy ์ค์นํ๋
heytech.tistory.com
1.3 ํํ์ ๋ถ์๊ธฐ ๋น๊ต
ํํ์ ๋ถ์๊ธฐ๋ ์ด๋ค ๊ฒ์ด ๊ฐ์ฅ ์ข์๊น? KoNLPy ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Kkma, Okt, Mecab, Komoran ๋ฑ ์ฌ๋ฌ ํ๊ตญ์ด ํํ์ ๋ถ์๊ธฐ๋ฅผ ์ง์ํฉ๋๋ค. ๊ทธ์ค์์๋ ์ ๋ ์ฃผ๋ก ๋น ๋ฅธ ์ฐ์ฐ์๋๋ฟ๋ง ์๋๋ผ ์ฐ์ํ ํ ํฐํ ํ์ง์ ๊ฐ์ถ Mecab ํํ์ ๋ถ์๊ธฐ๋ฅผ ์ ์ฉํฉ๋๋ค. ํ์ง๋ง ๋ชจ๋ ์ํฉ์์ Mecab ๋ถ์๊ธฐ๊ฐ ๋จ์ฐ ์ข์ ๊ฒ๋ ์๋๋๋ค. ์ด์ ๊ด๋ จํ์ฌ ๋ค๋ฅธ ๋ธ๋ก๊ฑฐ์ ํํ์ ๋ถ์๊ธฐ ์ฑ๋ฅ ๋น๊ต ๊ฒ์๊ธ ๋งํฌ๋ฅผ ๊ณต์ ํด ๋๋ฆฝ๋๋ค. ์ด๋ฅผ ์ฐธ๊ณ ํ์์ด ๋ถ์ ๋ชฉ์ ์ ๋ง๊ฒ ํํ์ ๋ถ์๊ธฐ๋ฅผ ์ ํํ์๊ธธ ๋ฐ๋๋๋ค.
iostream.tistory.com/144#header-n14
ํ๊ตญ์ด ํํ์ ๋ถ์๊ธฐ ์ฑ๋ฅ ๋น๊ต
korean-tokenizer-experiments ํํ์ ๋ถ์๊ธฐ ๋น๊ต์คํ ํ๊ฒฝํ๋์จ์ด (MacBook Pro Mid 2015)์ํํธ์จ์ด๋ฐ์ดํฐ์คํ ๋ด์ฉ์คํ ์๊ฐ ๋น๊ต๋ก๋ฉ ์๊ฐํํ์ ๋ถ์ ์๊ฐ๋ฌธ์ฅ ๋ถ์ ํ์ง ๋น๊ต๋์ด์ฐ๊ธฐ๊ฐ ์๋ ๋ฌธ์ฅ์
iostream.tistory.com
2. ํํ์๋ณ ํ ํฐํ(tokenization)ํ๊ธฐ
Mecab ํํ์ ๋ถ์๊ธฐ์ ์ฌ์ฉ๋ฐฉ๋ฒ์ ์์๋ก ์๊ฐํด ๋๋ฆฝ๋๋ค.
2.1. ํ ํฐํ without ํ์ฌ ํ๊น
# To tokenize text data based on morphemes without the tagging
mecab.morphs("์๋
ํ์ธ์, ํค์ด ํ
ํฌ ๋ธ๋ก๊ทธ์ ์์ฐ์ด์ฒ๋ฆฌ ๊ด๋ จ ํฌ์คํ
์
๋๋ค. 1234-!5123 @!@!@@$")
ํ ํฐํ ๊ฒฐ๊ณผ(๊ทธ๋ฆผ 1)
Mecab ํํ์ ๋ถ์๊ธฐ ๋ด morphs ํจ์๋ฅผ ํตํด ๋ณ๋์ ํํ์ ํ๊น ์์ด ์์ ๋ฌธ์ฅ์ ํํ์๋ณ๋ก ํ ํฐํ ํ ๊ฒฐ๊ณผ์ ๋๋ค. ํ๊ธ๊ณผ ๊ตฌ๋์ , ํน์๋ฌธ์ ๊ฐ์๋ ํ ํฐํ๋ฅผ ์ ์์ ์ผ๋ก ์ง์ํ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ๋ํ, mecab morphs ํจ์๋ string ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ 1์ฐจ์ list ํํ๋ก return ํฉ๋๋ค.
2.2. ํ ํฐํ with ํ์ฌ ํ๊น
# To tokenize text data based on morphemes wit the tagging
mecab.pos("์๋
ํ์ธ์, ํค์ด ํ
ํฌ ๋ธ๋ก๊ทธ์ ์์ฐ์ด์ฒ๋ฆฌ ๊ด๋ จ ํฌ์คํ
์
๋๋ค. 1234-!5123 @!@!@@$")
ํ ํฐํ ๊ฒฐ๊ณผ(๊ทธ๋ฆผ 2)
์ด๋ฒ์๋ Mecab ๋ด pos ํจ์๋ฅผ ํตํด ์์ ๋ฌธ์ฅ์ ํ์ฌ ํ๊น
๊ณผ ํจ๊ป ํ ํฐํ ํ์์ต๋๋ค. ๊ฒฐ๊ณผ ์คํฌ๋ฆฐ์ท์์ ๋ณด์ค ์ ์๋ฏ์ด, string์ ์
๋ ฅ๋ฐ์ ๋ฆฌ์คํธ ์์ ํํ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐํํด ์ค๋๋ค. ํ๊น
์ ๋ํ ํ์ฌ ์ ๋ณด๋ ์๋์ ์ ์ ๋ฆฌ๋์ด ์์ผ๋ ์ฐธ๊ณ ํ์๊ธธ ๋ฐ๋๋๋ค.
docs.google.com/spreadsheets/d/1OGAjUvalBuX-oZvZ_-9tEfYD2gQe7hTGsgUpiiBSXI8/edit#gid=0
Korean POS tags comparison chart
chart Not provided in KoNLPy,Provided in KoNLPy Sejong project (ntags=42),Sim Gwangsub project (ntags=26),Twitter Korean Text (ntags=19),Komoran (ntags=42),Mecab-ko (ntags=43),Kkma (ntags=10),Kkma (ntags=30),Kkma (ntags=56),Hannanum (ntags=9),Hannanum (nta
docs.google.com
2.3. ๋ช ์ฌ๋ง ์ถ์ถํ๊ธฐ
# To extract only noun in text data
mecab.nouns("์๋
ํ์ธ์, ํค์ด ํ
ํฌ ๋ธ๋ก๊ทธ์ ์์ฐ์ด์ฒ๋ฆฌ ๊ด๋ จ ํฌ์คํ
์
๋๋ค. 1234-!5123 @!@!@@$")
ํ ํฐํ ๊ฒฐ๊ณผ(๊ทธ๋ฆผ 3)
๐ ์ฐธ๊ณ ํ ๋งํ ํฌ์คํ
Mecab ์ค์น ์๋ฌ ํด๊ฒฐํ๊ธฐ: Exception: Install MeCab in order to use it: http://konlpy.org/en/latest/install/
๐จ๐ป ๋ค์ด๊ฐ๋ฉฐ KoNLPy์ Mecab ํจํค์ง๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์น๋์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ํน์๋ ์ค์น๋์ด ์์ง ์๋ค๋ฉด ์๋ ํฌ์คํ ์ ์ฐธ๊ณ ํด ์ฃผ์ธ์. https://heytech.tistory.com/3 [Python/NLP] KoNLPy ์ค์นํ๋
heytech.tistory.com
ํฌ์คํ
๋ด์ฉ์ ์ค๋ฅ๊ฐ ์๋ค๋ฉด ์๋์ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์!
๊ทธ๋ผ ์ค๋๋ ์ฆ๊ฒ๊ณ ๊ฑด๊ฐํ ํ๋ฃจ ๋ณด๋ด์๊ธธ ๋ฐ๋๋๋ค.
๊ณ ๋ง์ต๋๋ค :)