LT@PythonBeginners沖縄

F0e950c6bf20815f3d169f063d3c5d4f?s=47 Aipa
November 17, 2018

 LT@PythonBeginners沖縄

F0e950c6bf20815f3d169f063d3c5d4f?s=128

Aipa

November 17, 2018
Tweet

Transcript

  1. Python Beginners ԭೄ ΞΠύʔୂ௕@ླྀٿେֶ

  2. ຊ೔͓࿩͢Δ͜ͱ

  3. ຊ೔͓࿩͢Δ͜ͱ • ஡൪ • σʔλΛ֬ೝ͢Δ͜ͱେࣄ • TF-IDF

  4. ࣗݾ঺հ

  5. ࣗݾ঺հ • ΞΠύʔୂ௕ • ͪΎΒσʔλגࣜձࣾ • PyData.OkinawaڞಉΦʔΨφΠβʔ • ࠷ۙͷΠϕϯτ ࢠڙ͕ੜ·Εͨ

  6. ஡൪

  7. ஡൪ • ࣍ͷεϥΠυͰ঺հ͢Δөըʹ͍ͭͯɺ
 ͦΕͧΕԿσϏϧϚϯ͔౴͑ͳ͍͞

  8. σϏϧϚϯ(୯Ґ)ͱ͸ https://twitter.com/1gho/status/936593895453900800

  9. ͊͞ɺ౴͍͑ͯͩ͘͞

  10. ਖ਼ղʢҟ࿦͸ೝΊΔʣ -10σϏϧϚϯ 0.2σϏϧϚϯ

  11. Կ͕ݴ͍͍ͨͷ͔ʢҰൠ޲͚ʣ • ύοέʔδࣅ͗͢ → ࠮ٗߴ౓ͳςΫχοΫͰ ஍ཕΛΧϞϑϥʔδϡ • ஍ཕΛ౿Ήͱ໿1࣌ؒ൒ͱ100ԁ͕ফ͑ͯͳ͘ ͳΔ →

    ΋͍ͬͨͳ͍ • ஍ཕΛࣄલʹճආ͢ΔͨΊͷ৘ใ͕΄͍͠
  12. Կ͕ݴ͍͍ͨͷ͔ʢݰਓ޲͚ʣ • ஍ཕͱࢥ͚ͬͨͲ໘ന͍өըͩͬͨͱ͍͏ύλʔϯ͸Α͋͘Δ • ΈΜͳBڃөըͷϨϏϡʔதʑͯ͘͠Εͳ͍ • ·ͱΊͨϨϏϡʔΛ෼ੳͨ͠WebαΠτ࡞Ζ͏ • ͪͳΈʹͲͬͪ΋Έͨʢ͔ͤͬ͘ͳͷͰ͝঺հʣ •

    σΟηϯτ → ಎ۸ด͡ࠐΊΒΕεϦϥʔͱࢥ͍͖΍ಥવͷ஍ఈਓ • έΠϰϑΟΞʔ → ಎ۸γʔϯ͸̏෼ɻέΠϰͱ͸ɾɾɾʁ
  13. ஡൪ऴΘΓ • ͱΓ͋͑ͣWebαΠτΛ࡞͍ͬͯ·͢ • BڃөըΛϨϏϡʔ͍ͯ͠ΔϒϩάهࣄΛΫϩʔϧ • ϨϏϡʔهࣄʹϥϕϧ෇ʢ໘ന͔ͬͨ or ͭ·Βͳ͔ͬͨʣ •

    σʔλ֬ೝ • લॲཧ • Ϟσϧߏங • Vue.jsͰαΠτΛߏங
  14. ஡൪ऴΘΓ • ͱΓ͋͑ͣWebαΠτΛ࡞͍ͬͯ·͢ • BڃөըΛϨϏϡʔ͍ͯ͠ΔϒϩάهࣄΛΫϩʔϧ • ϨϏϡʔهࣄʹϥϕϧ෇ʢ໘ന͔ͬͨ or ͭ·Βͳ͔ͬͨʣ •

    σʔλ֬ೝ • લॲཧ • Ϟσϧߏங • Vue.jsͰαΠτΛߏங
  15. ͦ͏͍͑͹ɺࠓ೔͸͜ͷձ৔ʹࣗવݴޠॲཧͷϓϩ͕͍Δͷ Ͱͳʹ͔ࠔͬͨ͜ͱ͋Δਓ͸ฉ͍ͯΈΔͱ͍͍͔΋͠·ͤΜ ※΅͘΋ϚαΧϦΛ໯͍ʹདྷ·ͨ͠ ʮϚαΧϦΛ଱͑Δ΅͘ʯͷ Πϝʔδਤʢ༧૝ʣ

  16. ϨϏϡʔهࣄʹϥϕϧ෇ ʢ໘ന͔ͬͨ or ͭ·Βͳ͔ͬͨʣ

  17. ϨϏϡʔهࣄʹϥϕϧ෇ • Ϋϩʔϥʔ࡞ͬͯूΊ͖ͯͨөըͷϨϏϡʔ σʔλʹϥϕϧ෇Λߦ͏ • ϥϕϧ෇ͱ͸ʁ → ྫ͑͹ը૾Λ֬ೝͨ͠ͱ͖ ʹೣ or

    ೣ͡Όͳ͍ͷ෇ᝦΛషΔΠϝʔδ • ػցֶश͢Δͱ͖ʹඞཁʹͳΔ
  18. ͤͬͤͱϥϕϧΛ;Δ 0 → ໘ന͔ͬͨ 1 → ͭ·Βͳ͔ͬͨ

  19. ʢ͜ͷ࡞ۀʣ ͭ·Βͳ͔ͬͨ

  20. ͱΓ͋͑ͣΦϫλʢ࡞ۀ͕ʣ • 5αΠτ͔͠ऩू͍ͯ͠ͳ͍͕هࣄ͸શ෦Ͱ650݅ • ͏ͪ607݅ʹϥϕϧΛ͚ͭΔ͜ͱ͕Ͱ͖ͨ • ʮͭ·Βͳ͔ͬͨʯ374݅ʮ໘ന͔ͬͨʯ233݅ • ࢒Γ43݅͸өըͷϨϏϡʔهࣄͰ͸ͳ͔ͬͨ •

    ͍ۙ͏ͪʹ͜͏͍͏࡞ۀ΋ࣗಈͰ΍Γ͍ͨ
 ʢϥϕϧ෇ͱ͔ϨϏϡʔ͡Όͳ͍هࣄআ֎ͱ͔ʣ
  21. Ͷ͘͢ͱ

  22. Ͷ͘͢ͱ • ϨϏϡʔ෼ੳͷهࣄ͕ݟ͔ͭΒͳ͍ͷͰɺ
 ΍Γํ͕Θ͔Βͳ͍ • ࣗવݴޠॲཧͰ͙͙ͬͨΒʮ୯ޠग़ݱස౓ʯɺ ʮTF-IDFʯɺʮFastTextʯͰͳΜ͔΍͍ͬͯΔ هࣄ͕͋ͬͨ • FastTextਫ਼౓Αͦ͞͏

  23. Α͠ʂ·ͣ͸ FastTextΛࢼͯ͠ΈΑ͏ʂ

  24. ͦΜͳ࣌ظ͕ ΅͘ʹ΋͋Γ·ͨ͠

  25. σʔλΛ֬ೝ͠Α͏ • ػցֶशઌߦͯ͠΍Γ͍ͨؾ࣋ͪ͸Θ͔Δ͕ɺσʔλ͸Ͳ͏ ͍͏ಛ௃Λ͍࣋ͬͯΔͷ͔౳ɺ֬ೝͤͣʹ΍Δͱ௧͍໨ʹ
 ʢಛʹ࢓ࣄͰ͸ʣ • զʑͷ໨త͸ϞσϧΛ࡞Δ͜ͱ͕໨తͰ͸ͳ͍ɺ
 ϞσϧΛ࢖ͬͯͳʹ͔Λղܾ͢Δ͜ͱ͕໨త • σʔλͷ֬ೝ࡞ۀ͸టष͍͕ɺ͜ͷۀքͰͷట༡ͼ͸ਖ਼ٛ

  26. σʔλͷ֬ೝ

  27. σʔλͷ֬ೝ • ͭ·Βͳ͍өըͷϨϏϡʔهࣄͬͯɺ
 ωΨςΟϒͳΩʔϫʔυ͕ଟ͍ͱࢥ͏ • ·ͣ͸ɺจষதʹωΨςΟϒͳΩʔϫʔυ͕ ଘࡏ͍ͯ͠Δ͔ɺϥϕϧຖʹूܭͯ͠ΈΔ

  28. өըͷωΨςΟϒΩʔϫʔυ
 ʢ๻ͷ૝૾ʣ ͦ͘ɺΫιɺฅɺμϝɺBڃɺCڃɺZڃɺνʔ ϓɺ͍҆ɺ໘ന͘ͳ͍ɺͭ·Βͳ͍ɺস͑Δɺ ςϯϙ͕ѱ͍ɺύΫϦɺ࣌ؒͷແବɺۚฦͤɺ ຾͍ɺ৸མͪɺύοέʔδ࠮ٗɺύοέʔδͱ ҧ͏ɺ಄͓͔͍͠ɺ͍͍͚ͭͯͳ͍ɺԋٕ͕Լ खɺΦν͕ͳ͍ɺݟॴ͕ͳ͍

  29. ूܭ݁Ռ • ༧૝௨ΓɺωΨςΟϒͬ Ά͍஋Ͱɺ෼ྨͰ͖ͦ͏ ͳงғؾ • લͷϖʔδʹ͋ͬͨͷʹ ӈਤʹͳ͍୯ޠ͸هࣄʹ ଘࡏ͠ͳ͍୯ޠ •

    ωΨςΟϒͳ୯ޠ͕ώο τͨ͠Βʮͭ·Βͳ͔ͬ ͨʯͱ༧ଌͯ͠ΈΔ
  30. ωΨςΟϒͳϫʔυ͚ͩͰ༧ଌͯ͠ΈΔ • ୯ޠΛݕࡧ͢Δ͚ͩͰ
 ໿60%ͷਫ਼౓ • ͜ͷ݁ՌΛϕʔεϥΠϯ
 ͱͯ͠ਐΊΔ • ϋζϨͷσʔλΛ
 ֬ೝͯ͠ΈΔ

  31. ϋζϨͷ֬ೝ • ʮͭ·Βͳ͔ͬͨʯͷʹʮͭ·Βͳ͔ͬͨʯͱ༧ଌͰ͖ͳ͍ͷ͸ɺ༻ҙͨ͠ωΨςΟ ϒͳ୯ޠʹϚον͠ͳ͔͔ͬͨΒ • ྫʣಀ͍ͯ͠Δύλʔϯʮຊ࡞͸ඇৗʹ࢒೦ͳࢠͰ͋Δʯɺʮ๙ΊΔͱ͜Ζ͕ͳ ͍ʯɺʮָ͘͠ͳ͍ʯ • ௥Ճ͢Ε͹ྑ͍ɻ͕ɺͦͷ౎౓௥Ճ͸ΊΜͲ͍͘͞… •

    ʮ໘ന͔ͬͨʯͷʹʮͭ·Βͳ͔ͬͨʯͱ༧ଌͯ͠͠·ͬͨͷ͸ɺ༻ҙͨ͠ωΨςΟ ϒͳ୯ޠʹϚονͯ͠͠·͔ͬͨΒ • ϨϏϡʔهࣄʹʮBڃʯͱॻ͍ͯ͠·͚ͬͨͩͰɺʮͭ·Βͳ͔ͬͨʯͱ෼ྨͯ͠ ͠·͏ͷ͸·ͣͦ͏ • ୯७ͳΩʔϫʔυϚονϯάͰ͸ճආ͢Δ͜ͱ͸೉͍͠ͱࢥ͏
  32. ͪͳΈʹ

  33. ʮ໘ന͔ͬͨʯͷʹʮͭ·Βͳ͔ͬͨʯͱ ༧ଌͨ͠ݪҼΛௐ΂Δ1ྫ

  34. ʮ໘ന͔ͬͨʯͷʹʮͭ·Βͳ͔ͬͨʯͱ ༧ଌͨ͠ݪҼΛௐ΂Δ1ྫ http://rottentaste.blog.fc2.com/blog-entry-23.html#more

  35. http://rottentaste.blog.fc2.com/blog-entry-23.html#more ʮ໘ന͔ͬͨʯͷʹʮͭ·Βͳ͔ͬͨʯͱ ༧ଌͨ͠ݪҼΛௐ΂Δ1ྫ

  36. ͳΔ΄Ͳɾɾɾ ʢϥϕϧ෇͕ؒҧͬͯͨʣ

  37. σʔλΛ֬ೝ͠Α͏ʢ࠶ܝʣ • ͜͏͍͏͜ͱ͕͋Δ • ͜ΕΛং൫Ͱؾͮ͘ͷ͔ɺ෼ੳத൫·ͨ͸
 ऴ൫Ͱؾͮ͘ͷ͔Ͱ͸ɺϦΧόϦͷେม͕͞ ҧ͏ • ͥͻɺػցֶश͢Δ·͑ʹσʔλͷ֬ೝΛ

  38. ͪͳΈʮϩϘΫϩίʯ๻͸޷͖Ͱ͢ ޙ൒৸མ͔ͪͨ͠Β͋Μ·Γ֮͑ͯͳ͍

  39. Ͷ͘͢ͱ͋͘͠ΐΜ

  40. Ͷ͘͢ͱ͋͘͠ΐΜ • ωΨςΟϒͳϫʔυͰ෼ྨͰ͖ͦ͏ͳงғؾͳͷ͸Θ͔ͬͨ • ͔͠͠ɺΩʔϫʔυϚονϯά͚ͩͰ͸೉͍͜͠ͱ΋Θ͔ͬͨ • ୯ޠग़ݱස౓Λ֬ೝͯ͠ɺ্Ґ10Ґ·Ͱϥϕϧຖʹൺֱͨ͠Βɺ ͳʹ͔ಛ௃͕ݟ͑ͳ͍ͩΖ͏͔ • ଟ෼ʮαϝʯ͕༏উ͢Δͱ༧૝

    • ୯ޠग़ݱස౓͸ͳΜͱͳ݁͘Ռ͕༧૝Ͱ͖ͯɺ͏·͍͔͘ͳͦ͞ ͏ͳͷͰɺॏΈ෇͚͢Δ͜ͱ͕Ͱ͖ΔTF-IDFͰ֬ೝͯ͠ΈΑ͏͔
  41. ୯ޠग़ݱස౓ͷ֬ೝ

  42. ୯ޠग़ݱස౓ͷ֬ೝ • ϨϏϡʔهࣄຖʹ୯ޠͷग़ݱස౓Λܭࢉ͢Δ • ͭ·Βͳ͍өը͸ͲΜͳ୯ޠ͕ଟ͍͔ͳʁ • scikit-learnͷCountVectorizerΛ࢖͏

  43. ݁Ռ • ʮαϝʯʮΤΠϦΞϯʯʮκϯϏʯ্͕Ґ • ͏Μɺ஌ͬͯͨ • ωΨςΟϒͬΆ͍୯ޠ͸্Ґʹ͖ͯͳ͍ • ͲͪΒ΋ࣅͨΑ͏ͳ୯ޠ্͕ҐʹฒΜͰ͍Δ •

    ΫιөըΛ໘ന͍ͱ͍͍ͬͯΔਓ͕͍ΔͨΊ • ͦ΋ͦ΋ॳճΫϩʔϧ͍ͯ͠Δϒϩάͷ
 өըδϟϯϧʹภΓ͕… • ͜ͷ৘ใͰ͸ʮ໘ന͔ͬͨʯʮͭ·Βͳ͔ͬͨʯΛ෼͚Δͷ͸೉ͦ͠͏Ͱ͋Δ • ໘ന͘ͳ͍өը_wordͷ8Ґͷʮୂ௕ʯͬͯͳʹʁ → ๻ͷϒϩάͷ͍ͤͰ͢
  44. TF-IDFͰ୯ޠॏΈ෇͚

  45. TF-IDFͬͯͳʹʁ • จষதʹؚ·ΕΔ୯ޠͷॏཁ౓ΛධՁ͢Δख ๏ͷ̍ͭ • TF͸͋ΔυΩϡϝϯτdͷ୯ޠtͷग़ݱස౓ • IDF͸ଟ͘ͷυΩϡϝϯτʹଘࡏ͢Δ୯ޠt ͸ɺυΩϡϝϯτdͰ͸ॏཁ౓ΛԼ͛Δ

  46. TF-IDFͬͯͳʹʁ http://datanerd.hateblo.jp/entry/2017/09/18/201907

  47. ਺ࣜಡΊͳ͍ http://datanerd.hateblo.jp/entry/2017/09/18/201907 ͋ΔυΩϡϝϯτʹؚ·ΕΔ୯ޠͷ਺× ͋ΔυΩϡϝϯτʹؚ·ΕΔ୯ޠͷ૯਺ υΩϡϝϯτͷ૯਺× ͋Δ୯ޠؚ͕·Ε͍ͯΔυΩϡϝϯτͷ਺ w 5'ˠ5FSN'SFRVFODZɺ୯ޠͷग़ݱස౓ w *%'ˠ*OWFSTF%PDVNFOU'SFRVFODZɺٯจॻස౓

  48. *%' MPH 5' TF-IDFͬͯͳʹʁ(ྫ: ୯ޠ͕ʮϫχʯͷ৔߹) ΤΠϦΞϯ✕ ϫχ✕ αϝ✕ ϫχ✕ ×

     ✕ ͋ΔυΩϡϝϯτ શυΩϡϝϯτ ϫχΛؚΉυΩϡϝϯτ✕ ×  શυΩϡϝϯτ 
  49. TF-IDFΛ࢖͏

  50. TF-IDFΛ࢖͏ʢ݁Ռʣ • өըͱͯ͠ͷಛ௃্͕Ґʹ͖ͯ ͍Δงғؾ • ͔͠͠ʮͭ·Βͳ͔ͬͨʯ
 ͱ͍͏ಛ௃ʹ͸ͳ͍ͬͯͳ͍ ͱࢥ͏ • ΋͏খखೖΕ͕ඞཁͦ͏

    • ampͱ͔urlͳͲͷWebͷϝλޠ Έ͍ͨͳϫʔυ͸ετοϓϫʔ υʹ௥Ճ • ϒϩάͷओͷλΠτϧ໊ͱ͔ ϒϩάಛ༗ͷ໊ࢺ΋௥Ճͯ͠ ΋͍͍͔΋
  51. TF-IDFΛ࢖ͬͯΈͯ • ಛ௃ͬΆ͍୯ޠΛ؆୯ʹूܭɺ֬ೝͰ͖ͯΑ͍ɻߟ࡯͕ḿΔ • TF-IDF஋͕ߴ͍΍͚ͭͩ͡Όͳͯ͘ɺதؒɺ௿͍஋ͰִؒΛ ༻ҙͯ͠୯ޠ֬ೝ͢Δͷ΋͍͍͔΋ • ΍ͬͯͯࢥ͕ͬͨɺҧ͏ϒϩάͷهࣄಉ࢜Λ·ͱΊͯTF-IDF͢ Δͬͯ݁ߏཚ๫ͳͷͰ͸ɾɾɾʁ •

    ͦΕͧΕจମ͕ҧ͏͔Βɺ͋ΔϒϩάͰ͸ϙδςΟϒͬΆ͍Ωʔ ϫʔυ΋ผϒϩάͰ͸ωΨςΟϒʹͳ͍ͬͯΔΜ͡Όͳ͍ͩΖ ͏͔ → ࣍ͷΞΫγϣϯͷࢀߟ
  52. ࡶʢͳʣײʢ૝ʣ

  53. ࡶײ • ஍ಓʹσʔλͱ޲͖߹͏͜ͱͰͳΜͱͳ͘
 ࣍ͷΞΫγϣϯ͕ݟ͖͑ͯͨ • ·ͩ·ͩࣗવݴޠॲཧྗ͕଍Γͳ͍ • BڃϥΠϑΛόϥ৭ʹ͢ΔͨΊʹҾ͖ଓ͖ؤுΔ

  54. None