/Reddit-Submissions-Analysis

πŸ“° Reddit 뢄석 νŒŒμ΄ν”„λΌμΈ - κ²Œμ‹œκΈ€ νŠΈλž˜ν”½, μ‚¬μš©μž 뢄포, μœ μ‚¬ μ‚¬μš©μž 뢄석 λ“±

Primary LanguageJupyter Notebook

Reddit-Submissions-Analysis

2019-11-29

  • κΈ°λ³Έ API ꡬ성
  • 데이터 μˆ˜μ§‘ (2019λ…„ 1μ›” ~ 2019λ…„ 10μ›”)

2019-11-30

  • YYYY-MM 으둜 인자 μ£Όκ³  데이터 크둀링 ν•˜λŠ” λ°©λ²•μœΌλ‘œ μˆ˜μ •
  • 데이터 μˆ˜μ§‘ (2018λ…„ 1μ›” ~ 2018λ…„ 12μ›”) : μˆ˜λ™ μ „μ²˜λ¦¬
  • month λ³€κ²½, λͺ¨λ“ˆν™”, 파일 경둜 μ—λŸ¬ 처리, 빈 κ°’ 처리

2019-12-01 (1)

  • λͺ¨λ“ˆν™”(μ„œλΈŒλ ˆλ”§ 이름을 ν•¨μˆ˜ 인자둜 λ„˜κΈ°λŠ” λ°©μ‹μœΌλ‘œ λ³€κ²½)
  • ν•¨μˆ˜ λ³€μˆ˜ λ³€κ²½: end_time은 next_time으둜 ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ μ„€μ •, nowλ₯Ό end_time으둜 μˆ˜μ •
  • 파일λͺ… 잘λͺ» μ„€μ •λ˜λŠ” 였λ₯˜ μˆ˜μ •
  • 데이터 μˆ˜μ§‘ (/r/kpop: 2013λ…„ 6μ›” ~ 2017λ…„ 12μ›”, 2019λ…„ 11μ›”)
  • 데이터 μˆ˜μ§‘ (/r/kpoppers: 2017λ…„ 9μ›” ~ 2017λ…„ 12μ›”, 2019λ…„ 11μ›”)
  • 데이터 μˆ˜μ§‘ (/r/bangtan: 2017λ…„ 1μ›” ~ 2019λ…„ 11μ›”)
  • 데이터 μˆ˜λ™ μ „μ²˜λ¦¬ (/kpop)
  • 200을 μˆ˜μ‹ ν•΄λ„ 빈 배열이면 json νŒŒμ‹±μ΄ μ•ˆ λ˜μ–΄ μ—λŸ¬ λ°œμƒ

2019-12-01 (2)

  • 크둀러 버그 μˆ˜μ • (json νŒŒμ‹±μ— λŒ€ν•΄ μ˜ˆμ™Έ 처리)
  • 데이터 μˆ˜μ§‘ (/r/red_velvet: 2014λ…„ 1μ›” ~ 2017λ…„ 12μ›”)
  • 데이터 μˆ˜μ§‘ (/r/exo: 2017λ…„ 1μ›” ~ 2019λ…„ 11μ›”)
  • 데이터 μˆ˜μ§‘ (/r/bangtan: 2014λ…„ 1μ›” ~ 2016λ…„ 12μ›”)
  • 데이터 μˆ˜μ§‘ (r/twice: 2015λ…„ 5μ›” ~ 2019λ…„ 11μ›”)
  • 데이터 μˆ˜μ§‘ (r/snsd: 2010λ…„ 8μ›” ~ 2019λ…„ 11μ›”)
  • 데이터 μˆ˜μ§‘ (r/Got7: 2014λ…„ 1μ›” ~ 2019λ…„ 11μ›”)
  • 데이터 μˆ˜μ§‘ (r/aiyu: 2012λ…„ 2μ›” ~ 2019λ…„ 11μ›”) (μ•„μ΄μœ )
  • λ ˆλ“œλ²¨λ²³ 2018λ…„~2019λ…„ ν¬λ‘€λ§ν•˜κΈ°

2019-12-02

  • 데이터 μˆ˜μ§‘ (/r/red_velvet: 2018λ…„ 1μ›” ~ 2019λ…„ 11μ›”)
  • 데이터 μˆ˜μ§‘ (/r/MachineLearning: 2009λ…„ 8μ›” ~ 2019λ…„ 11μ›”)
  • 데이터 μˆ˜μ§‘ (/r/datascience: 2011λ…„ 8μ›” ~ 2016λ…„ 12μ›”)
  • 데이터 μˆ˜μ§‘ (/r/deeplearning: 2012λ…„ 1μ›” ~ 2019λ…„ 11μ›”)
  • concat_csv: csv 파일 μ—¬λŸ¬κ°œ ν•˜λ‚˜λ‘œ ν•©μΉ˜λŠ” ν•¨μˆ˜
  • μ œκ³΅ν•˜κ³  싢은 뢄석 방법: νŠΈλž˜ν”½ κ·Έλž˜ν”„, μ–ΈκΈ‰λŸ‰ κ·Έλž˜ν”„, μ›Œλ“œν΄λΌμš°λ“œ, ν‚€μ›Œλ“œ μ—°κ΄€, SQL 질의 λ“±
  • λ°μ΄ν„°μ‚¬μ΄μ–ΈμŠ€ 2017λ…„~2019λ…„ ν¬λ‘€λ§ν•˜κΈ°

2019-12-03

  • url 데이터 ν•¨κ»˜ μˆ˜μ§‘
  • concat_csv 일뢀 μˆ˜μ •
  • μˆ˜μ§‘ν•œ 데이터에 λŒ€ν•΄ ν•˜λ‚˜λ‘œ κ²°ν•©
  • 데이터 μˆ˜μ§‘ (/r/datascience: 2017λ…„ ~ 2019λ…„)
  • 데이터 μˆ˜μ§‘ (/r/tensorflow: 2015λ…„ ~ 2019λ…„)
  • 데이터 μˆ˜μ§‘ (/r/computercience: 2011λ…„ ~ 2019λ…„)

2019-12-05

  • find_keyword μž‘μ„±
  • 데이터 μ €μž₯ 경둜 μˆ˜μ •
  • url을 μˆ˜μ§‘ν•œ 데이터와 μ•„λ‹Œ 데이터λ₯Ό ν•©μΉ  λ•Œ μ˜ˆμ™Έμ²˜λ¦¬
  • 단어 νŒŒμ‹±ν•œ 것을 μ €μž₯ν•΄μ•Ό ν• κΉŒ?
  • 글쓴이별 타이틀 + λ¬Έμ„œ ν•™μŠ΅ => μœ μ‚¬λ„ κ΅¬ν•˜κΈ° (ν™œλ™μ΄ λΉ„μŠ·ν•œ μœ μ €)
  • find_keyword ν‚€μ›Œλ“œ select용 폴더λ₯Ό λ”°λ‘œ λ§Œλ“€μ–΄μ„œ 거기에 μ €μž₯ν•˜λŠ” μ‹μœΌλ‘œ μˆ˜μ •

2019-12-06

  • 데이터 μˆ˜μ§‘ (/r/BlackPink: 2016λ…„ ~ 2019λ…„)
  • 데이터 μˆ˜μ§‘ (/r/Futurology: 2012λ…„ ~ 2019λ…„)

2019-12-07

  • μˆ˜μ§‘ν•œ 데이터 전체 HDFS에 μ—…λ‘œλ“œ
  • word2vec_keyword_similarity.py μŠ€ν‚΅κ·Έλž¨ λͺ¨λΈ ν•™μŠ΅ ν›„ ν‚€μ›Œλ“œμ— λŒ€ν•΄ μœ μ‚¬ν•œ ν‚€μ›Œλ“œ 좜λ ₯
  • doc2vec_user_recommendation.py λ¬Έμ„œλ³„ ν•™μŠ΅ ν›„ μœ μ‚¬ ν‚€μ›Œλ“œμ™€ μΆ”μ²œ μ‚¬μš©μž 좜λ ₯

2019-12-08

  • word_cloud.py νŒŒμ‹±ν•œ 단어 기반으둜 μ›Œλ“œ ν΄λΌμš°λ“œ
  • μ–ΈκΈ‰λŸ‰ κ·Έλž˜ν”„ 그리렀면 title or selftext 처럼 ν•˜λ‚˜μ—λ§Œ μžˆλŠ” 게 λ‚˜μœΌλ‹ˆ μˆ˜μ •
  • νŠΈλž˜ν”½ κ·Έλž˜ν”„ μ™œ μ΄μƒμΉ˜ λ“€μ–΄κ°€λŠ”μ§€ 확인 (μ˜΅μ…˜μ„ μ œλŒ€λ‘œ 주지 μ•Šμ•„μ„œ)
  • VM에 μ£Όν”Όν„° λ…ΈνŠΈλΆ μ„€μΉ˜ CORS 였λ₯˜ 확인
  • ν•©μΉœ 데이터에 λŒ€ν•΄ date λ³„λ‘œ λ³Ό 수 μžˆλŠ” 방법 확인

2019-12-09

  • concat_csv.py μˆ˜μ •: url μˆ˜μ§‘ν•œ νŒŒμΌμ— λŒ€ν•΄ concat 였λ₯˜ μ—†κ²Œ
  • μˆ˜μ •λœ concat_csv둜 데이터 μˆ˜ν•©
  • 크둀러 μˆ˜μ •: μŠ€ν‚€λ§ˆ μˆ˜μ •, λ‚ μ§œ μ•Œκ³ λ¦¬μ¦˜ μˆ˜μ •
  • doc2vec_advanced.py μž‘μ„±ν•œ κ²Œμ‹œκΈ€ λ°”νƒ•μœΌλ‘œ μœ μ‚¬ν•œ μ‚¬μš©μž μΆ”μ²œ
  • μˆ˜μ§‘ν•œ 데이터에 λŒ€ν•΄ doc2vec λͺ¨λΈ 생성
  • 'total' μŠ€ν‚€λ§ˆλŠ” μ—¬λŸ¬ 뢄석에 κ³΅ν†΅μœΌλ‘œ μ‚¬μš©λ˜λ―€λ‘œ μ „μ²˜λ¦¬ν•  λ•Œ 합쳐버리기 -> 데이터 쀑볡이라 κ·Έλƒ₯ 각 λ‹¨κ³„μ—μ„œ ν•˜λŠ” 걸둜
  • 바뀐 μŠ€ν‚€λ§ˆλ‘œ λ‹€μ‹œ ν¬λ‘€λ§ν•˜κΈ° -> 크둀링 μ½”λ“œ ν•˜λ‚˜λ‘œ μ‘°μ •ν•  것
  • 크둀러 μˆ˜μ •: 디렉토리 이름 λ°›μ•„μ™€μ„œ(μΆ”κ°€λ‘œ ν¬λ‘€λ§ν•˜κ³  μ‹ΆμœΌλ©΄ 폴더 생성해야) -> λ§ˆμ§€λ§‰μœΌλ‘œ μ €μž₯ν•œ μ‹œκ° ν™•μΈν•˜κ³ (μ—†μœΌλ©΄ about.jsonμ—μ„œ 생성 μ‹œκ° λ°›μ•„μ˜€κΈ°) -> κ±°κΈ°μ„œλΆ€ν„° ν˜„μž¬κΉŒμ§€ 돌리기 (ν˜„μž¬μ‹œκ°μ΄ VMμ—μ„œ μ°νžˆμ§€ μ•ŠμŒ. κ°•μ œλ‘œ ν•œλ‹¬λ‘œ μ‘°μ •.)

2019-12-10

  • find_keyword.py μˆ˜μ •
  • 크둀러 λ©ˆμΆ”λŠ” 게 데이터 길이가 μ•„μ˜ˆ 없을 λ•Œλ‘œ μˆ˜μ •.
  • 크둀러 파일 μ €μž₯ 이름을 μˆ˜μ§‘ν•œ λ‹¬λ‘œ μ‘°μ •, μ–΄λ–»κ²Œ μ—…λ°μ΄νŠΈν• μ§€λŠ” κ³ λ €ν•΄μ•Ό ν•  μ‚¬μ•ˆμΈ λ“―.
  • ν¬λ‘€λŸ¬μ—μ„œ ν˜„μž¬μ‹œκ°μ„ μ–΄λ–»κ²Œ λ³Ό 것인지 μƒκ°ν•˜κΈ° - λ ˆλ”§ μ„œλ²„μ‹œκ°„
  • μ œνŽ λ¦°μ—μ„œ 값을 bindingν•  수 μžˆλŠ” 방법도 μžˆλŠ” λ“―
  • λ§Œμ•½ μ£Όν”Όν„° λ…ΈνŠΈλΆμ—μ„œ 계속 CORS μ—λŸ¬ λ‚  경우, κ²°κ³Όλ₯Ό λ”°λ‘œ μ €μž₯ν•˜λŠ” μ‹μœΌλ‘œ μˆ˜μ •.
  • concatμ—μ„œ 쀑볡값 μ‚­μ œ
  • μ•„μΉ΄μ΄λΈŒ λ°μ΄ν„°λŠ” κ·Έλƒ₯ json으둜 dumpν•˜λŠ” 것 κ³ λ € (양이 λ„ˆλ¬΄ λ§Žμ•„μ„œ λ©”λͺ¨λ¦¬ μ—λŸ¬)
  • SparkMLLibλ‚˜ Mahaout λ„μž…ν•΄μ„œ scalableν•˜κ²Œ...
  • νŒŒμ΄ν”„ μ˜ˆμƒ (μžλ™ν™” λŒ€μƒ: 크둀링과 전체 데이터 ν•©μΉ˜κΈ°)
  • 크둀링

    • data/scrapped의 폴더 이름듀을 μˆ˜μ§‘ν•  μ„œλΈŒλ ˆλ”§μœΌλ‘œ μ—¬κΈ΄λ‹€. (μΆ”κ°€λ‘œ ν¬λ‘€λ§ν•˜κ³  μ‹ΆμœΌλ©΄ 이 디렉토리에 폴더 μΆ”κ°€ν•  것)
    • ν•΄λ‹Ή 디렉토리에 λŒ€ν•΄ λ§ˆμ§€λ§‰μœΌλ‘œ ν¬λ‘€λ§ν•œ μ‹œμ  이후뢀터 ν˜„μž¬κΉŒμ§€ 크둀링함.
    • λ§Œμ•½ 처음 ν¬λ‘€λ§ν•œλ‹€λ©΄ about.json을 μ°Έκ³ ν•΄ 생성지점을 λ°›μ•„μ˜¨λ‹€.
    • 크둀링 λ‹¨κ³„μ—μ„œ μ•„μŠ€ν‚€ 문자만 λ°›μ•„μ˜€λŠ” μ „μ²˜λ¦¬λŠ” μˆ˜ν–‰ν•¨.
  • 전체 데이터 ν•©μΉ˜κΈ°

    • data/combined에 μˆ˜μ§‘ν•œ λͺ¨λ“  데이터에 λŒ€ν•΄ concat μž‘μ—… μˆ˜ν–‰
  • 뢄석 (1): SQL 질의

    • νŠΈλž˜ν”½ κ·Έλž˜ν”„
    • find_keyword.py λ₯Ό μ‹€ν–‰ν•˜κ³  (이것은 λ•Œλ•Œλ‘œ λ°”λ€Œλ―€λ‘œ μžλ™ν™”μ— 포함 X) data/keyword의 파일둜 μ–ΈκΈ‰λŸ‰ κ·Έλž˜ν”„
    • 기타 SQL 질의
  • 뢄석 (2): μ›Œλ“œν΄λΌμš°λ“œ

    • 많이 μ–ΈκΈ‰λœ 단어λ₯Ό μ›Œλ“œν΄λΌμš°λ“œλ‘œ ν‘œν˜„
  • 뢄석 (3): Word2Vec μœ μ‚¬ ν‚€μ›Œλ“œ

    • word2vec_keyword_similarity.py 둜 μ›ν•˜λŠ” μ„œλΈŒλ ˆλ”§μ— λŒ€ν•΄ νŠΉμ • ν‚€μ›Œλ“œμ— λŒ€ν•œ μ—°κ΄€ ν‚€μ›Œλ“œλ₯Ό ν‘œν˜„
    • λͺ¨λΈ: μŠ€ν‚΅κ·Έλž¨
  • 뢄석 (4): Doc2Vec

    • doc2vec_user_recommendation.py 둜 λ¬Έμ„œ 기반 ν•™μŠ΅μ— λŒ€ν•΄ μœ μ‚¬ ν‚€μ›Œλ“œ & 자기 μ†Œκ°œμ™€ μœ μ‚¬ν•œ κ²Œμ‹œκΈ€ 좜λ ₯
    • doc2vec_advanced.py 둜 νŠΉμ • μ‚¬μš©μžμ˜ μž‘μ„±κΈ€ 기반 μœ μ‚¬ν•œ κ²Œμ‹œκΈ€μ„ μž‘μ„±ν•œ μ‚¬μš©μž μΆ”μ²œ

2019-12-11

  • 데이터 μˆ˜μ§‘ ν™•μž₯ (총 229MB => 총 317MB)
  • λ ˆλ”§ μ„œλ²„μ‹œκ°„ κ΅¬ν•˜λŠ” ν•¨μˆ˜

TODO

  • 뢄석
    • Spark mllib 라이브러리 μ‚¬μš©ν•΄μ„œ μž‘μ„± μ½”λ“œ λ³€κ²½
    • ν‚€μ›Œλ“œ HBase에 μ €μž₯ν•˜λŠ” λ°©μ‹μœΌλ‘œ μˆ˜μ •
  • README.md 파일 정리

2019-12-12

  • 데이터 μˆ˜μ§‘: gilmore girls, game of thrones

2019-12-13

  • 데이터 μˆ˜μ§‘: TheGoodPlace
  • 크둀러 μˆ˜μ •
  • μˆ˜μ •λœ 크둀러둜 데이터 μ—…λ°μ΄νŠΈ
  • 파일 ν•©μΉ˜λŠ” ν•¨μˆ˜ μˆ˜μ • ν›„ 적용

2019-12-14

  • μš°μ§€ μ›Œν¬ν”Œλ‘œμš° μž‘μ„±
  • 크둀러 및 concat HDFS 경둜 μˆ˜μ •

2019-12-15

  • μ›Œλ“œν΄λΌμš°λ“œ 이미지 μ €μž₯
  • μœ μ‚¬ ν‚€μ›Œλ“œ μΆ”μΆœ λͺ¨λΈ (word or doc)
  • 제λͺ© λ˜λŠ” λ³Έλ¬Έμ—μ„œ ν‚€μ›Œλ“œ μ°ΎκΈ°
  • Doc2Vec User Recommendation by ID
  • Doc2Vec User Recommendation by μžκΈ°μ†Œκ°œ

2019-12-16

  • 뢄석: μ£Όν”Όν„° λ…ΈνŠΈλΆμœΌλ‘œ

2019-12-17

  • μ œν”Œλ¦° λ…ΈνŠΈλΆ 뢄석

2019-12-18 (μˆ˜μ—… 쀑 λ°œν‘œλ“€μ— λŒ€ν•œ ν”Όλ“œλ°±λ“€)

  • 쿼리 κ²°κ³Όκ°€ 이상할 경우 λ‹€κ°λ„λ‘œ μ ‘κ·Όν•˜λŠ” 것이 도움이 λœλ‹€.
  • νŠΈλž˜ν”½μ€ 전체 νŠΈλž˜ν”½ λŒ€λΉ„λ‘œ μ •κ·œν™”ν•˜λŠ” 것이 μ’‹λ‹€.
  • 정보λ₯Ό κΈμ–΄μ˜¨ μ‚¬μ΄νŠΈμ— λŒ€ν•œ 이해가 μžˆμ–΄μ•Ό 쿼리λ₯Ό μ œλŒ€λ‘œ 쀄 수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄ 넀이버 μ‡Όν•‘μ˜ 경우 가격 비ꡐ μ„œλΉ„μŠ€μ΄λ‹ˆλ§ŒνΌ μ–ΈκΈ‰λŸ‰μ΄ λ§Žλ‹€κ³  ν•΄μ„œ 쒋은 μƒν’ˆμ΄λΌλŠ” λœ»μ€ μ•„λ‹ˆλ‹€.
  • λΆ„λ₯˜ 뢄석을 ν•  경우 λΆ„λ₯˜μ— λŒ€ν•œ 정확도도 κ²€μ¦ν•˜λŠ” 과정이 ν•„μš”ν•˜λ‹€.
  • 데이터λ₯Ό μ •ν™•νžˆ μ „λ‹¬ν•˜λ €κ³  ν•  것.
  • λΉ„κ΅ν•˜κ³  싢을 경우 좕도 μ •κ·œν™”ν•΄μ„œ 맞좰 쀄 것. (A와 Bλ₯Ό λΉ„κ΅ν•˜λ €κ³  ν•  λ•Œ A의 yμΆ•κ³Ό B의 yμΆ• λ²”μœ„λ₯Ό κ°™κ²Œ ν•΄μ•Ό 함)
  • κ·Έλž˜ν”„κ°€ 그렀진닀λ₯Ό λ³΄μ—¬μ£Όλ €λŠ” 뢄석은 μ˜λ―Έκ°€ μ—†λ‹€. κ·Έλž˜ν”„λ₯Ό μ™œ κ·Έλ¦¬λ €λŠ”μ§€μ— λŒ€ν•œ 이해가 ν•„μš”ν•˜λ‹€.
  • κΆκΈˆν•˜λ©΄ 일단 ν™•μΈν•˜κΈ°
  • μ˜λ„μ™€ λ‹€λ₯΄κ²Œ μΏΌλ¦¬ν•˜λŠ” 것에 μ£Όμ˜ν•˜κΈ°