def create_api_app(): """ Returns the backend app """ app = Flask(__name__, instance_relative_config=True) app.register_blueprint(API_BP) app.config.from_object(os.environ['APP_SETTINGS']) app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False DB.init_app(app) return app
class ChatState(db.Model): __tablename__ = 'chat_state' id = db.Column(db.Integer, primary_key=True) client_id = db.Column(db.String) prompt_key = db.Column(db.String) created_at = db.Column(db.DateTime, default=datetime.datetime.now) def __init__(self, client_id, prompt_key): self.client_id = client_id self.prompt_key = prompt_key
def get_vocab(vocab_size=40, return_freq=False): db = DB() all_messages = db.cursor.execute( 'SELECT message FROM conversation_history').fetchall() count = dict() for msg in all_messages: (m, ) = msg ml = m.lower() for m in ml: if m in count.keys(): count[m] += 1 else: count[m] = 1 keys_freq = sorted(count, key=count.get, reverse=True) vocab = [] for i in range(vocab_size): vocab.append(keys_freq[i]) freq = [] for key in keys_freq[0:vocab_size]: freq.append(count[key]) if return_freq: return vocab, freq else: return vocab
def main(): db = DB(settings.TOP_500_MOVIE_REVIEWS) reviews = get_reviews(db=db) feature_finder = MostCommonWordsFinder.load('top500reviews.featureset') def pred(review): return review['sentiment'] == SentimentEnum.GOOD partitioner = DistributionPartitioner(reviews, pred=pred, ratio=0.85) partitioner.partition() train_data = get_labeled_review_data( partitioner.training_data, feature_finder.find_features, ) test_data = get_labeled_review_data( partitioner.test_data, feature_finder.find_features, ) # Nu-Support Vector Classification # nu 0.01-0.05 to work classifier = NuSVC(nu=0.04, gamma='auto') # 0.8547 NuSVC_classifier = SklearnClassifier(classifier) NuSVC_classifier.train(train_data) print("NuSVC_classifier accuracy percent:", nltk.classify.accuracy(NuSVC_classifier, test_data))
class TherapyConfig(db.Model): __tablename__ = 'therapy_configs' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) config = db.Column(db.JSON) updated_at = db.Column(db.DateTime, default=datetime.datetime.now) created_at = db.Column(db.DateTime, default=datetime.datetime.now) def __init__(self, name, config): self.name = name self.config = config def serialize(self): return { 'id': self.id, 'name': self.name, 'config': self.config, }
class ClientData(db.Model): __tablename__ = 'client_data' id = db.Column(db.Integer, primary_key=True) client_id = db.Column(db.String) config_id = db.Column(db.String) session_id = db.Column(db.Integer) prompt_key = db.Column(db.String) prompt_text = db.Column(db.String, nullable=True) response = db.Column(db.String) created_at = db.Column(db.DateTime, default=datetime.datetime.now) def __init__(self, client_id, config_id, session_id, prompt_key, response): self.client_id = client_id self.config_id = config_id self.session_id = session_id self.prompt_key = prompt_key self.response = response
def load_data(self): db = DB(settings.TOP_500_MOVIE_REVIEWS) reviews = get_reviews(db=db) feature_finder = MostCommonWordsFinder.load('top500reviews.featureset') def pred(review): return review['sentiment'] == SentimentEnum.GOOD partitioner = DistributionPartitioner(reviews, pred=pred, ratio=0.85) partitioner.partition() self.train_data = get_labeled_review_data( partitioner.training_data, feature_finder=feature_finder.find_features, ) self.test_data = get_labeled_review_data( partitioner.test_data, feature_finder=feature_finder.find_features, )
ComplementNB, MultinomialNB, ) from sklearn.svm import SVC, LinearSVC, NuSVC, SVR, NuSVR from sklearn.linear_model import ( Perceptron, SGDClassifier, RidgeClassifier, LogisticRegression, LogisticRegressionCV, OrthogonalMatchingPursuit, PassiveAggressiveClassifier, ) logger = get_logger(__name__) db = DB(settings.TOP_500_MOVIE_REVIEWS) def generate_simple_markov_reviews(): gen = SimpleMarkovGenerator() sentiments = ( SentimentEnum.GOOD, SentimentEnum.NEUTRAL, SentimentEnum.BAD, ) for sentiment in sentiments: reviews = get_reviews_by_sentiment(sentiment, db=db) text = get_text_for_reviews(reviews) gen.initialize_model(sentiment, text) logger.info('Generating reviews using %s', gen)
def get_all_messeges(): db = DB() all_messages = db.cursor.execute( 'SELECT message FROM conversation_history').fetchall() return all_messages