Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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))
Ejemplo n.º 5
0
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,
        }
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
    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,
        )
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
def get_all_messeges():
    db = DB()
    all_messages = db.cursor.execute(
        'SELECT message FROM conversation_history').fetchall()
    return all_messages