들어가기 앞서 오늘도 개인프로젝트의 주제를 구상하였고, 이후 주제에서 수정할부분이나 추가할 부분을 스스로 개인프로젝트 주제 청년 지원 사업 및 자격증 준비 챗봇 청년 지원 사업 및 자격증 준비 챗봇 왜 청년지원사업과 자격증 준비를 하나로 합쳤는가? 청년 지원사업을 찾아보는 연령대가 보통 청년대인데 이때 자격증 준비도 같이 하는 경우가 많아 별개의 기능으로 넣음 근데 청년 지원사업이면 사람인 같은 구직사이트에 api도 필요한가? 아니라고 생각함 ᄂ 근데 청년 지원 사업에 해당하는 기업같은건 어떡하지? → 근데 이것도 api안에 존재할 것임 주요기능은? 챗봇으로 입력받고 해당 사람이 받을 수 있는 지원 사업이 무엇인지 확인하는게 목표 수집방식? 이게 페이지수와 페이지 사이즈로 전체 불러올때까지 반복할 예정인데 잘 될지는 모르겠음 평가방식은? 말그대로 데이터에 있을법한 말 20개와 애매한 5개 오답 5개를 넣어 챗봇이 얼마나 맞출 수 있냐 체크 ᄂ 정답먼저 20개 만들기 문제 / 정답 / 근거위치 순 ᄂ 평가셋의 종류는 일단 일부만 진행 → 5~10개정도 ᄂ 10개면 청년정책 3 자격증관련 3 애매한거 2 오답 2로 진행 평가를 진행할때 GPT한테 물어봐서 답이 다 나오면 의미없음 → GPT도 알 정보면 이미 공공정보일거라 고려사항 예시) 정보처리기사의 필기 합격기준이 뭔지 알려줘 모든 과목 40 이상 , 총 평균 60 이상 / (정보처리기사, 기사 총 점수) ᄂ 근데 이건 인터넷 검색만 해도 바로 나오는 정보지 않나? → 진짜로 api로만 해서 나올 수 있게 ᄂ 예시) 19~29세 사이에 성인 여성이 받을수 있는 정책 ← 정답 근데 청년 지원 사업은 GPT도 잘 모를텐데 자격증 준비는 누구나 다 아는거 아닌가? → 그럼 의미 없는거 아닌가? 예외 사항이 발생한만한가? 정책중에 꼭 청년이라고 19 35세가 아닌 19 39세 등 청년이라 해당하는 사항 이상의 나이를 받은 경우 처리방법에 대해 생각해봐야함 ᄂ 그리고 제한없음은? → 이건 그냥 청년만 쓰게 설계된거니까 상관없다 판단함 청킹 방식은 어떻게 할것인가? 어떻게 나눌 것인가? → api라 기존 청킹으로 나누기에는 무리가 있어보임 → 정책 하나당 청킹 하나로 진행 → 청킹 많이 만들어져도 상관 X ᄂ 메타데이터는 어떤건가? → 정책 하나에 들어갈 데이터들의 필터들 필터링용 데이터들(식별용, 사용자 조건 필터용, 기간 필터용, 분야 필터용) plcyNm 정책명 sprtTrgtMinAge, sprtTrgtMaxAge, sprtTrgtAgeLmtYn 나이 필터 zipCd 지역 필터 earnCndSeCd, earnMinAmt, earnMaxAmt 소득 필터 mrgSttsCd 결혼 여부 jobCd 취업 상태 (재직/미취업 등) schoolCd 학력 plcyMajorCd 전공 sBizCd 특화 요건 (군인, 중소기업 등) aplyPrdSeCd, aplyYmd 신청기간 (상시 여부, 마감일) bizPrdSeCd, bizPrdBgngYmd, bizPrdEndYmd 사업기간 lclsfNm, mclsfNm 분야별 필터 (본문과 중복 저장) 그럼 데이터 정제는 어떻게 처리 할 것인가? 정제 규칙은 무엇으로 할것인가? → 어떤걸 남기고 어떤걸 지울것인가? 남길 데이터 plcyNm 정책명 plcyExplnCn 정책설명 plcySprtCn 지원내용 (가장 중요) plcyKywdNm 키워드 (검색 적중률 향상) lclsfNm, mclsfNm 대분류·중분류명 sprvsnInstCdNm 주관기관명 ("어디서 하는 정책이야?" 대응) operInstCdNm 운영기관명 plcyAplyMthdCn 신청방법 srngMthdCn 심사방법 sbmsnDcmntCn 제출서류 addAplyQlfcCndCn 추가 신청자격 조건 ptcpPrpTrgtCn 참여 제한 대상 earnEtcCn 소득 기타 조건 bizPrdEtcCn 사업기간 기타 내용 etcMttrCn 기타사항 sprtSclCnt 지원규모 (예: 100명) 필터링용 데이터 sprtTrgtMinAge, sprtTrgtMaxAge, sprtTrgtAgeLmtYn 나이 필터 zipCd 지역 필터 earnCndSeCd, earnMinAmt, earnMaxAmt 소득 필터 mrgSttsCd 결혼 여부 jobCd 취업 상태 (재직/미취업 등) schoolCd 학력 plcyMajorCd 전공 sBizCd 특화 요건 (군인, 중소기업 등) aplyPrdSeCd, aplyYmd 신청기간 (상시 여부, 마감일) bizPrdSeCd, bizPrdBgngYmd, bizPrdEndYmd 사업기간 lclsfNm, mclsfNm 분야별 필터 (본문과 중복 저장) sprtArvlSeqYn 선착순 여부 plcyAprvSttsCd 승인 상태 (승인된 정책만 서비스) 표면적으로 남길 데이터 → 화면에 보여주지 않음 plcyNo 정책 고유 ID, 업데이트 기준 lastMdfcnDt 변경 감지 (이 값이 바뀐 정책만 다시 임베딩) frstRegDt "새로 나온 정책" 기능용 (선택) aplyUrlAddr 답변 끝에 신청 링크로 제공 refUrlAddr1, refUrlAddr2 참고 링크로 제공 inqCnt 인기 정책 정렬용 (선택) 삭제할 데이터 bscPlanCycl, bscPlanPlcyWayNo, bscPlanFcsAsmtNo, bscPlanAsmtNo 정부 기본계획 내부 분류번호 pvsnInstGroupCd, plcyPvsnMthdCd 내부 관리 코드 sprvsnInstCd, operInstCd 기관 코드 (기관명만 있으면 충분) sprvsnInstPicNm, operInstPicNm 담당자 개인 이름 (개인정보라 제외) rgtrInstCd ~ rgtrHghrkInstCdNm (6개) 등록자 기관 정보, 사용자에게 무의미 자격증 데이터 청킹 <contents> 정보처리기사 출제경향 <실기시험 출제 경향> 정보시스템 등의 개발 요구 사항을 이해하여 각 업무에 맞는 소프트웨어의 기능에 관한 설계, ... 출제기준 참조(www.q-net.or.kr) </contents> <contents> 정보처리기사 취득방법 시행처 : 한국산업인력공단 관련학과 :모든 학과 응시가능 시험과목 - 필기 ... 실기 : 100점을 만점으로 하여 60점 이상. </contents> 자격증 관련 데이터 정제 정제할 데이터 <contents> 정보처리기사 출제경향 <실기시험 출제 경향> 정보시스템 등의 개발 요구 사항을 이해하여 각 업무에 맞는 소프트웨어의 기능에 관한 설계, ... 출제기준 참조(www.q-net.or.kr) </contents> <contents> 정보처리기사 취득방법 시행처 : 한국산업인력공단 관련학과 :모든 학과 응시가능 시험과목 - 필기 ... 실기 : 100점을 만점으로 하여 60점 이상. </contents> 필터링 데이터 <infogb>출제경향</infogb> <jmfldnm>정보처리기사</jmfldnm> <infogb>취득방법</infogb> <jmfldnm>정보처리기사</jmfldnm> <mdobligfldnm>정보기술</mdobligfldnm> <obligfldnm>정보통신</obligfldnm> 삭제할 데이터 <mdobligfldcd>211</mdobligfldcd> <obligfldcd>21</obligfldcd> <item> <contents> 정보처리기사 출제기준 정보처리기사 출제기준입니다. 메뉴상단 고객지원-자료실-출제기준 에서도 보실 수 있습니다. </contents> <infogb>출제기준</infogb> <jmfldnm>정보처리기사</jmfldnm> <mdobligfldcd>211</mdobligfldcd> <mdobligfldnm>정보기술</mdobligfldnm> <obligfldcd>21</obligfldcd> <obligfldnm>정보통신</obligfldnm> </item> <response> <header> <resultCode>00</resultCode> <resultMsg>NORMAL SERVICE.</resultMsg> </header> </response> 오늘 후기 오늘도 주제 구상을 진행하였습니다. 이번에는 주제를 구상하면서 저에게 의문이 생겨났습니다. 제가 하고 있는 이 챗봇에서 과연 자격증 관련 챗봇이 필요한가. 원래 저의 의도는 보통 청년 정책을 찾는 사람은 청년이고, 이 챗봇을 찾는 사람에게 조금이라도 도움을 드리고자 자격증 관련도 넣으면 좋겠다 에서 시작하였는데, 막상 다시와 생각해보니 자격증 관련 정책들은 GPT나 타 AI에게도 학습되어 있을 확률이 높아 주제에서 제외해야할지 고민하게 되었습니다.
미국에서 화제인 메타의 AI 에이전트 앱 뮤즈가 한국 앱스토어에서는 왜 안 보이는지 iTunes Search API와 구글 플레이를 국가별로 직접 조회해 확인한 글입니다. 2026년 9월 29일 기준으로 미국과 캐나다 스토어에는 Muse from Meta가 올라와 있지만 한국 조회 결과에는 나오지 않았고, 메타의 한국 출시 공식 일정도 찾지 못했습니다. 지역을 바꿔 설치하는 방법도 있지만 한국어 개인정보 처리방침이 없는 상태에서 메일과 캘린더, 컴퓨터 조작까지 한 앱에 연결하는 것은 위험이 크다고 봐서 권하지 않습니다. 원글에는 날짜별 출시 경과, 한국에서 바로 써볼 수 있는 대안 3가지, 출시 뒤 계정을 연결하기 전에 볼 점검 항목까지 정리했고 여기에는 직접 돌려본 조회 명령만 옮깁니다. 앱스토어를 국가별로 직접 조회 curl -s "https://itunes.apple.com/search?term=meta+muse&entity=software&country=kr&limit=5" \ | python3 -c "import sys,json; [print(r['trackName'], r['trackId']) for r in json.load(sys.stdin)['results']]" 미국(us)과 캐나다(ca) 조회에는 Muse from Meta(id6760173601)가 나왔는데 한국(kr) 조회 결과에는 없었고, 상위 5개는 Meta AI, ChatGPT, Claude, Grok, Google Gemini였습니다. 구글 플레이도 같은 방식으로 curl -s -A "Mozilla/5.0" "https://play.google.com/store/search?q=muse%20from%20meta&c=apps&gl=KR" \ | grep -c 'details?id=com.facebook.aura' 미국 설정에서는 패키지명 com.facebook.aura인 앱이 검색되지만 한국 설정에서는 나오지 않았습니다. 그래서 지금은 지역을 바꿔 설치하는 대신 한국 스토어에 이미 있는 Meta AI 앱이나 ChatGPT, Claude, Gemini의 계정 연결 기능으로 먼저 경험해보는 쪽을 권합니다. 메일과 캘린더, 컴퓨터 조작까지 한 앱에 묶이는 서비스를 개인정보 처리방침도 없는 상태로 연결하는 것은 편의보다 위험이 크다는 판단입니다. 전체 과정과 실패 사례는 원글에 정리했습니다: https://blog.wonizz.com/2026/09/29/meta-muse-korea-availability/?utm_source=velog&utm_medium=community&utm_campaign=meta-muse-korea-availability&utm_content=daily
1. 토큰화란? 자연어 처리(NLP)에서는 크롤링, 문서 수집, 로그 데이터 등을 통해 얻은 텍스트 데이터인 코퍼스(corpus) 를 그대로 사용하기 어렵다. 목적에 맞게 텍스트를 전처리해야 하며, 대표적인 전처리 과정에는 다음이 있다. 토큰화(Tokenization) 정제(Cleaning) 정규화(Normalization) 이 중 토큰화란 문장이나 문서에서 의미 있는 최소 단위인 토큰(token) 으로 나누는 작업이다. 토큰은 상황에 따라 단어, 형태소, 문장, 서브워드 등이 될 수 있다. wikidocs 예를 들어 다음 문장이 있다고 가정해보자. Time is an illusion. Lunchtime double so! 구두점을 제거하고 공백을 기준으로 단어 토큰화를 하면 다음과 같이 나눌 수 있다. ["Time", "is", "an", "illusion", "Lunchtime", "double", "so"] 하지만 실제 자연어 처리에서는 단순히 공백 기준으로 문장을 나누는 것만으로 충분하지 않다. 줄임말, 구두점, 숫자, 이메일 주소, 날짜, 한국어 조사처럼 예외적으로 처리해야 하는 요소가 많기 때문이다. wikidocs 2. 단어 토큰화 토큰의 기준을 단어로 설정해 나누는 방식을 단어 토큰화(Word Tokenization) 라고 한다. 영어는 띄어쓰기 단위가 단어와 비교적 잘 일치하기 때문에, 기본적인 경우 공백을 기준으로 나누는 방식이 어느 정도 작동한다. 하지만 아포스트로피, 하이픈, 약어, 고유명사, 숫자 표현 등이 등장하면 토큰화 기준을 세밀하게 설정해야 한다. 예를 들어 아래 문장에서 Don't , Jone's 는 어떻게 분리해야 할까? Don't be fooled by the dark sounding name, Mr. Jone's Orphanage. 토큰화 도구별 결과는 다를 수 있다. 도구 Don't 처리 방식 Jone's 처리 방식 word_tokenize Do , n't Jone , 's WordPunctTokenizer Don , ' , t Jone , ' , s text_to_word_sequence don't 유지 jone's 유지 from nltk.tokenize import word_tokenize, WordPunctTokenizer from tensorflow.keras.preprocessing.text import text_to_word_sequence text = "Don't be fooled by the dark sounding name, Mr. Jone's Orphanage." print(word_tokenize(text)) print(WordPunctTokenizer().tokenize(text)) print(text_to_word_sequence(text)) 이처럼 어느 결과가 정답이라고 단정하기보다, 분석 목적과 이후 모델링 방식에 적합한 토큰화 기준을 선택하는 것 이 중요하다. wikidocs 3. 토큰화 시 고려할 점 구두점과 특수문자는 무조건 제거하지 않는다 구두점이나 특수문자는 항상 불필요한 노이즈가 아니다. 문장의 경계나 특정 의미를 표현할 수 있기 때문에, 단순 삭제 전에 데이터의 역할을 확인해야 한다. 다음과 같은 사례가 있다. 표현 의미 주의점 Ph.D. 학위 약어 마침표를 제거하면 약어 정보가 훼손될 수 있음 AT&T 기업명 특수문자가 이름의 일부임 m.p.h 속도 단위 점을 기준으로 분리하면 의미가 달라질 수 있음 $45.55 가격 $ , 소수점이 의미를 가짐 01/02/06 날짜 / 가 날짜 구분자 역할을 함 123,456,789 큰 수 , 가 숫자 단위 표현에 필요함 즉, 구두점 제거는 일괄적으로 수행하기보다 데이터의 도메인과 모델의 목적에 따라 결정해야 한다. 금융 텍스트에서는 금액, 수익률, 날짜, 종목 코드와 같은 정보가 많으므로 숫자·통화기호·소수점·쉼표의 처리 기준을 특히 주의할 필요가 있다. wikidocs 줄임말과 띄어쓰기가 포함된 표현 영어에는 아포스트로피를 통해 단어가 축약되는 경우가 많다. I'm → I am we're → we are what're → what are doesn't → does not 또한 여러 단어가 하나의 의미 단위로 사용되기도 한다. New York rock 'n' roll 따라서 토큰화 과정은 단순히 공백이나 기호를 기준으로 자르는 작업이 아니라, 문맥과 언어 규칙을 고려해 의미 단위를 보존하는 작업 이라고 볼 수 있다. wikidocs Penn Treebank 토큰화 예시 Penn Treebank 토큰화 규칙의 대표적 특징은 다음과 같다. 하이픈으로 연결된 단어는 하나의 토큰으로 유지한다. doesn't 처럼 접어(clitic)가 붙은 축약형은 분리한다. from nltk.tokenize import TreebankWordTokenizer tokenizer = TreebankWordTokenizer() text = ( "Starting a home-based restaurant may be an ideal. " "it doesn't have a food chain or restaurant of their own." ) print(tokenizer.tokenize(text)) 출력 예시는 다음과 같다. [ 'Starting', 'a', 'home-based', 'restaurant', 'may', 'be', 'an', 'ideal.', 'it', 'does', "n't", 'have', 'a', 'food', 'chain', 'or', 'restaurant', 'of', 'their', 'own', '.' ] home-based 는 하나의 토큰으로 유지되고, doesn't 는 does 와 n't 로 분리되는 것을 확인할 수 있다. wikidocs 4. 문장 토큰화 문장을 기준으로 텍스트를 나누는 작업을 문장 토큰화(Sentence Tokenization) 또는 문장 분리(Sentence Segmentation)라고 한다. 가장 단순한 방법은 마침표( . ), 물음표( ? ), 느낌표( ! )를 기준으로 나누는 것이다. 하지만 마침표는 문장의 끝뿐 아니라 약어, 이메일 주소, IP 주소, 소수점 등에도 사용된다. 예를 들어 아래 문장을 단순히 마침표 기준으로 나누면 문제가 생긴다. IP 192.168.56.31 서버에 접속해 주세요. 결과는 aaa@gmail.com으로 보내주세요. IP 주소의 점, 이메일 주소의 점, 문장 종결의 점을 모두 같은 방식으로 처리하면 잘못된 문장 분리가 발생할 수 있다. 또 Ph.D. 처럼 약어 내부에 포함된 마침표도 문장 끝으로 판단하면 안 된다. wikidocs NLTK 영어 문장 토큰화 NLTK의 sent_tokenize() 는 단순한 마침표 분할보다 더 정교하게 문장을 나눈다. from nltk.tokenize import sent_tokenize text = ( "I am actively looking for Ph.D. students. " "and you are a Ph.D student." ) print(sent_tokenize(text)) [ 'I am actively looking for Ph.D. students.', 'and you are a Ph.D student.' ] Ph.D. 내부의 마침표를 문장 종결로 오해하지 않고 처리한다. wikidocs 한국어 문장 토큰화 한국어 문장 분리에는 KSS(Korean Sentence Splitter)를 사용할 수 있다. pip install kss import kss text = ( "딥 러닝 자연어 처리가 재미있기는 합니다. " "그런데 문제는 영어보다 한국어로 할 때 너무 어렵습니다. " "이제 해보면 알걸요?" ) print(kss.split_sentences(text)) [ '딥 러닝 자연어 처리가 재미있기는 합니다.', '그런데 문제는 영어보다 한국어로 할 때 너무 어렵습니다.', '이제 해보면 알걸요?' ] 한국어 NLP에서는 한국어의 문장 종결 표현과 문장 부호 특성을 고려한 도구를 사용하는 것이 유리하다. wikidocs 5. 한국어 토큰화가 어려운 이유 한국어는 영어와 달리 단순한 띄어쓰기 기준 토큰화만으로 충분한 결과를 얻기 어렵다. 가장 큰 이유는 한국어가 교착어 이기 때문이다. 교착어는 조사, 어미, 접사 등이 어근이나 명사 뒤에 붙어 문법적 의미를 만드는 언어를 말한다. 예를 들어 다음 문장을 보자. 에디가 책을 읽었다. 띄어쓰기 기준으로 분리하면 다음과 같다. ['에디가', '책을', '읽었다'] 하지만 형태소 단위로 나누면 다음처럼 분석할 수 있다. 에디 / 가 / 책 / 을 / 읽 / 었 / 다 구분 예시 설명 자립 형태소 에디, 책 독립적으로 의미를 지니는 단위 의존 형태소 가, 을, 었, 다 다른 형태소와 결합해 문법적 기능을 하는 단위 한국어 자연어 처리에서는 명사, 동사 어간, 조사, 어미 등을 분리해야 하는 경우가 많다. 따라서 한국어에서는 어절 단위 토큰화보다 형태소 토큰화(Morpheme Tokenization) 가 중요하다. wikidocs 또한 실제 한국어 데이터에는 띄어쓰기 오류가 흔하다. 제가이렇게띄어쓰기를전혀하지않고글을썼다고하더라도 글을이해할수있습니다. 한국어는 띄어쓰기가 완벽하지 않아도 문맥으로 의미를 추론할 수 있는 경우가 많다. 하지만 모델 입장에서는 단어 경계가 불명확해질 수 있으므로, 실제 서비스 데이터에서는 띄어쓰기 교정이나 형태소 분석 품질이 NLP 성능에 영향을 줄 수 있다. wikidocs 6. 품사 태깅 품사 태깅(Part-of-Speech Tagging, POS Tagging) 은 토큰마다 문법적 역할을 부여하는 작업이다. 같은 표기를 가진 단어라도 품사에 따라 의미가 달라질 수 있다. fly 동사: 날다 명사: 파리 한국어도 마찬가지다. 못 명사: 망치로 박는 물건 부사: 어떤 행동을 할 수 없다는 의미 따라서 단어의 문맥상 의미를 이해하거나, 명사만 추출해 키워드 분석을 수행하거나, 동사·형용사 중심의 감성 분석을 수행하려면 품사 정보가 유용하다. wikidocs NLTK 영어 품사 태깅 from nltk.tokenize import word_tokenize from nltk.tag import pos_tag text = "I am actively looking for Ph.D. students." tokens = word_tokenize(text) print(pos_tag(tokens)) [ ('I', 'PRP'), ('am', 'VBP'), ('actively', 'RB'), ('looking', 'VBG'), ('for', 'IN'), ('Ph.D.', 'NNP'), ('students', 'NNS'), ('.', '.') ] 대표적인 Penn Treebank 품사 태그는 다음과 같다. 태그 의미 PRP 인칭대명사 VBP 동사 RB 부사 VBG 현재분사 IN 전치사 NNP 고유명사 NNS 복수 명사 CC 접속사 DT 관사 7. KoNLPy를 이용한 한국어 형태소 분석 한국어 NLP에서는 KoNLPy를 이용해 형태소 분석과 품사 태깅을 수행할 수 있다. KoNLPy에서 활용할 수 있는 대표적인 형태소 분석기는 다음과 같다. Okt(Open Korean Text) Mecab Komoran Hannanum Kkma 대표적으로 Okt 는 다음 메서드를 제공한다. 메서드 기능 morphs() 형태소 추출 pos() 형태소와 품사 태그 추출 nouns() 명사 추출 from konlpy.tag import Okt okt = Okt() text = "열심히 코딩한 당신, 연휴에는 여행을 가봐요" print(okt.morphs(text)) print(okt.pos(text)) print(okt.nouns(text)) 출력 예시는 다음과 같다. # 형태소 분석 ['열심히', '코딩', '한', '당신', ',', '연휴', '에는', '여행', '을', '가봐요'] # 품사 태깅 [ ('열심히', 'Adverb'), ('코딩', 'Noun'), ('한', 'Josa'), ('당신', 'Noun'), (',', 'Punctuation'), ('연휴', 'Noun'), ('에는', 'Josa'), ('여행', 'Noun'), ('을', 'Josa'), ('가봐요', 'Verb') ] # 명사 추출 ['코딩', '당신', '연휴', '여행'] 같은 문장이라도 분석기마다 결과가 달라질 수 있다. 예를 들어 Okt는 가봐요 를 하나의 동사 형태로 처리할 수 있지만, Kkma는 가보 , 아요 처럼 더 세분화할 수 있다. 따라서 형태소 분석기를 선택할 때는 다음을 기준으로 판단하는 것이 좋다. 처리 속도가 중요한가 신조어·SNS 문체 처리가 중요한가 문어체·뉴스 데이터가 중심인가 명사 추출만 필요한가 세밀한 문법 분석이 필요한가 프로젝트 환경에서 설치와 운영이 쉬운가 특히 대규모 한국어 데이터 처리에서는 처리 속도가 중요한 경우가 많아 Mecab을 고려할 수 있고, SNS·구어체 데이터 분석에서는 Okt를 실험 후보로 사용할 수 있다. wikidocs 8. 정리 토큰화는 텍스트를 모델이 처리할 수 있는 의미 단위로 나누는 NLP 전처리 과정이다. 토큰의 단위는 단어, 문장, 형태소, 서브워드 등 목적에 따라 달라질 수 있다. 구두점, 특수문자, 숫자, 날짜, 통화기호는 무조건 제거하지 않고 의미를 고려해야 한다. 영어는 공백 기반 토큰화가 어느 정도 가능하지만 축약형, 약어, 하이픈 등의 예외 처리가 필요하다. 문장 토큰화에서는 마침표가 약어·이메일·IP 주소·소수점 등에 포함될 수 있음을 고려해야 한다. 한국어는 조사와 어미가 결합하는 교착어이므로, 띄어쓰기 단위보다 형태소 단위 토큰화가 중요하다. 품사 태깅은 단어의 문법적 역할을 부여해 의미 분석, 키워드 추출, 감성 분석 등에 활용할 수 있다. 한국어 형태소 분석기마다 토큰 분리와 품사 태깅 결과가 다르므로, 실제 데이터와 목적에 맞춰 비교·선택해야 한다.