본문 바로가기
코딩 공부/Swift

[Swift] 영어단어 추출하기 2 : 특수기호와 중복단어 제거하기

by JH-M 2023. 2. 1.

이번글은 [Swift] 영어단어 추출하기 글에 이어서 영어단어를 추출할때 특수기호와 중복 단어를 제외하고 단어를 추출하는 내용입니다.

 

[Swift] 영어단어 추출하기

HTML 삽입 미리보기할 수 없는 소스 저에게 영어로 된 글을 읽을때 첫번째로 걸림돌이 되는 부분이 바로 글에 포함된 단어를 많이 모른다는 것입니다. 글을 읽기 전에 미리 단어를 학습하고 글을

jh-make.tistory.com

 

특수기호, 중복단어를 제외한 단어 추출코드

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 는 OtherPersonalName 태그를 제외하는 코드입니다. Other 는 "😀 ⚽️ 💯 ~ / " 와 같은 특수기호를 뜻하고 PersonalName 은 사람이름을 뜻합니다.

댓글