티스토리 뷰

반응형

 

 

iOS 상의 자연어 처리에 있어서 문자열의 토큰화 처리는 가장 핵심적인 기능 중 하나입니다.

자연어처리 프레임워크 NaturalLanguage 내에서는 NLTagger라는 객체를 지원하고 있습니다.
NLTagger를 통해서 자연어 텍스트에 대한 분석을 하고, 세부 토큰화 및 개별 적인 태깅을 처리할 수 있습니다. 

 

 


NLTagger로 문자열 토큰화하는 방법

먼저, playground 파일을 여시고, import NaturalLanguage를 import 해줍니다. 

// MARK: - String Tokenizer
// - 문자열의 토큰화는 자연어 처리에 있어서 핵심적인 기능 중 하나입니다. 
// - 문자열을 토큰화해보는 예제)

import NaturalLanguage

 

 

분석 및 토큰화에 사용할 문자열을 아래와 같이 준비합니다. 다양한 언어를 준비해서 토큰화 결과를 비교해봐도 좋습니다.

let textString = "안녕하세요, 저는 멍구입니다. 만나서 반가워요."
//let textString = "你好,我很好,谢谢你和你?"
//let textString = "Knowledge will give you power, but character respect."

 

 

자연어 처리 및 토큰화를 할 문자열을 준비했다면 이제 NLTagger 객체를 생성합니다. 

NLTagger의 접두어 NL은 NaturalLangauge를 의미합니다. 
// NLTagger 객체를 생성합니다.tagSchemes 인자값에는 .tokenType으로 지정합니다.
let tagger = NLTagger(tagSchemes: [.tokenType])

// tagger에 대해 분석하려는 문자열을 셋팅합니다.
tagger.string = textString

 

 

이제 tagger 인스턴스를 통해 특적 기준으로 문자열을 토큰화하고 그 결과를 나열해서 출력해 보겠습니다. 

// 특정 문자열의 범위, 토큰유닛, 토큰타입, 옵션 등을 지정해서 해당 조건에 맞는 문자열을 열거하는데 사용합니다.
tagger.enumerateTags(
    in: textString.startIndex..<textString.endIndex,
    unit: NLTokenUnit.word,
    scheme: NLTagScheme.tokenType,
    options: [.omitPunctuation, .omitWhitespace]) { (tag, range) -> Bool in
        // 단어 단위로 토큰화 한 결과를 tag, range 값으로 받아 처리할 수 있습니다. 
        print(textString[range])
        return true
}

tagger의 enumerateTags 메서드를 사용합니다.

enumerateTags에서는 분석하려는 문자열의 범위, 토큰유닛, 토큰타입, 옵션(공백, 점 등을 빼는 등)을 다양하게 설정한 문자열 처리 결과를 열거해서 tag, range 값으로 받을 수 있습니다. 

 

 

 

위와 같이 tagger의 enumerateTags 메서드의 결과를 보실 수 있습니다.

위의 결과만 보면 단순 공백 단위, 반점 단위로 단어를 쪼갠 것에 불과해보일 수 있습니다.
하지만 NLTagger객체에 대한 보다 더 다양한 세부 설정으로 enumerateTags 메서드를 활용하고 문자열을 처리하면 주어진 문자열에 대한 품사 나 특성을 세부적으로 분류하여 활용할 수 있습니다. 

 

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함