文档章节

Python创建文本相似度查询服务

守望者之父
 守望者之父
发布于 2017/01/20 22:52
字数 436
阅读 30
收藏 0

 #! -*- coding:utf-8 -*-


import pymongo
import codecs,sys
from pymongo import MongoClient
import jieba
from gensim import corpora, models, similarities
import nltk
import jieba.analyse
from nltk.tokenize import word_tokenize
from pprint import pprint # pretty-printer
from flask import Flask,request

import trainkick

print "Flask server..."
app = Flask(__name__)
app.config.from_object(__name__)
#flatpages = FlatPages(app)

questid=''

@app.route('/queryill')
def index():
questid=request.args.get("uuid",'')
queryit(questid)
return 'success'


#reload(sys)
#sys.setdefaultencoding('utf-8')
#look2 = codecs.lookup("utf-8")

kickpath="/root/python/"
conn = MongoClient("xxx",27017)
db = conn.health
db.authenticate("xxx","xxx3")


dics=[]
dits={}
labels={}
count=1
mydoclist =[]
courses=[]

uuids=[]



content = db.kickchufang.find({})
for in content:
line=str(i['chufang'].encode("gb2312"))
uuid=i['uuid']
uuids.append(uuid)
print uuid,line
courses.append(line)
courses_name = courses



#lib_texts =trainkick. pre_process_cn(courses)
#库建立完成 -- 这部分可能数据很大,可以预先处理好,存储起来
dictionary = corpora.Dictionary.load(kickpath+'kick.dict')
print dictionary
lsi=models.LsiModel.load(kickpath+"kick.lsi")
index=similarities.MatrixSimilarity.load(kickpath+"kick.index")


def queryit(questionid):
# 要处理的对象登场
record = db.kickasking.find_one({'uuid': questionid})
if (record):
line = str(record['desc'].encode("gb2312"))
print line
questions = [line]
target_courses = questions # [u'石膏']
# print "target_courses",target_courses
target_text = trainkick.pre_process_cn(target_courses, low_freq_filter=False)
"""
test similary
"""

# 选择一个基准数据
ml_course = target_text[0]
print "ml_course", ml_course

# 词袋处理
ml_bow = dictionary.doc2bow(ml_course)
print "ml_bow", ml_bow

# 在上面选择的模型数据 lsi 中,计算其他数据与其的相似度
ml_lsi = lsi[ml_bow] # ml_lsi 形式如 (topic_id, topic_value)
sims = index[ml_lsi] # sims 是最终结果了, index[xxx] 调用内置方法 __getitem__() 来计算ml_lsi

# 排序,为输出方便
sort_sims = sorted(enumerate(sims), key=lambda item: -item[1])

# 查看结果
print sort_sims[0:10# 看下前10个最相似的,第一个是基准数据自身
print uuids[sort_sims[0][0]], sort_sims[0][1]
print uuids[sort_sims[1][0]], sort_sims[1][1]
print uuids[sort_sims[2][0]], sort_sims[2][1]
doc = [{"questid": questionid, "chufangid": uuids[sort_sims[0][0]], "score"float(sort_sims[0][1])}]
db.kickanswer.insert(doc)

# print sort_sims[1][1] #看下实际最相似的数据叫什么
# print courses_name[sort_sims[2][0]] #看下实际最相似的数据叫什么
# print courses_name[sort_sims[3][0]] #看下实际最相似的数据叫什么


if __name__ == '__main__':
app.run(host='0.0.0.0'port=9000)

© 著作权归作者所有

守望者之父
粉丝 6
博文 89
码字总数 62314
作品 0
南京
私信 提问
计算两个字符串相(或句子)似度的方法

主要方法有:编辑距离、余弦相似度、模糊相似度百分比 1 编辑距离 编辑距离(Levenshtein距离)详解(附python实现) 使用Python计算文本相似性之编辑距离 2 余弦相似度 余弦计算相似度度量 ...

致Great
2018/05/11
0
0
[coreseek/sphinx学习笔记1]--简介

[参考Coreseek 全文检索服务器 2.0 (Sphinx 0.9.8)参考手册,详情见http://www.coreseek.cn/docs/sphinx_doc_zhcn_0.9.pdf] 1.1 什么是Sphinx Sphinx 是 SQL Phrase Index 的缩写,但不幸的和......

酒肉穿肠过
2013/02/21
627
0
WordNet的使用方法(整理版)

那个,网上的不少相关内容的整理真的是难懂,而且不少错误,稍稍整理一下。 python版本:Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32 num...

king_john
2018/05/09
0
0
【Python】 字符串相似性度量,用difflib还是Levenshtein

【作者笔记】 difflib(Python自带):不一定为字符串,数组也可以匹配,但数组匹配时只有单个元素完全匹配才计入相似。 Levenshtein(第三方插件):需要输入为字符串,匹配时是整体匹配,数...

qcyfred
03/19
0
0
Python文本挖掘-PDF和脚本见附件

课程要点 •分词以及词权重 •文本分类算法 •文本检索和LDA 常国珍《Python数据科学:全栈技术详解》 3 课程大纲 1)文本挖掘介绍 2)中文分词 3)文本特征提取与相关性的度量 4)文本分类 5)主...

Ben_Chang
2018/05/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
48分钟前
4
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
今天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
今天
4
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
今天
6
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部