이번글은 [Swift] 영어단어 추출하기 글에 이어서 영어단어를 추출할때 특수기호와 중복 단어를 제외하고 단어를 추출하는 내용입니다.
특수기호, 중복단어를 제외한 단어 추출코드
import NaturalLanguage
let text = """
Predicate Predicate Predicate Format String Syntax, Republic of Korea😀⚽️💯 Facebook - Apple ~ TSLA Monalisa
"""
var wordList: Set<String> = []
let tagger = NLTagger(tagSchemes: [.nameType, .language, .lexicalClass, .tokenType, .nameTypeOrLexicalClass, .script, .lemma, .sentimentScore])
tagger.string = text
tagger.enumerateTags(in: text.startIndex..<text.endIndex, unit: .word, scheme: .nameType, options: [.omitPunctuation, .omitWhitespace, .joinNames]) { tag, range in
if let tag = tag {
let word = String(text[range])
let tagName = tag.rawValue
print("단어 : \(word) (\(tagName))")
if ["Other", "PersonalName"].contains(tagName) == false {
wordList.insert(word)
}
}
return true
}
print(wordList)
단어 중복 피하기
위 코드 3번줄 let text 변수를 확인해 주세요. "Predicate Predicate Predicate ..." 와 같이 문장에 중복단어가 포함되어 있는 상황입니다. 중복을 허용하지 않는 Set 을 사용해서 자동으로 중복을 제외시킬 수 있습니다. var wordList 변수에 Set 으로 설정해서 단어를 추가해주면 간단하게 중복된 단어를 제외 할 수 있습니다.
특수기호, 사람이름 제외하기
위 코드 17번줄을 확인해 주세요. if ["Other", "PersonalName"].contains(tagName) == false 는 Other 와 PersonalName 태그를 제외하는 코드입니다. Other 는 "😀 ⚽️ 💯 ~ / " 와 같은 특수기호를 뜻하고 PersonalName 은 사람이름을 뜻합니다.
댓글