| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- import os
- import shutil
- import re
- import json
- import numpy as np
- from wordcloud import WordCloud
- import matplotlib.pyplot as plt
- from sklearn.pipeline import Pipeline
- from sklearn.feature_extraction.text import TfidfVectorizer
- from sklearn.naive_bayes import MultinomialNB
- from sklearn.linear_model import LogisticRegression, SGDClassifier
- from sklearn.calibration import CalibratedClassifierCV
- from sklearn.metrics import classification_report, confusion_matrix
- from const import category_labels
- from load_data import preprocess, load_datasets
- from sklearn.externals import joblib
- import heapq
- from flask import Flask,request,jsonify
- a = open(r"x_tr_list.json", "r",encoding='UTF-8')
- X_train_data =json.loads(a.read())
- a.close()
- b = open(r"y_tr_list.json", "r",encoding='UTF-8')
- y_train =json.loads(b.read())
- b.close()
- new_li=[]
- for i in y_train:
- if i not in new_li:
- new_li.append(i)
- stopwords = open('dict/stop_words.txt', encoding='utf-8').read().split()
- tfidf_vectorizer = TfidfVectorizer(stop_words=stopwords)
- X_train_tfidf = tfidf_vectorizer.fit_transform(X_train_data)
- classifier=joblib.load('naiveBayesrClassifier.model')
- text_clf_svm=joblib.load('SvmClassifier.model')
- def getKnowledgeIds(req):
- new_data = preprocess(req['text'])
- get = tfidf_vectorizer.transform([new_data])[0]
- predicted = classifier.predict_proba(get)
- arr_aa = np.array(predicted)[0]
- arr_aa = arr_aa.tolist()
- predicted_svm = text_clf_svm.predict([new_data])
- res=predicted_svm.tolist()
- re2 = map(arr_aa.index, heapq.nlargest(5, arr_aa))
- l =list(re2)
- for f in l:
- if new_li[f]!=res[0]:
- res.append(new_li[f])
- return res
- news_lastest = ["stem = 在支持多线程的操作系统中,假设进程 P 创建了若干个线程,那么( ) 是不能被这些线程共享的。, options = {A=该进程的代码段, B=该进程中打开的文件, C=该进程的全局变量, D=该进程中某线程的栈指针}, answer = D, analysis = 在同一进程中的各个线程都可以共享该进程所拥有的资源,如访问进程地址空间中的每一个虚地址;访问进程拥有已打开文件、定时器、信号量机构等,但是不能共享进程中某线程的栈指针。",
- "stem = 某开发小组欲为一公司开发一个产品控制软件,监控产品的生产和销售过程,从购买各种材料开始,到产品的加工和销售进行全程跟踪。购买材料的流程、产品的加工过程以及销售过程可能会发生变化。该软件的开发最不适宜采用()模型,主要是因 为这种模型()。, options = {A=瀑布,难以适应变化的需求, B=原型,不能理解用户的需求, C=增量,不能解决风, D=喷泉,不能快速提交软件}, answer = A, analysis = 对于较大型软件系统的需求往往难以在前期确定,所以瀑布模型最不适合。对于较大型软件系统的需求往往难以在前期确定,所以瀑布模型最不适合",
- "stem = 网络安全体系设计可从物理线路安全、网络安全、系统安全、应用安全等方面来进行,其中,数据库容灾属于()。, options = {A=物理线路安全和网络安全, B=应用安全和网络安全, C=系统安全和网络安全, D=系统安全和应用安全}, answer = D, analysis = 网络安全体系设计是逻辑设计工作的重要内容之一,数据库容灾属于系统安全和应用安全考虑范畴。"]
- req={'text':news_lastest[0]}
- res=getKnowledgeIds(req)
- print(res)
- app = Flask(__name__)
- @app.route('/predict',methods=['POST'])
- def index():
- body=request.get_json()
- # print(body)
- return jsonify(getKnowledgeIds(body))
- if __name__ == '__main__':
- # app.debug = True # 设置调试模式,生产模式的时候要关掉debug
- app.run()
|