TF-IDFで sklearn.feature_extraction.text.TfidfVectorizer の結果を保存する。 自然言語処理(7)
index:
概要
前の、 自然言語処理関係となりますが、
TF-IDFで、学習済みの TfidfVectorizer を保存して、
評価時に、読込むテストしてみました。
コード
python3 です。
train.py
fit_transform 後に、pickleで、dump 保存します。
vectorizer = TfidfVectorizer(use_idf=True, token_pattern=u'(?u)\\b\\w+\\b') print(tokens) #quit() vecs = vectorizer.fit_transform(docs ) print("#vecs :") print(vecs.shape ) ##print(vecs[0] ) #save file_name="params.pkl" with open(file_name, 'wb') as f: pickle.dump(vectorizer, f) print("#save vectorizer OK!")
・評価
pickle.load で、読み込み。
評価
transform で、ベクトル化
Cosine類似度 の出力
file_name="params.pkl" vectorizer =None with open(file_name, 'rb') as f: vectorizer = pickle.load(f) print("load vectorizer OK!!") # vecs= vectorizer.transform( docs ) #print(tokens) #str="利用人数は?" #str="契約期間" str="価格は?" instr = get_token(str ).strip() print("instr=", instr ) x= vectorizer.transform( [ instr ]) #print( "x=",x) #Cosine類似度(cosine_similarity)の算出 num_sim=cosine_similarity(x , vecs) print(num_sim ) index = np.argmax( num_sim ) print("word=", words[index])
・評価の、結果
=>類似文章が、出力できました。
>python pred.py load vectorizer OK!! instr= 価格 は ? [[ 0.12541425 0.12972001 0. 0.14071807 0.52054432]] word= 製品価格、値段はいくらですか?