DeveloperAcademy-POSTECH / 2024-MacC-M11-1Byte

TEAM: 1BYTE 🍀
2 stars 0 forks source link

[Vinci/Feat/#93] AI 문장분석 기능&UI 구현 #105

Closed Dobbinci closed 4 days ago

Dobbinci commented 4 days ago

📓 Overview

🤔 고민 내용

👨‍🏫 코드 설명

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라는 리스트에 계속 저장합니다.

return convertToWWH(taggedWords: results)

results를 View에서 사용할 수 있도록 [Bool] 형태로 변환합니다.

📸 Screenshot

https://github.com/user-attachments/assets/9d21ffcb-da7c-4966-9182-240b2eea76ad