自然语言处理-正负向情感分类demo

1.首先运用tensorflow 进行建模,主要运用lstm 模型建立神经网络。
2.利用北京师范大学和人民大学词向量模型
3.利用酒店评价语料进行模型训练
4.利用flast和WSGIServer进行模型服务发布

现将训练结果分享,获取两个模型后可直接运行。模型训练源代码涉及保密内容,后续稍微修改后会发布。

# coding=gbk
'''
基于tensorflow 自然语言预测程序
'''

import re
# 结巴分词
import jieba
# gensim用来加载预训练word vector
from gensim.models import KeyedVectors
import warnings
warnings.filterwarnings("ignore")
# flask 和gevent共同提供服务
from gevent.pywsgi import WSGIServer
from flask import Flask
#日志相关
import logging
# 我们使用tensorflow的keras接口来建模
from tensorflow.python.keras.models import load_model
from tensorflow.python.keras.preprocessing.sequence import pad_sequences

# 加载日志配置文件
logging.config.fileConfig("logging.ini")
logging.info('service server is begin starting...')

# flask 配置
app = Flask(__name__)

# 加载模型
model = load_model('my_model.h5')
logging.info('load_model my_model.h5 is done')

# 加载词向量
cn_model = KeyedVectors.load_word2vec_format('sgns.zhihu.bigram', binary=False)
logging.info('load_word2vec_format bigram is done')

# 查看模型,无意义,只是看一下模型结构
model.summary()

# 预测函数
def predict_sentiment(text):
    # 去标点
    text = re.sub("[\s+\.\!\/_,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*()]+", "",text)
    # 分词
    cut = jieba.cut(text)
    cut_list = [ i for i in cut ]
    # tokenize
    for i, word in enumerate(cut_list):
        try:
            cut_list[i] = cn_model.vocab[word].index
        except KeyError:
            cut_list[i] = 0
    # padding
    tokens_pad = pad_sequences([cut_list], maxlen=236,
                               padding='pre', truncating='pre')
    # 预测
    result = model.predict(x=tokens_pad)
    coef = result[0][0]
    if coef >= 0.5:
        print(coef)
    else:
        print(coef)
    return coef

@app.route("/nlp/posneg/")
def urlParams(s):
    logging.info(s);
    '''
    模型预测结果在0~1之间
    得分<0.5 为消极情绪
    得分>0.5 为积极情绪
    '''
    res= predict_sentiment(s);
    return str(res)

logging.info('service server is starting...')
# 服务占用80端口
http_server = WSGIServer(('',80),app)
# 启动服务
http_server.serve_forever()

涉及模型请关注并私信我。

你可能感兴趣的:(神经网络,tensorflow,自然语言)