tensorflow와 UniversalSentenceEncoder를 사용하여 요구 판정 AI를 만들어 보았습니다.
13792 단어 TensorFlow파이썬자연 언어 처리
소개
안녕하세요. 테리입니다.
한 문장이 「뭔가를 개선하고 싶다」라든가 「귀찮은」등, 요구 같은지 어떤지를 판정하는 AI 분류도 모델을 만들어 보았습니다.
왜 만들었는가
최근에 저는 엔지니어에서 컨설턴트로 전직했습니다.
그 컨설팅 업무 중 여러 업계의 사람과 이야기 할 기회가 있습니다.
그러나, 전직해 얼마 안되는 나는, 그 업계에서 「곤란하고 있는 것」이나 「유저가 갖고 싶은 것」을 별로 모르고, 고객과 깊은 이야기를 할 수 없는 상태입니다. .
그래서 이번에는 다양한 업계에서 필요 같은 데이터를 수집하기 위해 필요 판정 AI를 만들어 보았습니다! !
개발 개요
개발에 대해서는, 이하와 같은 느낌으로 실시했습니다.
UniversalSentenceENcoder에 대한 자세한 내용은 여기
코드
# ドライブマウントやファイル操作のために必要なライブラリ
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from google.colab import drive
import glob
from google.colab import drive
drive.mount(r"/content/drive/")
# universal sentence encoderを使うのに必要なやつ
%pip install tensorflow_text
import tensorflow_hub as hub
import tensorflow_text
embed = hub.load("https://tfhub.dev/google/universal-sentence-encoder-multilingual/3")
# 学習データファイルは"/content/drive/My Drive/get_needs/needs_data_add_label/"にある
# 学習データの形式はtweet,needsの2列
file_path_list = glob.glob('/content/drive/My Drive/get_needs/needs_data_add_label/*.csv')
df_learn = pd.DataFrame()
for file_path in file_path_list:
df = pd.read_csv(file_path)
df = df.rename(columns={'tweet': 'text'})
df_learn = pd.concat([df_learn, df], axis=0)
df_learn = df_learn.reset_index()[["text", "needs"]]
# 空白のレコードは、USEのエンコーダーでエラーになる
df_learn = df_learn.dropna()
# tweetで重複を削除。削除するときは、最新をほう残す
df_learn.drop_duplicates(subset='text', keep='last', inplace=True)
df_learn
데이터는 이런 느낌.
tweets = df_learn["text"].values
X = embed(tweets).numpy()
y = df_learn["needs"].values
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=123, test_size=0.2)
import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Input
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Dropout
from tensorflow.keras.callbacks import EarlyStopping
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
num_classes = 2
# tensorflowの学習の為にラベルデータを変換
# y_train, y_testは将来的にアンサンブルにするために、他の機械学習でも形として残す。
y_train_t = keras.utils.to_categorical(y_train, num_classes)
y_test_t = keras.utils.to_categorical(y_test, num_classes)
# モデルの作成
model = Sequential()
model.add(Dense(512, activation='relu', input_shape=(512, )))
model.add(Dense(512, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))
model.compile(
loss="binary_crossentropy",
optimizer="adam",
metrics=['accuracy']
)
# 学習
early_stopping = EarlyStopping(
monitor='val_loss',
min_delta=0.0,
patience=5,
)
history = model.fit(X_train, y_train_t,
batch_size=1000,
epochs=100,
verbose=2,
validation_data=(X_test, y_test_t),
callbacks=[early_stopping],
)
학습 과정은 이런 느낌이었습니다!
그림으로하면,
오 뭔가 좋은 느낌으로 보인다.
놀아보기
글쎄, 코로나가 끝나고 싶다는 정보를 알고도 컨설팅 업무에 영향을 미치지 않을 것 같고, 좋은 분류로 보이지 않는다. . 운용하면서, 추정해 갈까-!
끝까지 읽어 주셔서 감사합니다!
끝까지 읽어 주셔서 감사합니다! (소중한 일이므로 두 번 말했습니다.)
다음 단계로서 여러 사이트의 문장을 요구 AI로 분류시켜 DB에 저장할 수 있는 자동 수집 시스템을 만들 예정입니다.
최종적으로는 수집한 결과를 대시보드화하거나 해서 컨설팅 업무를 위한 정보 수집 툴을 만들어 가고 싶습니다-!
참고문헌
Reference
이 문제에 관하여(tensorflow와 UniversalSentenceEncoder를 사용하여 요구 판정 AI를 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/teri/items/13f6f6e53b4068f5de2c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)