Skip to content

JeEonPark/2024-NC2-A40-MachineLearning

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

18 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

2024-NC2-M40-MachineLearning

ppt_main

๐ŸŽฅ Youtube Link

(์ถ”ํ›„ ๋งŒ๋“ค์–ด์ง„ ์œ ํŠœ๋ธŒ ๋งํฌ ์ถ”๊ฐ€)

๐Ÿ’ก About Machine Learning

process

  1. ์ด๋ฏธ์ง€, ํ…์ŠคํŠธ, ํ‘œ ๋“ฑ์„ Create ML์— ํ•™์Šต
  2. Core ML Model์ด ์ด๊ฒƒ์„ ํ†ตํ•ด ๋ชจ๋ธ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜, ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ ํ›„ Core ML ํ˜•์‹์œผ๋กœ ๋ณ€๊ฒฝ
  3. Core ML์—์„œ Vision, ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ, Speech, ์Œ์„ฑ ์ธ์‹ ๋“ฑ์„ ํ•ด๊ฒฐ
  4. ์•ฑ์— ์ ์šฉ

Create ML

์ฝ”๋“œ ์ž‘์„ฑ ์—†์ด ๋งฅ์—์„œ ๋ฐ”๋กœ Core ML ๋ชจ๋ธ์„ ์ƒ์„ฑํ•˜๊ณ  ํ•™์Šต์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ

Core ML

๋จธ์‹ ๋Ÿฌ๋‹์„ ์• ํ”Œ ํ”Œ๋žซํผ์—์„œ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

๐ŸŽฏ What we focus on?

1. ์Œ์„ฑ ์ธ์‹

์Œ์„ฑ์„ ๋ถ„์„ํ•ด์„œ Text๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” STT (Speech-to-Text)

2. ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ (๊ฐœ์ฒด๋ช… ์ธ์‹)

์ž์—ฐ์–ด ํ…์ŠคํŠธ๋ฅผ ๋ถ„์„ํ•˜๊ณ , ์–ธ์–ด๋ณ„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๋ก 

naturallanguage

*๊ฐœ์ฒด๋ช… ์ธ์‹: ์–ธ์–ด์  ํƒœ๊น…์„ ์‚ฌ์šฉํ•˜์—ฌ, ๋ฌธ์ž์—ด์˜ ๊ฐœ์ฒด๋ช…์„ ์ง€์ •

์ด ๋‘ ๊ฐ€์ง€ ๋ถ€๋ถ„์— ์ง‘์ค‘ํ•œ ์ด์œ 

ML ๊ธฐ์ˆ  ์ž์ฒด๋งŒ์„ ์ค‘์ ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ๋ณด๋‹ค, ์šฐ๋ฆฌ ์„œ๋น„์Šค์—์„œ ์ˆ˜๋‹จ์œผ๋กœ์จ ์ž˜ ํ™œ์šฉํ•ด๋ณด์ž๊ณ  ์ƒ๊ฐ

์ฆ‰, ๋จธ์‹ ๋Ÿฌ๋‹์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ถ„์„๋งŒ์„ ํ•˜๊ธฐ๋ณด๋‹ค ์‹ค์ œ ์‚ฌ์šฉ์„ฑ์— ์ ์šฉํ•˜๋Š” ๊ฒƒ์— ์ดˆ์ 

โ†’ ML์—์„œ ์–ด๋– ํ•œ ๋ถ€๋ถ„์„ ์‚ฌ์šฉํ•ด์•ผ ์šฐ๋ฆฌ์˜ ๋ชฉ์ ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์„์ง€๋ฅผ ๊ณ ๋ฏผ

โ†’ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒช๊ณ  ์žˆ๋Š” ์–ด๋ ค์›€์„ ํ•ด๊ฒฐํ•ด์ฃผ์ž๋Š” ์˜๊ฒฌ์—์„œ ์‹œ์ž‘

์ผ๋ณธ์ธ๋“ค์„ ์œ„ํ•œ ๊ฐ€๊ณ„๋ถ€ ์–ดํ”Œ์ด๋ผ๋Š” ์•„์ด๋””์–ด๊ฐ€ ๋„์ถœ

์ž์—ฐ์–ด ์ฒ˜๋ฆฌ๋ฅผ ์ด์šฉํ•œ ์Œ์„ฑ ์ธ์‹๊ณผ, ๋ฌธ์„œ ์ธ์‹์„ ์ด์šฉํ•œ ์˜์ˆ˜์ฆ ์ธ์‹ ๊ธฐ์ˆ  ์„ ํƒ

๐Ÿ’ผ Use Case

๐Ÿ’โ€โ™€๏ธ ๋‚ ์ด ๋”์›Œ ์‹œ์›ํ•œ ์Œ๋ฃŒ๋ฅผ ์‚ฌ๊ธฐ ์œ„ํ•ด ํŽธ์˜์ ์— ๋ฐฉ๋ฌธํ•œ ํ‰๋ฒ”ํ•œ ์ผ๋ณธ์ธ ๋Œ€ํ•™์ƒ ์œ ํ‚ค์ƒ..

ํ‰์†Œ๋Œ€๋กœ ํ˜„๊ธˆ์œผ๋กœ ์Œ๋ฃŒ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ๋ฐ–์œผ๋กœ ๋‚˜์™”๋‹ค.

์žŠ์ง€ ์•Š๊ณ  ๊ฐ€๊ณ„๋ถ€๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์–ดํ”Œ์„ ์ผฐ๋Š”๋ฐ,

