Slide 1

Slide 1 text

$PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE 4XJGU͔ΒXPSEWFDΛ ࢖ͬͯΈΔ ϦʔυΞʔΩςΫτ
 ҏ౻༞ี :VTVLF*UP !OPWJ@ നϠΪίʔϙϨʔγϣϯ 5PLZP4FSWFS4JEF4XJGU.FFUVQ


Slide 2

Slide 2 text

5PLZP݄೔ʙ೔

Slide 3

Slide 3 text

$PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE 4FF63- • https://github.com/shiroyagicorp/swift-seeurl • ݩʑࣾ಺ϥΠϒϥϦΛެ։ • cURL(curlίϚϯυ), libcurlϕʔε • ಉظॲཧ(RunLoopෆཁ) let result = try HTTPClient.sendRequest("GET", "https://google.com") print(result.statusCode, result.body) ϑΥϩʔΞοϓهࣄUSZ4XJGU5PLZPͱͦͷޙ
 IUUQBJBMTIJSPZBHJDPKQNZUSZTXJGUBOEGPMMPXVQ

Slide 4

Slide 4 text

$PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE ϝϯςφϯε͍ͯ͠ΔϥΠϒ ϥϦ • novi/mysql-swift: MySQLΫϥΠΞϯτ (όΠϯσΟϯά) • novi/nkf-swift: Network Kanji FilterͷόΠϯσΟϯά • novi/mecab-swift: MeCabܗଶૉղੳͷόΠϯσΟϯά • novi/i2c-swift: I2CόεϥΠϒϥϦ • shiroyagicorp/swift-seeurl: cURL(HTTPS)ΫϥΠΞϯτ

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

$PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE OVNTX • https://github.com/sonsongithub/numsw • try! Swift TokyoͷϋοΧιϯͰ࡞ͬͨ • Pythonʹ͋Δ਺஋ܭࢉϥΠϒϥϦ(numsw)ΛSwift Ͱ΋࢖͍͍ͨ • ࠓ΋ͨ·ʹϝϯςφϯε͍ͯ͠Δ

Slide 7

Slide 7 text

$PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE XPSEWFD • 2013೥͘Β͍ʹެ։ • C࣮૷ • word2vecͷίϯηϓτ͸͜ͷล • https://deepage.net/bigdata/machine_learning/ 2016/09/02/ word2vec_power_of_word_vector.html

Slide 8

Slide 8 text

$PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE XPSEWFDͷιʔείʔυ • https://code.google.com/archive/p/word2vec/ • ͕ͩɺGoogle Codeऴྃʹ൐͍μ΢ϯϩʔυͰ͖ͳ͍ • https://github.com/svn2github/word2vec.git • ͜ͷลͷϛϥʔΛ࢖͏ • make Ͱ࣮ߦϑΝΠϧΛϏϧυ • macOSͩͱmalloc.hϔομʔ͕ແ͍ͱ͍͏Τϥʔ͕ग़ΔͷͰɺͦͷߦ Λίϝϯτ͢Δ • demo-*.sh͔Β࢝·ΔγΣϧεΫϦϓτͰσϞΛ࣮ߦ

Slide 9

Slide 9 text

$PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE XPSEWFDD • ςΩετϑΝΠϧΛೖྗͯ͠ɺτϨʔχϯάɺϞσ ϧΛग़ྗ • Cݴޠ 700ߦఔ౓ͷ CLI • ϚϧνεϨουରԠ • ίʔυ͕ಡΈʹ͍͘

Slide 10

Slide 10 text

$PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE EJTUBODFD • ϞσϧϑΝΠϧͱ୯ޠ(ෳ਺)Λೖྗͯ͠ɺίαΠϯ ྨࣅ౓(ίαΠϯڑ཭)Λܭࢉͯ͠ग़ྗ Enter word or sentence (EXIT to break): cat dog Word Cosine distance ------------------------------------------------------------------------ goat 0.827205 cow 0.796463 bee 0.788516 blonde 0.784559 hamster 0.784402 ass 0.779677 rat 0.774975

Slide 11

Slide 11 text

$PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE 4XJGU͔Β࣮ߦ͢Δʹ͸ 1. .cͷιʔεΛSwift͔ΒݺͿ • ͍ͭ΋ͷCͷϥΠϒϥϦΛSwift͔ΒಡΈࠐΉํ๏ • ࠓճ͸ϥΠϒϥϦͰ͸ͳ͘ɺmain()ͷܗʹͳͬͯ ͍ΔͷͰɺϥούʔؔ਺ͳͲΛఆٛ 2. ͕Μ͹ͬͯSwiftʹҠ২

Slide 12

Slide 12 text

$PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE ϞσϧϑΝΠϧ • ୯ޠͷϦετ(char*)ͱ୯ޠΠϯσοΫε(Int) • ୯ޠΠϯσοΫεͱ୯ޠϕΫτϧ(Float) • σϞͩͱαΠζ͕30ϝΨόΠτ͋Δ m0 m1 m2 i0 the -0.455356 1.908487 1.365852 i1 of 0.266191 1.750760 0.486601 i2 and 0.889470 1.455499 0.380907 i3 one -2.213606 0.914580 -0.512441

Slide 13

Slide 13 text

$PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE EJTUBODFDͷ΍Δ͜ͱ • ϞσϧΛύʔεͯ͠ڊେͳ(30MBఔ౓ͷ)ϝϞϦ্ʹಡΈࠐΉ • ͋Β͔͡Ί୯ޠͱ୯ޠΠϯσοΫεʹ෼͚Δ • ୯ޠΠϯσοΫεͱ୯ޠϕΫτϧΛϝϞϦ্ʹಡΈࠐΉ • ༩͑ΒΕͨɺ୯ޠʹରͯ͠ɺ୯ޠϕΫτϧ͔ΒίαΠϯڑ ཭Λܭࢉͭͭ͠ɺڑ཭͕͍ۙ΋ͷΛιʔτͯ͠ग़ྗ(දࣔ) • https://ja.stackoverflow.com/questions/2001/word2vecͷ distance͸ͳͥߴ଎ʹಈ࡞͢Δͷ͔

Slide 14

Slide 14 text

$PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE 4XJGUʹҠ২ • Ϟσϧ(୯ޠϕΫτϧ)ΛಡΈࠐΉϝϞϦۭؒ͸
 UnsafeMutablePointer.allocate(capacity:)
 Λ࢖༻ • Swift3͔Βಋೖ͞ΕͨϙΠϯλͱϝϞϦۭؒΛ҆શʹޮ཰తʹ ѻ͏࢓૊Έ(݁ߏ೉͍͠) • ૉ੖Β͍͠SwiftͷϙΠϯλܕͷղઆ: http://qiita.com/ omochimetaru/items/c95e0d36ae7f1b1a9052 • UnsafeRawPointer Migration: https://swift.org/migration- guide/se-0107-migrate.html

Slide 15

Slide 15 text

$PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE ΍ͬͨ͜ͱ • ୯ޠͱ୯ޠΠϯσοΫεͷରԠΛ഑ྻͰ͸ͳࣙ͘ॻʹมߋ • จࣈྻͷѻ͍ΛStringωΠςΟϒʹมߋ • ݩʑchar*΍strcmpͳͲͷCϨϕϧͩͬͨͷͰɺՄಡੑ ΍ѻ͍͕େม • (͓ͦΒ͘)ɺϢχίʔυ΁ͷରԠ͕Մೳ • (·ͩ΍͍ͬͯͳ͍͕)ɺιʔτपΓͷվળ

Slide 16

Slide 16 text

$PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE ࠓճͷϦϙδτϦ • https://github.com/novi/word2vec-swift

Slide 17

Slide 17 text

$PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE ·ͱΊ • C͔ΒͷҠ২͸ָ • ߏจ΋͍ۙ • ϙΠϯλपΓ΋ಉ͡࢓૊Έ͕࢖͑Δ • word2vecʹ͍ͭͯΑ͘ཧղͰ͖ͯΕ͹͞Βʹ༰қ

Slide 18

Slide 18 text

$PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE • ࣍ճ: നϠΪͰӡ༻͍ͯ͠ΔαʔόʔαΠυSwift • ൃදऀืूʂτϐοΫ͸ͳΜͰ΋OKʂ