# μΌ 7μκ° κ°μμ κ°νκ΅°
본격μ μΈ μμ μ΄ μμλμ΄ λ§€μΌ μμΉ¨ 9μμ μΌμ΄λ μμ μ λ£κ³ , 17μμ λ§λ¬΄λ¦¬νλ μΌ 7μκ°μ μΌμ μ λͺΈμΌλ‘ μννκ² λμλ€. νμ μ² μ ν μλ²½ν μΈκ° μνμ νλ λλ λ 2-3 μμ μ λ€μ΄ 10μμ―€ μΌμ΄λ ν루λ₯Ό μμνκ³€ νλλ°, κ°μκΈ° μμΉ¨μ μΌμ΄λ 9μλΆν° λλ₯Ό κ΅΄λ¦¬λ €λ μ μμ΄ μ λμ§ μμλ€. μ΄ μκΈ°μλ μ¬λ μκ°μ ννμ΄ μλ λμ μ λ μ 볡μ΅μ λͺ°μμ νλ©° νμ΅ μ§λλ₯Ό λ°λΌκ°λ€.
λͺ¨λ κ΅λΉκ΅μ‘/μ½λ©κ΅μ‘ νλ‘κ·Έλ¨μ΄ κ·Έλ μ§λ μκ² μ§λ§, λ΄κ° μκ°νκ³ μλ κ΅μ‘κ³Ό κ°μ΄ ν루μ 5μκ° μ΄μμ κ°μλ₯Ό λ£κ² λλ κ²½μ°, μ΄ν λ΄μ©μ λ°λΌκ°κΈ° μν΄μ μ λ 볡μ΅νλ κ²μ΄ μ€μνλ€κ³ λλλ€. (κ·Έλ¦¬κ³ μ΄ λΆλΆμ νΉν 1μ°¨ μΈλ―Ένλ‘μ νΈ μ΄ν λ¨Έμ λ¬λ ννΈμ μ§μ νλ©΄μ λ 체κ°νκ² λμλ€. νμ΄μ¬ λ° λ°μ΄ν°λΆμ λ΄μ©μ΄μΌ μ€μ΅ νμΌλ‘ κ°μ΄ μμ νλ©° μ΅νλκ°λ μμ μΌλ‘ μ§νλμμ§λ§ λ¨Έμ λ¬λ μ΄νλΆν°λ μ΄λ‘ μμ£Ό + 짧μ μ€μ΅μΌλ‘ ꡬμ±λμκΈ° λλ¬Έμ λ³΅μ΅ μμ΄ λμ΄κ°λ€κ°λ μ½λ λ΄μ©μ μ ν μ΄ν΄νμ§ λͺ»ν μλ μλ€)
# νμ΄μ¬ λ¬Έλ² κΈ°μ΄
λμ§Έ μ£Ό μμμΌμλ νμ΄μ¬ κΈ°μ΄ λ¬Έλ² νμ΅μ λ§λ¬΄λ¦¬νλ μκ°μ κ°μ‘λ€. νμ΅ν λ΄μ©μ ν¬κ² μΈ κ°μ§ μμμΌλ‘ λλμ΄ λ³Ό μ μλ€.
- μλ£ν
- Integer (int) - μ μλ‘ ννλλ μ«μ (μμμ μμ)
- Float (float) - μ€μλ‘ ννλλ μ«μ (μμμ μμ)
- String (str) - μΈκ°μ μΈμ΄λ‘ ννλλ λ¬Έμν
- Dictionary (dict) - key μ value λ‘ μ΄λ£¨μ΄μ Έ, key λ₯Ό νμ©νμ¬ value λ₯Ό μνν μ μκ² νλ μ¬μ ν { key : value }
- Boolean (bool) - κ²°κ³Όκ°μ΄ True (μ°Έ) / False (κ±°μ§) μΌλ‘ λμ€λ μ°Έκ±°μ§ν
- list (list) - index μ item μΌλ‘ μ΄λ£¨μ΄μ Έ, index λ₯Ό νμ©νμ¬ item μ μ°Ύμ μ μλλ‘ νλ 리μ€νΈν
- Tuple - ( , ) μΌλ‘ μ΄λ£¨μ΄μ Έ λ³΄ν΅ κ²°κ³Όκ°μΌλ‘ μ£Όμ΄μ§
- Set (set) - list μ κ°μ μλ£νμ νλμ μ§ν©μΌλ‘ λ¬Άμ΄μ€ (μ€λ³΅κ° λΆκ°, μμ μμ)
- ν¨μ
- if - λ³μκ° νΉμ 쑰건μ μΆ©μ‘±ν κ²½μ° μ€ννλλ‘ νλ ν¨μ, elif λ° else μ ν¨κ» μ€ν
- while - λ³μκ° νΉμ κ°μ μΆ©μ‘±νλ λμ μ€ννλλ‘ νλ ν¨μ, break λ‘ μ€ν μ€μ§ν΄μ€ μ μμ
- for - μ΄λ€ λ³μλ₯Ό μ μ©ν μ§ μ§μ ν΄μ£Όλλ‘ νλ ν¨μ
# x λΌλ λ³μμ 1 λμ
x = 1
# x κ° 0 μ΄λΌλ©΄ μΆλ ₯νκ³ , μλλΌλ©΄ 'not 0' μΆλ ₯νλλ‘ νλ if ν¨μ
if x == 0:
print(x)
else:
print("not 0")
# xμ μνκ° 1μΌ λμ xμΆλ ₯
while x == 1 :
print(x)
break #λ₯Ό ν΅ν΄ μ€ν μ€μ§ κ°λ₯
# μλ‘μ΄ λ¦¬μ€νΈ μμ±
test = [0, 1, 2]
# test λΌλ list μμ λ€μ΄μλ κ°κ°μ itemλ€μ λν΄, 1μ λν κ°μ μΆλ ₯
for item in test:
print(item+1)
- ν΄λμ€
- κ°μ²΄ (λλ instance) λ₯Ό μ μνλ νμ΄λΌκ³ λ³Ό μ μλ€. ν΄λμ€ μμμ ꡬνλ ν¨μλ λ©μλλΌκ³ λΆλ¦¬λ©°, μ νμ©νλ©΄ λ§€μ° μ μ©νκ² μΈ μ μλ€.
λ³Έλ¬Έμλ κ°λ¨νλ§ μμ½ν΄ λμμ§λ§, μ€μ λ‘ μ΄λ¬ν κΈ°μ΄ λ΄μ©κ³Ό μ€μ΅μ κ±°μ ν루 λ°λ§μ λ€ λλλ€. νμ΄μ¬ λ¬Έλ²μ νλ‘κ·Έλλ° μΈμ΄ μ€μμ μ¬μ΄ μΆμ μνλ νΈμ΄λΌ μκ°μ μ€λ ν¬μνμ§ μμλ κΈλ°© μ΅ν μ μλ€. λ¬Έλ²λ μ½κ³ μ¬λ¬ λͺ¨λμ΄λ λΌμ΄λΈλ¬λ¦¬λ₯Ό νμ©ν μ μλ νμ₯μ±λ μ’μμ νμ€ν μ΄λ³΄μ-friendly ν λ©΄μ΄ μλ€λ μκ°μ΄ λ€μλ€.
# Pandas μ Dataframe
νμ΄μ¬ λ¬Έλ²μ λΌκ³ 곧λ°λ‘ λ°μ΄ν°λΆμμμ κ°μ₯ λ리 νμ©λλ pandas λͺ¨λμ λ€λ£¨λ λ°©λ²μ λ°°μ λ€. νλ ¬λ‘ κ΅¬μ±λ dataframe μ λ§λλ λ°©λ²λΆν° ν©μΉλ λ², μμ νλ λ², μ μ₯νλ λ² λ± pandas μμ CRUD (Create - Read - Update - Delete) λ₯Ό νλ μ£Όμ λ°©λ²μ νμ΅νλ€.
μ΄νμ κ±Έμ³ μ§νλ μ€μ΅μ ν΅ν΄ κ²°κ³Όμ μΌλ‘λ
μ΄λ κ² μκΈ΄ dataframe μ:
μ μ²λ¦¬ μ΄ν, μ΄λ° λ°©μμΌλ‘ μκ°νν μ μμλ€:
λ¬Όλ‘ μ΄κ² λ§κ³ λ μκ°νμ μ¬μ©νλ λ°©λ²μ geojson μ νμ©ν μ§λ μκ°ν λ± λμ± λ€μνλ€. κ·Έλ°λ° κ°μλ₯Ό λ£λ€κ° μμ μ λΉλ Έλ "νμ΄μ¬μΌλ‘ λ°μ΄ν° 주무λ₯΄κΈ°"λΌλ μ± μ λ€μ μ¬ λ³΄μλλ°, μ΄ μ± μ λμ€λ μμ 2λ²κ³Ό κ±°μ λμΌν λ΄μ©μ΄λΌλ κ²μ μκ² λμλ€ γ γ γ μ²μμλ μμνμΌλ κ²°κ³Όμ μΌλ‘λ μμ λ΄μ©μ λμΉκ±°λ μ΄ν΄ μ λλ λΆλΆ μμΌλ©΄ λ³Ό μμ€κ° νλ λ μ겨 μ’μλ€.
λλ μλ μ 무λ₯Ό νκ±°λ νλ‘μ νΈλ₯Ό ν λ μμ μ νμ©νμ¬ μλ£λ λ°μ΄ν°λ₯Ό μ 리νλ κ²μ μ§μ°© μλ μ§μ°©μ νλ μ¬λμ΄μλ€. μμ μ΄ νΈλ¦¬νκΈ°λ νμ§λ§ μ’μ κ²°κ³Όλ₯Ό λ΄κΈ° μν΄ μ¬μ©ν μ μλ μ΅κ³ μ ν΄μ΄λΌκ³ λκΌκΈ° λλ¬Έμ΄λ€. μ²μ μμ μ μ νκ³ ν¨μλ₯Ό μ€ννλ λ°©λ²μ λ°°μ μ λμ μ¦κ±°μμ΄ μμ§λ κΈ°μ΅λλλ°, pandas λ₯Ό νμ©νμ¬ dataframe μ λ€λ£¨λ λ°©λ²μ λ°°μ°λ κ·Έ λμ κ°μ μ΄ λ€μ λ μ¬λλ€.
μμ κ³Ό μ€μ΅μ λ€μΌλ©° λλ pandas μ μ΅μ₯μ μ :
- python λ¬Έλ²μ νμ©νμ¬ κΈ°λ³Έμ μΈ ν¨μλΆν° 볡μ‘ν ν¨μκΉμ§ νΈλ¦¬νκ² κ΅¬νν μ μλ€.
- λ°μ΄ν° μμ΄ λ§μμ Έλ μ€ν μλκ° μ κ°μνμ§ μλλ€
λ°λλ‘ λ§νλ©΄ μ΄ λ κ°μ§κ° λμ§ μλ κ²μ΄ μμ μ νμ©νλ©° λλ κ°μ₯ ν° λ¨μ μ΄κΈ°λ νλ€. dataframe μ λ€λ£° μ€ μκ² λμ΄ λ λ§μ μμ λ°μ΄ν°λ₯Ό λμ± ν¨μ¨μ μΌλ‘ λ€λ£¨κ² λμ΄, μμΌλ‘ λ§μ νλ‘μ νΈλ₯Ό λμ± μ¦κ²κ² μ°Έμ¬ν μ μμ κ²μ΄λ κΈ°λκ°μ΄ λ λ€.
# μΉν¬λ‘€λ§κ³Ό μμ°μ΄μ²λ¦¬ (NLP)
μ΄μ΄μ beautiful soup μ νμ©ν μΉ ν¬λ‘€λ§μ νμ΅νλ€. λ€μ΄λ³΄λ 'μΉ ν¬λ‘€λ§' μ΄λΌκ³ μΉνλ κ³³μ μ°λ¦¬λλΌλ°μ μκ³ , 곡μ λͺ μΉμ 'μΉ μ€ν¬λ μ΄ν'μ΄λΌκ³ νλλ°, μ΄μ° λμλ μλ―Έλ§ ν΅νλ©΄ λλ κ² κ°λ€. μ¬μ€ beautiful soup μ 1μ£Όμ°¨ λ μ κΉ λ€λ€μ΄μ μμ£Ό μλ‘μ§λ μμλλ°, μ§μ κ°λ°μ λꡬλ₯Ό νμ©νμ¬ ννμ΄μ§ λ΄μ νκ·Έλ₯Ό μΌμΌμ΄ μ΄ν΄λ³΄λ κ³Όμ μ΄ λ μ¬λ°μλ€.
μν 리뷰 μ 보μ ν μ€νΈλ₯Ό λΆλ¬μ νμΌλ‘ μ μ₯ν λ€ μΆλ ₯νλ μμ κΉμ§λ μλ‘μ΄ λ΄μ©μ΄ μμμ§λ§, μ΄νμ μ§νλ μμ°μ΄μ²λ¦¬ κ³Όμ μ΄ μΈμμ μ΄μλ€. μμ°μ΄μ²λ¦¬λ λ§ κ·Έλλ‘ μ¬λμ΄ μ°λ μΈμ΄ ( = μμ°μ΄) λ₯Ό νλ‘κ·Έλλ°μ νμ©ν μ μλλ‘ μ μ ν΄μ£Όλ μμ μ΄λ€. μ΄λ₯Ό μ μ§ννλ€λ©΄ μν 리뷰 κ° μ μ¬λλ₯Ό ꡬνκ±°λ, λμκ°μλ λ΄κ° μ’μ 리뷰λ₯Ό λ¨ μνμ μ μ¬ν μνλ₯Ό μΆμ²ν΄μ£Όλ μμ€ν λ ꡬνν μ μλ€.
μμ°μ΄μ²λ¦¬λ κΈ°λ³Έμ μΌλ‘ 000κ°μ§ λ¨κ³λ₯Ό κ±°μ³ μ΄λ£¨μ΄μ§λ€.
- λ°μ΄ν° μμ§ : ν¬λ‘€λ§, api λ±μ νμ©νμ¬ μμ°μ΄ μμ§
- μ μ²λ¦¬-1 : nltk λ₯Ό νμ©νμ¬ ν μ€νΈ ν ν°ν
- μ μ²λ¦¬-2 : stopwords, νμ¬νκΉ μ νμ©νμ¬ ν ν°νλ λ¨μ΄λ€ μ€ λΆμ©μ΄ μμ
- μ μ²λ¦¬-3: lemmatize λ₯Ό νμ©νμ¬ λ¨μ΄μ μν 볡ꡬ
μ μ²λ¦¬κ° μλ£λ ν μ€νΈ 2 κ°μ λ¨μ΄ μ μ¬λλ₯Ό ꡬνλ μμ μΈ tfidf-vectorization μ ν΅ν΄, λ ν μ€νΈ κ°μ μ μ¬λ (cosine similarity) λ₯Ό ꡬν μ μλ€. μ μ¬λ κ°μ -1 κ³Ό 1 μ¬μ΄μ κ°μ΄ λμ€κ² λλλ°, -1μ κ°κΉμΈμλ‘ λ°λλλ ν μ€νΈλΌλ μλ―Έμ΄λ©°, 1μ κ°κΉμΈμλ‘ μ μ¬ν ν μ€νΈλΌλ μλ―Έλ₯Ό μ§λλ€.
μν 리뷰 λ°μ΄ν° μμ°μ΄μ²λ¦¬λ₯Ό ν΅ν΄ λ μν κ°μ μ μ¬λλ₯Ό ꡬν μ μμλλ° κ²°κ³Όκ° κ½€ μ λμ€λκ² μ κΈ°νλ€. (κ·Έλ°λ° μ΄ν μ€μ΅ + νλ‘μ νΈλ₯Ό νλ©΄μ μκ²λ μ μ, μμ§ νκ΅μ΄λ μμ΄λ§νΌ μμ°μ΄μ²λ¦¬κ° λ°μ νμ§ μμ μ μ²λ¦¬λμ§ μλ κ²½μ°λ μλ€λ κ²μ΄μλ€. κ° μΈμ΄λ§λ€ μΈμ΄μ λ¬Έλ²λ λ€λ₯΄κ³ λΆμ©μ΄λ λ€λ₯Ό κ²μ΄κΈ°μ μ λμ μΈ κΈ°μ€μ κ°μ§κ³ μ°μ΅νλ©΄ μλ κ² κ°λ€λ μκ°μ΄ λ€μλ€.)
# λ§λ¬΄λ¦¬
μ¬λ¬κ°μ§ λ΄μ©μ ν λ²μ λ°°μ΄ μ£Όκ°μ΄μλμ§λΌ μ μ μκΈ°λ νμ§λ§ μλ‘μ΄ μ€ν¬μ λ¨κΈ°κ°μ λ°°μμΌλ‘μ¨ νμΈ΅ λ μ±μ₯νλ€! νΉν μ¬λ¬ μ΄λ‘ μ μΈ κ΅μ‘μ ν΅ν΄ μ½λλ₯Ό λ릴 λ λ°μ΄ν°κ° μμ§μ΄λ λ©μ»€λμ¦κ³Ό, μ½λμ ꡬν μ리 λ±μ μκ² λλ λ μ¬λ°μλ€.
λ§λ¬΄λ¦¬λ κ°μ¬λμ΄ μ¬λ €μ£Όμ ννν μ¬λ λ©μΈμ§μ ν¨κ» ~~
λκΈ