성능 테스트를 위해 분석 시 출력되는 print 문은 남겨놓았습니다. 출시 전에 제거하겠습니다
DetailGoalView의 main VStack의 spacing을 0으로 주고 세부 뷰 별로 padding을 적용하여 간격을 주었습니다. main에서 한번에 적용하니 세부 컨트롤이 어려워서요!
👨🏫 코드 설명
let mlModel = try SpecificTagger3942(configuration: MLModelConfiguration())
coreml 모델을 불러오는 부분입니다. 3942와 같은 넘버링은 학습 데이터 개수입니다.
let tokenizer = NLTokenizer(unit: .word)
tokenizer.string = text
var tokens: [String] = []
tokenizer.enumerateTokens(in: text.startIndex..<text.endIndex) { tokenRange, _ in
let word = String(text[tokenRange])
tokens.append(word)
return true
}
단어 단위로 문장을 분리합니다(Tokenize). 분리한 토큰을 tokens라는 리스트에 하나하나 집어넣습니다
var results: [TaggedWord] = []
for word in tokens {
let input = SpecificTagger3942Input(text: word)
let output = try mlModel.prediction(input: input)
let tag = output.labels
let taggedWord = TaggedWord(word: word, tag: tag.first ?? "")
results.append(taggedWord)
}
tokens에서 단어를 하나씩 모델에 입력으로 넣습니다. 예측 결과를 출력으로 받아 해당 단어가 "WHEN,WHERE,WHAT,HOW-MUCH, NONE" 중에 무엇에 속하는지 파악하여 TaggedWord 객체로 만듭니다 그리고 results라는 리스트에 계속 저장합니다.
📓 Overview
🤔 고민 내용
👨🏫 코드 설명
coreml 모델을 불러오는 부분입니다. 3942와 같은 넘버링은 학습 데이터 개수입니다.
단어 단위로 문장을 분리합니다(Tokenize). 분리한 토큰을 tokens라는 리스트에 하나하나 집어넣습니다
tokens에서 단어를 하나씩 모델에 입력으로 넣습니다. 예측 결과를 출력으로 받아 해당 단어가 "WHEN,WHERE,WHAT,HOW-MUCH, NONE" 중에 무엇에 속하는지 파악하여 TaggedWord 객체로 만듭니다 그리고 results라는 리스트에 계속 저장합니다.
results를 View에서 사용할 수 있도록 [Bool] 형태로 변환합니다.
📸 Screenshot
https://github.com/user-attachments/assets/9d21ffcb-da7c-4966-9182-240b2eea76ad