Upgrade to Pro — share decks privately, control downloads, hide ads and more …

word2vec accuracy

Avatar for asako asako
August 16, 2016

word2vec accuracy

Avatar for asako

asako

August 16, 2016

More Decks by asako

Other Decks in Programming

Transcript

  1. demo-word-accuracy.sh make if [ ! -e text8 ]; then wget

    http://mattmahoney.net/dc/text8.zip -O text8.gz gzip -d text8.gz -f fi time ./word2vec -train text8 -output vectors.bin -cbow 1 -size 200 -window 8 -negative 25 -hs 0 -sample 1e-4 -threads 20 -binary 1 -iter 15 ./compute-accuracy vectors.bin 30000 < questions-words.txt # to compute accuracy with the full vocabulary, use: ./compute-accuracy vectors.bin < questions-words.txt
  2. accuracy (text8) $ ./compute-accuracy vectors.bin < questions-words.txt capital-common-countries: ACCURACY TOP1:

    80.04 % (405 / 506) Total accuracy: 80.04 % Semantic accuracy: 80.04 % Syntactic accuracy: nan % capital-world: ACCURACY TOP1: 48.26 % (1720 / 3564) Total accuracy: 52.21 % Semantic accuracy: 52.21 % Syntactic accuracy: nan % currency: ACCURACY TOP1: 21.81 % (130 / 596) Total accuracy: 48.33 % Semantic accuracy: 48.33 % Syntactic accuracy: nan % city-in-state: ACCURACY TOP1: 44.59 % (1039 / 2330) Total accuracy: 47.08 % Semantic accuracy: 47.08 % Syntactic accuracy: nan % family: ACCURACY TOP1: 59.05 % (248 / 420) Total accuracy: 47.76 % Semantic accuracy: 47.76 % Syntactic accuracy: nan %
  3. Wikipedia Extractor ⽣成されたファイルの中⾝はこんな感じ。<doc>タグだけ残る。 <doc id="3455820" url="https://ja.wikipedia.org/wiki?curid=3455820" title="ߦಙϞεΫ"> ߦಙϞεΫ ߦಙϞεΫ·ͨ͸ ώϥɾϚεδυʢ

    ʣ͸ɺઍ༿ݝࢢ઒ࢢߦಙӺલʹॴࡏ͢ΔϞεΫɻ1997೥ʹݐͯΒΕͨɻΠεϥϛοΫɾαʔΫϧɾΦϒɾδϟύϯ ʢICOJʣͷҰ෦ہͰ͋Δ೔ຊϞεΫϑΝ΢ϯσʔγϣϯʢJMFʣʹΑͬͯӡӦ͞Ε͍ͯΔɻ ೔ຊޠදهʹ͍ͭͯ͸ʮώϥϚεδουʯʢ ) ͷ΄͔ɺʮߦಙϞεΫʯ ͱ༻͍ΒΕΔɻ ϞεΫ͸ɺ࣍ͷجຊతͳαʔϏεΛఏڙ͍ͯ͠Δ ݐ෺͸̐֊ݐͯͰɺ ֤֊ͷׂΓ౰ͯ͸ɺҎԼͷ௨ΓͰ͋Δɻ ࠷دΓӺ͸౦ژϝτϩ౦੢ઢߦಙӺɻ(ెาͰ7෼) </doc>
  4. wakati Word Extractorの出⼒は500K毎の出⼒に分割してしまったので、これを word2vec⽤にひとつのファイルにまとめる。 $ python a.py extracted/*/* | ¥

    mecab -b 1000000 ¥ -F"%f[6] " -U"%m " -E"\n" ¥ -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd ¥ > ./jawiki-wakati.txt
  5. jawiki-watati.txt $ ls -lh jawiki-wakati.txt -rw-r--r-- 1 asako staff 2.5G

    8 7 14:35 jawiki-wakati.txt $ wc jawiki-wakati.txt 7543274 417027641 2706398402 jawiki-wakati.txt
  6. word2vec $ ./word2vec -train ./data/jawiki-wakati.txt -output jawiki.bin -size 200 -window

    8 -negative 25 -hs 0 -sample 1e-4 -thread 2 -binary 1 -iter 15
  7. accuracy (jawiki) $ ./compute-accuracy jawiki.bin < ./questions-japanese-words.txt capital-common-countries(japanese): ACCURACY TOP1:

    57.05 % (2485 / 4356) Total accuracy: 57.05 % Semantic accuracy: 57.05 % Syntactic accuracy: nan % currency(english): ACCURACY TOP1: 1.33 % (5 / 375) Total accuracy: 52.63 % Semantic accuracy: 52.63 % Syntactic accuracy: nan % city-in-state(english): ACCURACY TOP1: 13.24 % (281 / 2122) Total accuracy: 40.43 % Semantic accuracy: 40.43 % Syntactic accuracy: nan % city-in-state(japanese): ACCURACY TOP1: 84.18 % (1820 / 2162) Total accuracy: 50.93 % Semantic accuracy: 50.93 % Syntactic accuracy: nan % family(japanese): ACCURACY TOP1: 50.99 % (258 / 506) Total accuracy: 50.93 % Semantic accuracy: 50.93 % Syntactic accuracy: nan % gram1-adjective-to-adverb: ACCURACY TOP1: 0.00 % (0 / 272) Total accuracy: 49.51 % Semantic accuracy: 50.93 % Syntactic accuracy: 0.00 % gram2-opposite:
  8. updated filter script again <doc>タグを削除 <br>タグを削除 formula_1 や codice_1など数式のリンク⽂字を削除 品詞判定を実施

    助詞、助動詞、記号、フィラー、その他に分類される品詞を削除 使⽤辞書の品詞分類はこちらのページ(http://www.unixuser.org/%7Eeuske/doc/postag/#chasen) 適当にstop word (てる, いる, なる, れる, する, ある)を拾い出し、stop word排除を実施
  9. jawiki-wakati.c.py.txt $ ls -lh jawiki-wakati.c.py.txt -rw-r--r-- 1 asako staff 1.6G

    8 31 10:01 jawiki-wakati.c.py.txt $ wc jawiki-wakati.c.py.txt 7514452 223030315 1759604245 jawiki-wakati.c.py.txt
  10. word2vec with new filter script (c.py) $ ./word2vec -train ./data/jawiki-wakati.c.py.txt

    -output jawiki.c.py.bin -size 200 -window 8 -negative 25 -hs 0 -sample 1e-4 -thread 2 -binary 1 -iter 15
  11. accuracy (jawiki.c.py.bin) $ ./compute-accuracy jawiki.c.py.bin < ./questions-japanese-words.txt capital-common-countries(japanese): ACCURACY TOP1:

    59.93 % (2610 / 4355) Total accuracy: 59.93 % Semantic accuracy: 59.93 % Syntactic accuracy: nan % currency(english): ACCURACY TOP1: 0.53 % (2 / 375) Total accuracy: 55.22 % Semantic accuracy: 55.22 % Syntactic accuracy: nan % city-in-state(english): ACCURACY TOP1: 14.75 % (313 / 2122) Total accuracy: 42.69 % Semantic accuracy: 42.69 % Syntactic accuracy: nan % city-in-state(japanese): ACCURACY TOP1: 87.23 % (1886 / 2162) Total accuracy: 53.37 % Semantic accuracy: 53.37 % Syntactic accuracy: nan % family(japanese): ACCURACY TOP1: 52.17 % (264 / 506) Total accuracy: 53.31 % Semantic accuracy: 53.31 % Syntactic accuracy: nan % gram1-adjective-to-adverb: ACCURACY TOP1: 0.37 % (1 / 272) Total accuracy: 51.84 % Semantic accuracy: 53.31 % Syntactic accuracy: 0.37 % gram2-opposite:
  12. word2vec with c.py, size 400 $ ./word2vec -train ./data/jawiki-wakati.c.py.txt -output

    jawiki.c.py.size.400.bin - size 400 -window 8 -negative 25 -hs 0 -sample 1e-4 -thread 2 -binary 1 -iter 15
  13. accuracy (jawiki.c.py.size.400.bin) $ ./compute-accuracy jawiki.c.py.size.400.bin < ./questions-japanese-words.txt capital-common-countries(japanese): ACCURACY TOP1:

    58.14 % (2532 / 4355) Total accuracy: 58.14 % Semantic accuracy: 58.14 % Syntactic accuracy: nan % currency(english): ACCURACY TOP1: 0.27 % (1 / 375) Total accuracy: 53.55 % Semantic accuracy: 53.55 % Syntactic accuracy: nan % city-in-state(english): ACCURACY TOP1: 14.84 % (315 / 2122) Total accuracy: 41.56 % Semantic accuracy: 41.56 % Syntactic accuracy: nan % city-in-state(japanese): ACCURACY TOP1: 87.23 % (1886 / 2162) Total accuracy: 52.52 % Semantic accuracy: 52.52 % Syntactic accuracy: nan % family(japanese): ACCURACY TOP1: 53.36 % (270 / 506) Total accuracy: 52.56 % Semantic accuracy: 52.56 % Syntactic accuracy: nan % gram1-adjective-to-adverb: ACCURACY TOP1: 0.00 % (0 / 272) Total accuracy: 51.10 % Semantic accuracy: 52.56 % Syntactic accuracy: 0.00 % gram2-opposite:
  14. ೔ຊޠͷΈͷධՁ ja wiki (۟ಡ఺౳ͷ࡟আʣ ja wiki ʢॿࢺɺॿಈࢺ౳ͷ࡟আʣ ja wiki ʢॿࢺɺॿಈࢺ౳ͷ࡟আʣ

    ࣍ݩ਺ 200࣍ݩ 200࣍ݩ 400࣍ݩ ୯ޠ਺ 417,027,641 words 223,030,315 words 223,030,315 words ࠃɾट౎ 57.05 59.93 58.14 ౎ಓ෎ݝɾݝ ிॴࡏ஍ 50.93 53.37 52.52 உঁରൺ 50.93 53.31 52.52 ೔ຊޠྨޠ 34.50 36.52 36.28 ೔ຊޠܗ༰ࢺ 34.88 36.85 36.58
  15. distance ja wiki (۟ಡ఺౳ͷ࡟আʣ ja wiki ʢॿࢺɺॿಈࢺ౳ͷ࡟আʣ ja wiki ʢॿࢺɺॿಈࢺ౳ͷ࡟আʣ

    ࣍ݩ਺ 200࣍ݩ 200࣍ݩ 400࣍ݩ ୯ޠ਺ 417,027,641 words 223,030,315 words 223,030,315 words 1Ґ Cݴޠ Cݴޠ Cݴޠ 2Ґ ॲཧܥ ϓϩάϥϛϯά ϓϩάϥϛϯά 3Ґ ϓϩάϥϛϯά ॲཧܥ ॲཧܥ 4Ґ ίϯύΠϥ εΫϦϓτݴޠ ؔ਺ܕϓϩάϥϛϯά 5Ґ εΫϦϓτݴޠ LISP ίϯύΠϥ 6Ґ ΦϒδΣΫτࢦ޲ ϓϩάϥϛϯάύϥμΠϜ εΫϦϓτݴޠ 7Ґ ΞηϯϒϦݴޠ ؔ਺ܕϓϩάϥϛϯά ΦϖϨʔςΟϯάγεςϜ distanceコマンドで[プログラミング⾔語](1単語)を⼊⼒
  16. distance ja wiki (۟ಡ఺౳ͷ࡟আʣ ja wiki ʢॿࢺɺॿಈࢺ౳ͷ࡟আʣ ja wiki ʢॿࢺɺॿಈࢺ౳ͷ࡟আʣ

    ࣍ݩ਺ 200࣍ݩ 200࣍ݩ 400࣍ݩ ୯ޠ਺ 417,027,641 words 223,030,315 words 223,030,315 words 1Ґ స৬৘ใ స৬৘ใ ϦΫφϏ 2Ґ ϑϩϜɾΤʔ ϦΫφϏ ϦΫϧʔτϥΠϑελΠϧ 3Ґ ͱΒ͹ʔΏ ϑϩϜɾΤʔ ϑϩϜɾΤʔ 4Ґ CSK ͱΒ͹ʔΏ ISIZE 5Ґ ޿ࠂ୅ཧళ ϦΫϧʔτϥΠϑελΠϧ స৬৘ใ 6Ґ ٻਓ ి௨ Χʔηϯαʔ 7Ґ ֶੜԉޢձ ࠾༻޿ࠂ ͱΒ͹ʔΏ distanceコマンドで[リクルート](1単語)を⼊⼒
  17. distance ja wiki (۟ಡ఺౳ͷ࡟আʣ ja wiki ʢॿࢺɺॿಈࢺ౳ͷ࡟আʣ ja wiki ʢॿࢺɺॿಈࢺ౳ͷ࡟

    আʣ ࣍ݩ਺ 200࣍ݩ 200࣍ݩ 400࣍ݩ ୯ޠ਺ 417,027,641 words 223,030,315 words 223,030,315 words 1Ґ ϓϩάϥϛϯά ϓϩάϥϛϯά ϓϩάϥϛϯά 2Ґ ίϯύΠϥ Cݴޠ Cݴޠ 3Ґ Cݴޠ LISP ςΫχοΫ 4Ґ ΦϒδΣΫτࢦ޲ϓϩάϥϛϯά ίϯύΠϥ ϓϩάϥϜ 5Ґ ؔ਺ϓϩάϥϛϯά εΫϦϓτݴޠ ࣮૷ 6Ґ ΦϒδΣΫτࢦ޲ ΦϒδΣΫτࢦ޲ϓϩάϥϛϯά ΞϓϦέʔγϣϯ 7Ґ ߏจ δΣωϦοΫϓϩάϥϛϯά ίϯύΠϥ distanceコマンドで[プログラミング⾔語 パフォーマンス ](2単語)を⼊⼒
  18. distance ja wiki (۟ಡ఺౳ͷ࡟আʣ ja wiki ʢॿࢺɺॿಈࢺ౳ͷ࡟আʣ ja wiki ʢॿࢺɺॿಈࢺ౳ͷ࡟আʣ

    ࣍ݩ਺ 200࣍ݩ 200࣍ݩ 400࣍ݩ ୯ޠ਺ 417,027,641 words 223,030,315 words 223,030,315 words 1Ґ ίϯαϧλϯτ ਓࡐ঺հձࣾ ίϯαϧλϯτ 2Ґ ϑϦʔϥϯαʔ ίϯαϧλϯτ ब৬ 3Ґ ೿ݣձࣾ ৬ۀ ਓࡐ঺հձࣾ 4Ґ ਓࡐ঺հձࣾ ब৬ ৬ۀ 5Ґ τϨʔμʔ ࠶ब৬ ࢓ࣄ 6Ґ ਓࡐ೿ݣ δϣϒ ϦΫϧʔτΤʔδΣϯτ 7Ґ ৬ۀ ϑϦʔϥϯαʔ ࠶ब৬ distanceコマンドで[転職 エージェント](2単語)を⼊⼒