๋•€์ด ๋‚  ์ •๋„๋กœ ๋”์šด ๋‚ ์”จ์— ๊ฑฐ๋ž˜ ๋‚ด์—ญ, ๊ณ„์‚ฐ ๋ฐฉ๋ฒ•, ๊ธˆ์•ก๊นŒ์ง€ ์ผ์ผ์ด ๊ธฐ์ž…ํ•˜๊ธฐ ๋„ˆ๋ฌด๋‚˜ ๊ท€์ฐฎ๋‹ค.

๊ฐ€๊ณ„๋ถ€๋Š” ๊ทธ ๋•Œ ๊ทธ ๋•Œ ์จ์•ผ ์•ˆ ์žŠ์–ด๋ฒ„๋ฆฌ๋Š”๋ฐ..

๋” ํŽธ๋ฆฌํ•˜๊ณ  ์‰ฝ๊ฒŒ ๊ธฐ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค!


์†”๋ฃจ์…˜ ์ปจ์…‰

ํ˜„๊ธˆ ์‚ฌ์šฉ์œผ๋กœ ๊ฐ€๊ณ„ ๋‚ด์—ญ ๊ธฐ๋ก ๊ณผ์ •์ด ๊ท€์ฐฎ์€ ์ผ๋ณธ์ธ๋“ค์ด ์‰ฝ๊ฒŒ ๋‚ด์—ญ์„ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ์ž!


๊ธฐ์ˆ 

  • ์Œ์„ฑ ์ธ์‹์„ ์ด์šฉํ•ด ์Œ์„ฑ์„ ๋ถ„์„ํ•ด ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค.
  • ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ๋ฅผ ์ด์šฉํ•œ ํ…์ŠคํŠธ ๋ถ„์„์œผ๋กœ ๊ธฐ๋ก์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์ค€๋‹ค.

์ฒดํฌํฌ์ธํŠธ

ํ•ด๋‹น ์œ ์Šค์ผ€์ด์Šค์—์„œ ์‚ฌ๋žŒ๋“ค์ด ๊ฐ€์น˜๋ฅผ ์ž˜ ๋А๋ผ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ, ์ด ๊ธฐ์ˆ ๋งŒ์˜ ์–ด๋–ค ํŠน์ง•, ์žฅ์ ์ด ๋‘๋“œ๋Ÿฌ์ง€๊ฒŒ ํ™œ์šฉ๋˜๊ณ  ์žˆ๋‚˜์š”?

โ†’ ์–ด๋–ป๊ฒŒ ๋ง์„ ํ•ด๋„ ์•ฑ์ด ์•Œ์•„์„œ ์ธ์‹ํ•ด์„œ, ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•ด์ค˜ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์ด ๋ฒˆ๊ฑฐ๋กญ์ง€ ์•Š๋‹ค.

์–ด๋–ค ์œ ์ €์—๊ฒŒ ์–ด๋–ค ๊ฐ€์น˜, ๊ฐ€๋Šฅ์„ฑ๊ณผ ํšจ์šฉ์ด ์ „๋‹ฌ๋˜๋‚˜์š”?

โ†’ ๋งค์ผ ๊ฑฐ๋ž˜ ๋‚ด์—ญ์„ ๊ธฐ๋กํ•˜๊ณ  ์‹ถ์€๋ฐ ํƒ€์ดํ•‘์ด ๊ท€์ฐฎ์€ ์œ ์ €๊ฐ€ ๋น ๋ฅด๊ณ  ํŽธ๋ฆฌํ•˜๊ฒŒ ์ ‘๊ทผํ•ด์„œ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ–ผ๏ธ Prototype

1

2

๐Ÿ› ๏ธ About Code

CreateML์„ ํ†ตํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ์žฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋ผ๋ฒจ๋ง (์•ฝ 300๋ฌธ์žฅ ํ•™์Šต)

{
"tokens":  ["12์›”5์ผ",  "์—",  "๋„์„œ๊ด€",  "์—์„œ",  "800์—”"],
"labels":  ["Date",  "0",  "Location",  "0",  "Amount"]
},
{
"tokens":  ["๏ผ“ๆœˆ๏ผ’๏ผ”ๆ—ฅ",  "ๅ‹้”",  "ใ‹ใ‚‰",  "550ๅ††",  "ใ‚‚ใ‚‰ใฃใŸ"],
"labels":  ["Date",  "Location",  "O",  "Amount",  "Verb"]
}

CreateML๋กœ ์ƒ์„ฑํ•œ MoneySpeechModel์„ ์ฝ”๋“œ์— ์ ์šฉํ•˜๋Š” Swift ์ฝ”๋“œ

func textToTagsJP(_ text: String) -> [String: [String]] {
    do {
        let mlModel = try MoneySpeechModelJP(configuration: MLModelConfiguration()).model

        let customModel = try NLModel(mlModel: mlModel)
        let customTagScheme = NLTagScheme("MoneySpeechModelJP")
        
        let tagger = NLTagger(tagSchemes: [.nameType, customTagScheme])
        tagger.string = text
        tagger.setModels([customModel], forTagScheme: customTagScheme)
        
        var tagsDict: [String: [String]] = [:]
        
        tagger.enumerateTags(in: text.startIndex..<text.endIndex, unit: .word, scheme: customTagScheme, options: .omitWhitespace) { tag, tokenRange in
            if let tag = tag {
                let tagValue = tag.rawValue
                let token = String(text[tokenRange])
                
                if tagsDict[tagValue] != nil {
                    tagsDict[tagValue]?.append(token)
                } else {
                    tagsDict[tagValue] = [token]
                }
            }
            return true
        }
        
        for (key, tokens) in tagsDict {
            tagsDict[key] = [tokens.joined()]
        }
        
        print(tagsDict)
        return(tagsDict)
    } catch {
        print(error)
        return [:]
    }
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Swift 100.0%