上一篇,已经实现了如何将一条语句在一个语料库中比较相似度,

发现运行的时候每次都要编译语料库,通过查找资料,可以一次性编译成预料库,存人文件

编译语料库代码 11_k.py

import sys
import jieba
reload(sys)
sys.setdefaultencoding("utf-8")
from gensim import corpora,models,similarities
alist = [] import json def fenci():
for i_text in open("xaa.json"):
f_json = json.loads(i_text)
kk = f_json["content"]
item_str = jieba.cut(kk.encode("utf-8"),cut_all=True)
a = " ".join(item_str)
alist.append(a) fenci() class MyCorpus(object):
def __iter__(self):
for item_str in alist:
yield item_str.split(' ') Corp = MyCorpus()
dictionary = corpora.Dictionary(Corp) #dictionary = corpora.Dictionary(Corp)
dictionary.save("bbb.dict") #存入本地数据
corpus = [dictionary.doc2bow(text) for text in Corp] corpora.MmCorpus.serialize('deerwester1.mm', corpus) # 存入硬盘,以备后需 编译好了 bbb.dict deerwester1.mm 文件,在一下一个代码中直接调用11_main.py
import jieba
from gensim import corpora, models, similarities
dictionary = corpora.Dictionary.load('bbb.dict') #调用
corpus = corpora.MmCorpus('deerwester1.mm') tfidf = models.TfidfModel(corpus) corpus_tfidf = tfidf[corpus] def read_file(i):
with open("xaa.json","rt") as f:
y = f.readlines()[i]
print y def test_kk(test):
test_data_1 = '请假洛阳牡丹'
test_cut_raw_1 = jieba.cut(test)
doc_new = " ".join(test_cut_raw_1) test_corpus_1 = dictionary.doc2bow(doc_new.split()) vec_tfidf = tfidf[test_corpus_1] index = similarities.MatrixSimilarity(corpus_tfidf) sims = index[vec_tfidf] similarit = list(sims) #print(list(enumerate(sims)))
sims = sorted(enumerate(sims), key=lambda item: -item[1])
for i in range(20): #只读取前20 个数据,
print sims[i] #相似度是与元组的形式存在
k = sims[i]
read_file(k[0]) #将相似文件中相似的语句打印出来 def buss_mian():
while True:
test = raw_input("please input test:")
test_kk(test) if __name__ == "__main__": buss_mian()

gensim自然语言处理(续)的更多相关文章

  1. gensim自然语言处理

    参考代码 ChineseClean_demo1.py: # -*- coding:utf-8 -*- import xlrd import xlwt ''' python3.4 ''' # file ...

  2. 面试题之python基础

    基础语法 输入和输出 代码中要修改不可变的数据会出现什么问题,抛出什么异常? 代码不会征程运行,抛出TypeError异常 a = 1,b = 2,不用中间变量交换a和b的值? # 方法1 a = a ...

  3. Python2和Python3的差异

    之前做Spark大数据分析的时候,考虑要做Python的版本升级,对于Python2和Python3的差异做了一个调研,主要对于语法和第三方工具包支持程度进行了比较. 基本语法差异 核心类差异 Pyt ...

  4. Python2和Python3比较分析

    一直有看到网上有讨论Python2和Python3的比较,最近公司也在考虑是否在spark-python大数据开发环境中升级到python3.通过本篇博文记录Python2.7.13和Pthon3.5 ...

  5. Python2 和Python3 的差异总结

    一.基本语法差异 1.1 核心类差异 Python3对Unicode字符的原生支持 Python2中使用 ASCII 码作为默认编码方式导致string有两种类型str和unicode,Python3 ...

  6. 巨蟒python全栈开发flask1

    1.整体把握 (1)路飞学城 - RestAPI 前后端分离开发 Django Vue.js - DRF DjangoRestFromwork - 线上商城的经验 (2)智能玩具 - RestAPI ...

  7. python2和python3的区别(转)

    基本语法差异 核心类差异 Python3对Unicode字符的原生支持 Python2中使用 ASCII 码作为默认编码方式导致string有两种类型str和unicode,Python3只支持uni ...

  8. python 全栈开发,Day133(玩具与玩具之间的对话,基于jieba gensim pypinyin实现的自然语言处理,打包apk)

    先下载github代码,下面的操作,都是基于这个版本来的! https://github.com/987334176/Intelligent_toy/archive/v1.6.zip 注意:由于涉及到 ...

  9. 自然语言处理--jieba和gensim的分词功能

    一.jieba分词功能 1.主要模式 支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析: 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义: 搜索引擎模 ...

随机推荐

  1. 微信JSSDK分享功能实现

    <script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <scri ...

  2. Noip2015提高组解题报告

    Day1 T1神奇的幻方 一道简单异常的小模拟,我们只需要确定数字1的位置,然后根据题意枚举即可,简简单单就A了,什么也不卡. 然而这题,我刚开始学OI的时候,因为当时比较蠢,被这题花式吊打啊.... ...

  3. 洛谷—— P1908 逆序对

    https://www.luogu.org/problem/show?pid=1908 题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏, ...

  4. 27、Flask实战第27天:cms后台登录

    cms后台登录界面 后台登录页面,我们不用自己写,只需要去Bootstrap中文网去找一个模板改一下就行 这里使用的模板是:https://v3.bootcss.com/examples/signin ...

  5. 封装boto3 api用于服务器端与AWS S3交互

    由于使用AWS的时候,需要S3来存储重要的数据. 使用Python的boto3时候,很多重要的参数设置有点繁琐. 重新写了一个类来封装操作S3的api.分享一下: https://github.com ...

  6. 取得指定Schema下的表

    MYSQL中取得指定Schema下所有表定义的SQL语句如下(假设Schema名为demoschema): SHOWTABLES FROM demoschema MSSQLServer中的系统表sys ...

  7. POJ 2484 A Funny Game 博弈论 对称博弈

    http://poj.org/problem?id=2484 1和2时Alice必胜,3时Bob必胜,其他情况下Bob只需要在Alice取过之后取一次将剩下的硬币链平均分为两份,然后Alice怎么取B ...

  8. BZOJ 2242 [SDOI2011]计算器(快速幂+Exgcd+BSGS)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2242 [题目大意] 给出T和K 对于K=1,计算 Y^Z Mod P 的值 对于K=2 ...

  9. [UOJ217]奇怪的线段树

    如果一个节点是$0$但它子树内有$1$那么无解,否则我们只需把那些是$1$但子树内没有其他$1$的节点(这些区间是被定位的区间)都访问一遍即可 根据ZKW线段树定位区间的过程,可以发现一段(从左到右) ...

  10. 【贪心】【堆】Gym - 101128C - Canvas Painting

    一些画布,每块有其大小,一开始都是白的,你任意将它们排序,然后一次操作可以选择一段连续的相同颜色的画布,从中任选一个位置,左侧涂上任意一种颜色,右侧涂上另一种.消耗是这一段画布的总的大小.问你要将所有 ...