μμ°μ΄ μ²λ¦¬μ λν΄μ μμλ³΄κ³ MLPλ₯Ό ν΅νμ¬ μν리뷰 λ¬Έμ₯μ λν κΈμ /λΆμ μ μμΈ‘ν΄λ³Έλ€.
ex.) ν μ€νΈ, μκ³μ΄ λ°μ΄ν° λ±
λ₯λ¬λμ μ΄μ©νμ¬ ν
μ€νΈ λΆμμ μν΄μλ ν
μ€νΈλ₯Ό λ°±ν°(ν
μ)λ‘μ λ³νμ΄ νμνλ€.
νλμ ν
μ€νΈ(λ¬Έμ₯)μ λ¨μ΄/λ¬Έμλ‘ λ³κ²½νκ³ μ΄λ₯Ό λ€μ 벑ν°ν νλ κ³Όμ μ΄ μνλλ€.
κ°μ λ¨μ΄λΌλ¦¬ κ°λ°©μ λ΄μ λ€ κ° κ°λ°©μ λͺκ°μ λ¨μ΄κ° λ€μ΄μλμ§λ₯Ό μΈλ γ± γ
£λ²
κ° λ¨μ΄κ° λͺλ²μ΄λ μ€λ³΅ν΄μ μ°μλμ§λ₯Ό μ μ μμ
λ¨μ΄μ λΉλμλ₯Ό μλ©΄ ν
μ€νΈμμ μ€μν μν μ νλ λ¨μ΄λ₯Ό νμ
κ°λ₯
κ°λ¨νκ³ ν¨κ³Όμ μ΄λΌ λ리 μ¬μ©λλ€.
- Nκ°μ λ¨μ΄λ₯Ό ν¬ν¨νλ μ΄ν μ¬μ μ λ§λλ κ².
- λͺ¨λ λ¨μ΄μ κ³ μ ν μ μ μΈλ±μ€λ₯Ό λΆμ¬νμ¬ λ§λ λ€.
- κ° λ¨μ΄λ§λ€ κΈΈμ΄κ° NμΈ λ²‘ν°λ₯Ό μμ±νλλ°, kλ²μ§Έ μμλ§ 1μ΄κ³ λλ¨Έμ§λ λͺ¨λ 0μΈ ν¬μ λ²‘ν° ννλ₯Ό λλ€.
μν«μΈμ½λ©μ λ¨μ μ λͺ¨λκ° μΈλ±μ± μ²λ¦¬λ λ¨μν λ²‘ν° ννμ΄λ―λ‘ λ¨μ΄μ¬μ΄μ μ°κ΄μ±μ νμ ν μ μλ€. μλ―Έ/κ°λ /μ μμ΄/λ°μμ΄ λ± μ°κ΄κ΄κ³κ° μμ΄λ μ΄λ₯Ό ννν μ μλ€.
μ¬μ©λ μ΄νκ° λ§μμλ‘ μ΄νμ¬μ μ ν¬κΈ°κ° 컀μ§λλ°, nκ°μ μ΄νλ₯Ό μ¬μ©νλ€κ³ νλ©΄ nμ°¨μμ μ΄νμ¬μ μ΄ νμνκ² λλ€. μ¦ λ무 λ§μ μμμ΄ μλͺ¨λλ κ²μ΄λ€.
μ₯μ :
λ¨μ :
import numpy
import tensorflow as tf
from numpy import array
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense,Flatten,Embedding
# ν
μ€νΈ 리뷰μλ£λ₯Ό μ§μ
docs = ["λ무 μ¬λ°λ€μ","μ΅κ³ μΌ","μ°Έ μ λ§λ μνλ€","μΆμ²νκ³ μΆλ€","νλ² λ λ³΄κ³ μΆλ€","κΈμμ","λ³λ‘μμ΄","μκ°λ³΄λ€ μ§λ£¨ν΄","μ°κΈ°κ° μ΄μν΄","μ¬λ―Έμμ΄"]
# κΈμ 리뷰λ 1, λΆμ 리뷰λ 0μΌλ‘ ν΄λμ€λ₯Ό μ§μ .
classes = array([1,1,1,1,1,0,0,0,0,0])
# ν ν°ν
token = Tokenizer()
token.fit_on_texts(docs)
print(token.word_index)
x = token.texts_to_sequences(docs)
print("\n리뷰 ν
μ€νΈ, ν ν°ν κ²°κ³Ό:\n", x)
# ν¨λ©, μλ‘ λ€λ₯Έ κΈΈμ΄μ λ°μ΄ν°λ₯Ό 4λ‘ λ§μΆ° μ€λ€.
padded_x = pad_sequences(x, 4)
print("\n :\n", padded_x)
# λ₯λ¬λ λͺ¨λΈ
print("\nλ₯λ¬λ λͺ¨λΈ μμ:")
# μλ² λ©μ μ
λ ₯λ λ¨μ΄μ μλ₯Ό μ§μ
word_size = len(token.word_index) +1
# λ¨μ΄ μλ² λ©μ ν¬ν¨νμ¬ λ₯λ¬λ λͺ¨λΈμ λ§λ€κ³ κ²°κ³Ό μΆλ ₯
model = Sequential()
model.add(Embedding(word_size, 8, input_length=4))
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy',
metrics=['accuracy'])
model.fit(padded_x, classes, epochs=20)
print("\n Accuracy: %.4f" % (model.evaluate(padded_x, classes)[1]))