【NLP】pyhanlp flask
D:\ProgramData\Anaconda3\Lib\site-packages\pyhanlp\__init__.py 加入
WordVectorModel = LazyLoadingJClass('com.hankcs.hanlp.mining.word2vec.WordVectorModel')
# coding=utf-8
from flask import Flask
from flask import request
from flask import jsonify
from flask import make_response,Response
from flask_cors import CORS
from pyhanlp import * port = 9999
app = Flask(__name__)
CORS(app, supports_credentials=True) @app.route('/')
def index():
str = "Hello, AI Server!"
print(str)
return str # 成功请求
def successResp(data):
return jsonify(code=0, message="success", data=data) # 错误请求
def errorResp(msg):
return jsonify(code=-1, message=msg) # 分词服务
@app.route('/NLPWordSplit', methods=['POST'])
def NLPWordSplit():
Article = request.form.get('Article')
print(Article) if Article == None or Article == "" :
rst = make_response(errorResp("请输入正确的数据!"))
rst.headers['Access-Control-Allow-Origin'] = '*'
return rst word = ""
for term in HanLP.segment(Article):
curWord = str(term.word)
if len(curWord) != 0:
word = word + " " + curWord
print(word) return getResult(word) # 词向量服务
@app.route('/NLPWordNearest', methods=['POST'])
def NLPWordNearest():
Word = request.form.get('Word')
print(Word) if Word == None or Word == "" :
rst = make_response(errorResp("请输入正确的数据!"))
rst.headers['Access-Control-Allow-Origin'] = '*'
return rst
try:
# WordVectorModel = LazyLoadingJClass('com.hankcs.hanlp.mining.word2vec.WordVectorModel')
# print(WordVectorModel)
# MODEL_FILE_NAME = r"E:\Model.txt"
# # 初始化模型
# word2vec = WordVectorModel(MODEL_FILE_NAME)
# print(word2vec)
if word2vec != None:
print("相关词分析")
word = word2vec.nearest(Word)
print(word)
data = ""
for x in word:
if data == "":
data = str(x).replace("=",":")
else:
data = data + "," + str(x).replace("=",":")
print(data) word = "{" + data + "}"
# word = json.dumps(word)
# word = ','.join(word)
print(word)
return getResult(word)
else:
rst = make_response(errorResp("单词分析错误!"))
rst.headers['Access-Control-Allow-Origin'] = '*'
return rst
except Exception as e:
print("Exception:",e)
finally:
print("OK") def getResult(word):
if word != "":
# 如果成功返回预测结果
rst = make_response(successResp(word))
rst.headers['Access-Control-Allow-Origin'] = '*'
return rst
else:
# 如果失败返回错误信息
rst = make_response(errorResp(word))
rst.headers['Access-Control-Allow-Origin'] = '*'
return rst word2vec = None
if __name__ == '__main__':
# if not jpype.isThreadAttachedToJVM():
# jpype.attachThreadToJVM()
# WordVectorModel = jpype.JClass("com.hankcs.hanlp.mining.word2vec.WordVectorModel")
# print(WordVectorModel)
MODEL_FILE_NAME = r"E:\Model.txt"
# 初始化模型
word2vec = WordVectorModel(MODEL_FILE_NAME)
print("port:" + str(port))
app.run(debug = True,host = '0.0.0.0',port = port, threaded = True)
【NLP】pyhanlp flask的更多相关文章
- 【NLP】前戏:一起走进条件随机场(一)
前戏:一起走进条件随机场 作者:白宁超 2016年8月2日13:59:46 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务中都有 ...
- 【NLP】基于自然语言处理角度谈谈CRF(二)
基于自然语言处理角度谈谈CRF 作者:白宁超 2016年8月2日21:25:35 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务 ...
- 【NLP】基于机器学习角度谈谈CRF(三)
基于机器学习角度谈谈CRF 作者:白宁超 2016年8月3日08:39:14 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务中都 ...
- 【NLP】基于统计学习方法角度谈谈CRF(四)
基于统计学习方法角度谈谈CRF 作者:白宁超 2016年8月2日13:59:46 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务 ...
- 【NLP】条件随机场知识扩展延伸(五)
条件随机场知识扩展延伸 作者:白宁超 2016年8月3日19:47:55 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务中都有应 ...
- 【NLP】Tika 文本预处理:抽取各种格式文件内容
Tika常见格式文件抽取内容并做预处理 作者 白宁超 2016年3月30日18:57:08 摘要:本文主要针对自然语言处理(NLP)过程中,重要基础部分抽取文本内容的预处理.首先我们要意识到预处理的重 ...
- [转]【NLP】干货!Python NLTK结合stanford NLP工具包进行文本处理 阅读目录
[NLP]干货!Python NLTK结合stanford NLP工具包进行文本处理 原贴: https://www.cnblogs.com/baiboy/p/nltk1.html 阅读目录 目 ...
- 【NLP】干货!Python NLTK结合stanford NLP工具包进行文本处理
干货!详述Python NLTK下如何使用stanford NLP工具包 作者:白宁超 2016年11月6日19:28:43 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的 ...
- 【NLP】蓦然回首:谈谈学习模型的评估系列文章(一)
统计角度窥视模型概念 作者:白宁超 2016年7月18日17:18:43 摘要:写本文的初衷源于基于HMM模型序列标注的一个实验,实验完成之后,迫切想知道采用的序列标注模型的好坏,有哪些指标可以度量. ...
随机推荐
- PCL点云变换与移除NaN
对点云的操作可以直接应用变换矩阵,即旋转,平移,尺度,3D的变换就是要使用4*4 的矩阵,例如: 等等模型 在这里直接使用程序开实现一个点云的旋转,新建文件matrix.cpp #incl ...
- h5预加载代码
预加载 <!--预加载--> <div class="preload"> <div class="prezoom"> < ...
- 引入css少引入了rel="stylesheet" 这行代码。导致整个页面空白、
忘记引入rel="stylesheet" 如下: <link href="css/swiper-3.3.1.min.css" /> 这样使得整个页 ...
- R语言-连接MySQL数据库方法
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] R语言连接数据库常用的方法有2种: 1.使用R数据库接口 连接MySQL,使用RMySQL包,使用前RMySQL包要先安 ...
- 更改虚拟机UUID
如何更改虚拟机UUID?以下方法适用于:Parallels Desktop 10 for MacParallels Desktop 9 for MacParallels Desktop 8 for M ...
- MyGUI 解析
MyGUI源码还是比较简单的,我们在这里只是简单分析相应控件如何生成,如何渲染. 我们分成三个部分来说明,分别是资源类型,控件生成,控件渲染. 资源类型: ResourceSkin:用于记录各个控件状 ...
- C++复合类型(数组)
1.数组 数组之所以被称为复合类型, 是因为它是使用其他类型来创建的 例如: short months[12]: 那么格式为 typename arrayname [arraysize] 注意:ar ...
- [转载]在澳洲做IT人士的收入差别
澳洲跟中国一样高税收,但最大的好处是,福利返还很多:1.如果家里有孩子,每2周会有各种税收福利,就是所谓的family tax benefits (a/b):2.每财年结束还有退税:3.看病不用钱,因 ...
- js 操作json对象增删改
//将表单序列化成字符串 $.fn.serializeObject = function () { var obj = {}; var count = 0; $.each(this.serialize ...
- 贫血模型;DTO:数据传输对象(Data Transfer Object);AutoMapper ;Domain Model(领域模型);DDD(领域驱动设计)
====================== 我自己的理解 ========================== 一: DTO 我自己的理解,就是 比如你有一个类,跟数据库的table表结构一模一 ...