티스토리 뷰
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 메서드를 활용하고 문자열을 처리하면 주어진 문자열에 대한 품사 나 특성을 세부적으로 분류하여 활용할 수 있습니다.
'iOS 개발' 카테고리의 다른 글
Vision VNRequest, Handler, Observation 역할 및 사용방법 (0) | 2020.06.03 |
---|---|
iOS NLTagger로 문자열 어휘, 이름 단위 토큰화 하기 (0) | 2020.06.02 |
iOS grouped TableView의 headerView 제거하는 방법들 (0) | 2020.05.28 |
iOS앱 TestFlight 내부 테스터 등록 및 초대하는 방법 (0) | 2019.12.31 |
iOS앱 TestFlight 앱 업로드 및 테스트 준비하기 (1) | 2019.12.30 |
- Total
- Today
- Yesterday
- 프로그래머스swift
- 자연어처리
- Protocol
- swift언어
- swift알고리즘
- swift
- 개발자문서
- swift 문자열
- createML
- Collection
- 알고리즘문제
- 백준swift
- ios
- swift string
- swift문제
- 알고리즘
- swift 기초
- uikit
- 부스트코스
- SwiftUI
- Swift 알고리즘
- 컬렉션
- 백준알고리즘
- CoreML
- 스위프트
- 프로토콜
- 프로그래머스
- swift reduce
- 김프매매
- publisher
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |