Skip to content

hw79chopin/X-senators

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

35 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ”Ž X-senators (κ΅­νšŒμ˜μ› μΆ”μ²œ Web)

#node #NLP #word2vec #Fasttext #Flask

🚦 1. X-senators μ„œλΉ„μŠ€ μ†Œκ°œ

  • κ°œμš”: ν˜„μž¬ μ •μΉ˜ν›„μ›κΈˆμ€ 1인당 800μ›μœΌλ‘œ 맀우 μ €μ‘°ν•œ μƒνƒœμ΄λ‹€. 'μžμ‹ κ³Ό λ§žλŠ” κ΅­νšŒμ˜μ›μ΄ λˆ„κ΅°μ§€ λͺ°λΌμ„œ 그런 게 μ•„λ‹κΉŒ?'ν•˜λŠ” 생각에 ν›„μ›μžμ—κ²Œ λ§žλŠ” κ΅­νšŒμ˜μ›μ„ μΆ”μ²œν•΄μ£ΌλŠ” X-senatorsλ₯Ό μƒκ°ν•˜κ²Œ 됨
  • λͺ©μ : ν›„μ›μžμ˜ 관심사와 κ°€μž₯ μœ μ‚¬ν•œ κ΅­νšŒμ˜μ›μ„ μΆ”μ²œν•΄μ€˜ 'λˆ„κ΅¬μ—κ²Œ ν›„μ›κΈˆμ„ μ€˜μ•Όν• μ§€?'에 λŒ€ν•œ 고민에 닡을 주고자 함

🚦 2. μΆ”μ²œλ°©μ‹

  • λͺ¨λΈ: Fasttext, Word2vec 쀑 택 1
  • Doc2vec을 μ‚¬μš©ν•΄λ³΄μ•˜μœΌλ‚˜ κ΅­νšŒμ˜μ› 벑터가 맀우 μ•ˆ μ’‹κ²Œ λ‚˜μ™”μŒ

2-1) κ΅­νšŒμ˜μ› 벑터 생성

  • Fasttext, Word2vec λͺ¨λΈλ‘œ λͺ¨λ“  λ²•μ•ˆμ˜ 단어듀을 μž„λ² λ”©μ‹œν‚΄
  • λ²•μ•ˆμ— λ“€μ–΄κ°€λŠ” 단어 벑터λ₯Ό λͺ¨λ‘ λ”ν•΄μ„œ λ²•μ•ˆ 벑터λ₯Ό μƒμ„±ν•˜μ˜€μŒ
  • ν•œ κ΅­νšŒμ˜μ›μ΄ λ°œμ˜ν•œ λͺ¨λ“  λ²•μ•ˆ 벑터λ₯Ό 가쀑평균 λ‚΄μ–΄ κ΅­νšŒμ˜μ›λ²‘ν„°λ₯Ό λ§Œλ“€μ—ˆμŒ

2-2) μ‚¬μš©μž 벑터 생성

  • μ‚¬μš©μžκ°€ 관심사λ₯Ό μž…λ ₯ λ°›μŒ
  • μ‚¬μš©μž 벑터λ₯Ό mecab으둜 tokenizeλ₯Ό ν•˜κ³  이미 ν•™μŠ΅λœ 단어λͺ¨λΈμ˜ 벑터λ₯Ό μ „λΆ€ 합함

2-3) Cosine similarity 계산

  • μ‚¬μš©μž 벑터와 κ΅­νšŒμ˜μ› 벑터 μ‚¬μ΄μ˜ cosine similarityλ₯Ό κ΅¬ν•œλ‹€.
  • μœ μ‚¬λ„κ°€ 높은 순으둜 μ •λ¦¬ν•΄μ„œ Top 8 κ΅­νšŒμ˜μ›μ„ λ½‘μ•˜λ‹€.

🚦 3. Web μ‹œμ—°ν•˜κΈ°

3-1) ν”„λ‘œκ·Έλž¨ μ„€μΉ˜

3-2) ν•„μš” 라이브러리 μ„€μΉ˜ (node.js)

  • μš°μ„  이 github repoλ₯Ό λ‹€μš΄ or git clone ν•˜κΈ°
  • κ·Έ λ‹€μŒμ— [Web] 폴더에 λ“€μ–΄κ°€μ„œ cmd창을 μ‹€ν–‰ν•œλ‹€.
  • 그리고 밑에 λͺ…령을 μ°¨λ‘€λŒ€λ‘œ μž…λ ₯ν•œλ‹€.
$ npm init
$ npm install --save-dev nodemon
$ npm install --save express body-parser ejs mysql2 sequelize express-session connect- mongodb-session bcryptjs csurf connect-flash nodemailer nodemailer-sendgrid- transport cookie-parser express-session-sequelize python-shell request-promise

3-3) ν•„μš” 라이브러리 μ„€μΉ˜ (python)

  • cmd창을 μ—΄κ³  μ•„λž˜ λͺ…령듀을 μž…λ ₯ν•œλ‹€.
$ pip install --upgrade pip
$ pip install pymysql numpy pandas genism flask sklearn
  • μœ„ λͺ…령을 μ‹€ν–‰μ™„λ£Œ ν›„ 이 μ‚¬μ΄νŠΈλ₯Ό μ°Έκ³ ν•˜μ—¬ konlpyλ₯Ό μ„€μΉ˜ν•œλ‹€.
  • μœ„ μΆ”μ²œμ‹œμŠ€ν…œμ€ μ‚¬μš©μžμ‚¬μ „μ„ μΆ”κ°€ν•΄μ£ΌκΈ° μœ„ν•΄ Mecab() tokenizerλ₯Ό μ‚¬μš©ν•˜λŠ”λ° Mecab() tokenizerλŠ” Windowμ—μ„œ μ§€μ›λ˜μ§€ μ•ŠλŠ”λ‹€.

3-3) ν•„μš” 라이브러리 μ„€μΉ˜ (MySQL)

  • [Web] => [MySQL] 폴더에 λ“€μ–΄κ°€λ©΄ 9개의 query문듀이 μžˆλ‹€.
  • 쿼리 문듀을 μˆœμ„œλŒ€λ‘œ μ‹€ν–‰ν•΄μ„œ ν…Œμ΄λΈ”λ“€κ³Ό 데이터λ₯Ό 생성해쀀닀.
  • 파일λͺ… μˆœμ„œλŒ€λ‘œ μ‹€ν–‰ν•˜μ…”μ•Ό μ—λŸ¬κ°€ λœ¨μ§€ μ•ŠλŠ”λ‹€. (μˆœμ„œλŒ€λ‘œ ν•˜μ§€ μ•ŠμœΌλ©΄ FK μ„€μ • λ•Œλ¬Έμ— μ—λŸ¬κ°€ λ‚œλ‹€.)

3-4) Word2vec, Fasttext λͺ¨λΈ ν•™μŠ΅ν•˜κΈ°

  • Word2vec λͺ¨λΈμ€ [Web] => [python (flask)] => [model]에 이미 ν•™μŠ΅λœ λͺ¨λΈμ΄ μžˆλ‹€.
    (iteration=500, size=100, window=5, min_count=10, workers=12, hs=0, sg=1) (skip-gram, negative sampling)
  • Fastttext λͺ¨λΈμ˜ 경우 1GBκ°€ λ„˜κΈ° λ•Œλ¬Έμ— 깃헙에 μ—…λ‘œλ“œκ°€ λ˜μ§€ μ•Šμ•„ μƒˆλ‘œ ν•™μŠ΅μ‹œμΌœμ•Ό ν•©λ‹ˆλ‹€.
  • Fasttext, word2vec ν•™μŠ΅ν•˜λŠ” jupyterλŠ” μ—¬κΈ°μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

3-5) Web μ‹œμž‘ν•˜κΈ°

  • [Web] ν΄λ”μ—μ„œ cmd창을 μ—΄μ–΄μ£Όκ³  μ•„λž˜ λͺ…령을 μž…λ ₯ν•œλ‹€.
$ npm start
  • [Web] 폴더 λ‚΄ [python (flask)] ν΄λ”μ—μ„œ cmd창을 μ—΄μ–΄μ£Όκ³  μ•„λž˜ λͺ…령을 μž…λ ₯ν•œλ‹€.
  • flask μ„œλ²„λ₯Ό ν†΅ν•΄μ„œ μΆ”μ²œ κ²°κ³Όλ₯Ό node μ„œλ²„μ™€ μ£Όκ³  λ°›μ•„μ•Ό ν•΄μ„œ flask도 μ‹€ν–‰ν•΄μ£Όμ…”μ„œ ν•©λ‹ˆλ‹€.
$ flask run
  • 크둬을 μ—΄μ–΄μ„œ μ£Όμ†Œμ°½μ— http://localhost:3000/λ₯Ό μž…λ ₯ν•˜λ©΄ X-senatorsλ₯Ό μ²΄ν—˜ν•  수 μžˆλ‹€.

🚦 4. Web μ‹œμ—°ν™”λ©΄


(1) 메인화면 μ ‘μ†ν•˜κΈ°

index



(2) 둜그인 ν•˜κΈ°!

λ‘œκ·ΈμΈμ„ ν•΄μ•Ό κ΅­νšŒμ˜μ› μΆ”μ²œκ²°κ³Όλ₯Ό λ°›μ•„λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€

logIn



(3) 관심사 μž…λ ₯ν•˜κΈ°

였λ₯Έμͺ½ μœ„ 'λ‚˜μ˜ κ΅­νšŒμ˜μ›μ€?' λ°°λ„ˆμ— λ“€μ–΄κ°€λ©΄ μ‚¬μš©μž 관심사λ₯Ό μž…λ ₯ν•˜λŠ” 창이 λ‚˜μ˜΅λ‹ˆλ‹€.

μ˜ˆμ‹œ) μ€‘μ†ŒκΈ°μ—… μš΄μ˜ν•˜κ³  μžˆλŠ” 사μž₯μž…λ‹ˆλ‹€. μ½”λ‘œλ‚˜ λ•Œλ¬Έμ— 많이 νž˜λ“­λ‹ˆλ‹€. μžμ˜μ—…μžλ“€μ—κ²Œ 지원을 ν•΄μ£Όμ…¨μœΌλ©΄ ν•©λ‹ˆλ‹€.

input



(4) κ΅­νšŒμ˜μ› μΆ”μ²œκ²°κ³Ό

μΆ”μ²œλœ κ΅­νšŒμ˜μ›κ³Ό μ‚¬μš©μžμ™€μ˜ μœ μ‚¬λ„κ°€ λ‚˜μ˜΅λ‹ˆλ‹€.

top8



(5) κ΅­νšŒμ˜μ› 정보 μ‚΄νŽ΄λ³΄κΈ° - Demographic 정보

Top8 κ΅­νšŒμ˜μ› μ€‘μ—μ„œ μžμ„Ένžˆ 보고싢은 κ΅­νšŒμ˜μ›μ„ ν΄λ¦­ν•˜λ©΄ λ‹€μŒκ³Ό 같이 κ΅­νšŒμ˜μ› 정보가 λ‚˜μ˜΅λ‹ˆλ‹€.

senator_Info



(5) κ΅­νšŒμ˜μ› 정보 μ‚΄νŽ΄λ³΄κΈ° - λ²•μ•ˆ

κ΅­νšŒμ˜μ›μ΄ λ°œμ˜ν•œ λ²•μ•ˆ 쀑 μ‚¬μš©μžμ˜ 관심사와 κ°€μž₯ μœ μ‚¬ν•œ λ²•μ•ˆ 5κ°œκ°€ λ‚˜μ˜΅λ‹ˆλ‹€.

bills



(6) ν›„μ›ν•˜κΈ°

κ΅­νšŒμ˜μ› 사진 밑에 ν›„μ›ν•˜κΈ° λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ λ‹€μŒκ³Ό 같이 후원창이 λ‚˜μ˜΅λ‹ˆλ‹€.

μ„±, 이름, 메세지, κΈˆμ•‘, 영수증 등을 μ²΄ν¬ν•˜μ‹œκ³  'ν›„μ›ν•˜κΈ°' λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ λ©λ‹ˆλ‹€.

sponsor



(7) 성곡적인 후원!

'ν›„μ›ν•˜κΈ°' λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ 후원 성곡창이 λœΉλ‹ˆλ‹€.

결제 APIλŠ” μ—°κ²°ν•˜μ§€ μ•Šμ•„μ„œ κ°€μƒμœΌλ‘œ 후원을 ν•˜λŠ” 것이고 MySQL DB에 sponsorSenators ν…Œμ΄λΈ”μ— 후원정보가 μž…λ ₯λ©λ‹ˆλ‹€.

success



끗! πŸ™Œ

About

Lawmaker Recommendation System using NLP

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published