Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >[TextMatch框架] 基于faiss的搜索

[TextMatch框架] 基于faiss的搜索

作者头像
MachineLP
发布于 2020-10-29 02:23:09
发布于 2020-10-29 02:23:09
46100
代码可运行
举报
文章被收录于专栏:小鹏的专栏小鹏的专栏
运行总次数:0
代码可运行

run examples

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/MachineLP/TextMatch
cd TextMatch
export PYTHONPATH=${PYTHONPATH}:../TextMatch
python tests/tools_test/faiss_test.py

tests/tools_test/faiss_test.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys
import json 
import time
import faiss
import numpy as np
from faiss import normalize_L2
from textmatch.config.constant import Constant as const
from textmatch.core.text_embedding import TextEmbedding
from textmatch.tools.decomposition.pca import PCADecomposition
from textmatch.tools.faiss.faiss import FaissSearch

test_dict = {"id0": "其实事物发展有自己的潮流和规律",
   "id1": "当你身处潮流之中的时候,要紧紧抓住潮流的机会",
   "id2": "想办法脱颖而出,即使没有成功,也会更加洞悉时代的脉搏",
   "id3": "收获珍贵的知识和经验。而如果潮流已经退去",
   "id4": "这个时候再去往这个方向上努力,只会收获迷茫与压抑",
   "id5": "对时代、对自己都没有什么帮助",
   "id6": "但是时代的浪潮犹如海滩上的浪花,总是一浪接着一浪,只要你站在海边,身处这个行业之中,下一个浪潮很快又会到来。你需要敏感而又深刻地去观察,略去那些浮躁的泡沫,抓住真正潮流的机会,奋力一搏,不管成败,都不会遗憾。",
   "id7": "其实事物发展有自己的潮流和规律",
   "id8": "当你身处潮流之中的时候,要紧紧抓住潮流的机会" }


if __name__ == '__main__':
    # ['bow', 'tfidf', 'ngram_tfidf', 'bert']
    # ['bow', 'tfidf', 'ngram_tfidf', 'bert', 'w2v']
    # text_embedding = TextEmbedding( match_models=['bow', 'tfidf', 'ngram_tfidf', 'w2v'], words_dict=test_dict ) 
    text_embedding = TextEmbedding( match_models=['bow', 'tfidf', 'ngram_tfidf', 'w2v'], words_dict=None, update=False ) 
    feature_list = []
    for sentence in test_dict.values():
        pre = text_embedding.predict(sentence)
        feature = np.concatenate([pre[model] for model in ['bow', 'tfidf', 'ngram_tfidf', 'w2v']], axis=0)
        feature_list.append(feature)
    pca = PCADecomposition(n_components=8)
    data = np.array( feature_list )
    pca.fit( data )
    res = pca.transform( data )
    print('res>>', res)

   

    pre = text_embedding.predict("潮流和规律")
    feature = np.concatenate([pre[model] for model in ['bow', 'tfidf', 'ngram_tfidf', 'w2v']], axis=0)
    test = pca.transform( [feature] )

    faiss_search = FaissSearch( res, sport_mode=False )
    faiss_res = faiss_search.predict( test )
    print( "faiss_res:", faiss_res )
    '''
    faiss kmeans result times 8.0108642578125e-05
    faiss_res: [{0: 0.7833399, 7: 0.7833399, 3: 0.63782495}]
    '''

    
    faiss_search = FaissSearch( res, sport_mode=True )
    faiss_res = faiss_search.predict( test )
    print( "faiss_res:", faiss_res )
    '''
    faiss kmeans result times 3.266334533691406e-05
    faiss_res: [{0: 0.7833399, 7: 0.7833399, 3: 0.63782495}]
    '''
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/07/18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
3. 基础搜索与图论初识
给定一个 n×m 的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0 表示可以走的路,1 表示不可通过的墙壁。
浪漫主义狗
2022/07/11
6290
3. 基础搜索与图论初识
算法基础学习笔记——⑪拓扑排序\最短路
时间复杂度 平均情况下 O(m),最坏情况下 O(nm), n 表示点数,m 表示边数
命运之光
2024/03/20
1470
算法基础学习笔记——⑪拓扑排序\最短路
AcWing 340. 通信线路(双端队列广搜 二分)
题意求1到N中路径第k+1大的权值的最小值 可以采用二分 然后我们可以利用二分的这个值作为分界线 小于等于这个值 置为0,大于则为1 然后就变成了一个无向图 权0或1的双端队列广搜模型
glm233
2021/03/23
4430
AcWing 340. 通信线路(双端队列广搜 二分)
2021(ICPC)亚洲区域赛昆明站(CGHIJLM)
有n个城市,每个城市归某个议院管辖,每次可以选择相邻的几座归属于同一个议院的城市,将他们交给别的议院管辖,问最少的操作数使得最终全部城市归属一个议院。初始状态时,一个议院最多管辖15座城市。
Here_SDUT
2022/08/09
1.1K0
C++如何处理图的存储方式
稀疏图,就是点数的平方与边数差的特别多,边数少,但点数多,就不行了,因为空间占用太大了。
苏州程序大白
2022/04/14
4410
C++如何处理图的存储方式
《算法竞赛进阶指南》0x27 A-star
在先前提到的优先队列BFS方法中,是每轮从堆中取出的 “当前代价最小” 的状态进行扩展,这样每个状态第一次从堆中取出时,就得到了从初始状态到该状态的最小代价
一只野生彩色铅笔
2022/10/31
4340
算法最短路问题(从入门到精通)
推荐文章:https://cloud.tencent.com/developer/article/2474511?policyId=20240001&traceId=01jesmy38j9nrp142z5gzy1vqt 本文从LLM视角详细介绍了当下我们应该如何利用Java开发一个优质的AIGC应用,具有广泛应用意义
潋湄
2024/12/07
1270
算法最短路问题(从入门到精通)
第21次CCF计算机软件能力认证 第四题 AcWing 3301. 星际旅行(二分、状压、树的距离)
二分答案,判断mid时间内是否可以完成运送。 运送时间表转化:在运送时间表中将可以在mid时间运达的记为1,否则为0。 在n行中选择最小的行使得每个食材都可以按时运达。==>状态压缩dp
glm233
2021/04/02
3380
牛客小白月赛22 A~~J
A.链接:https://ac.nowcoder.com/acm/contest/4462/A 来源:牛客网
杨鹏伟
2020/09/11
3910
Codeforces 的题目真的值得算法竞赛选手训练吗?
个串,有两种操作,一种是给某个串加一个字符,另一种是求存不存在一个串是查询串的子串。强制在线。
ACM算法日常
2021/11/10
9480
【算法】双指针、位运算、离散化、合并区间
双指针的算法可以优化时间复杂度,双指针,指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向( 快慢指针 )或者相反方向( 对撞指针 )的指针进行扫描,从而达到相应的目的。将双层暴力循环O(n^2)优化到O(n),所以双指针算法最核心的用途就是优化时间复杂度。双指针是比较常见的把,直接看例子既可以。
平凡的人1
2023/10/15
2120
【算法】双指针、位运算、离散化、合并区间
从算法题理解Spfa算法与Dijsktra算法本质区别
今日推荐文章:https://cloud.tencent.com/developer/article/2473454?policyId=20240001&traceId=01jesnm005djmn2rgw9gnazq7b 在用户量庞大的应用系统中,如何进行系统的云原生架构是一件很有挑战的事情,本文以实践案例介绍了宝贵的架构经验,值得好好学习
潋湄
2024/12/10
890
从算法题理解Spfa算法与Dijsktra算法本质区别
SDUT 2021 Winter Individual Contest – G
一辆车连司机可以坐5人,告诉你每个人开车从A到B或者从B到A花费的时间,一共有k辆车,问你让所有人从A到B花费的最少时间。车最终可以留在A地也可以留在B地,回程司机不能带人。
Here_SDUT
2022/08/08
3260
你必须知道的基础算法
对于贪心算法,我们要先将问题简化,然后依据贪心算法的理念,例如可以一起进行的事情,让他们一起进行。可以用一个条件完成的,就用一个条件完成。贪心算法就像人的贪心理念一样,先将可以贪的贪干净,然后在考虑特殊的情况,这样可以很好地进行代码的编写。
洋仔聊编程
2019/01/15
7620
Acwing枚举、模拟与排序(二)
cin和scanf都不会干掉第一行的回车。 在这些函数执行完成之后,执行getline之前,多执行一次getline:去掉回车。
WuShF
2024/03/08
1170
AcWing 456. 车站分级 (虚拟节点优化二分图边数、拓扑序、差分约束、最长路)
原题链接 思路: 代码: #include<bits/stdc++.h> using namespace std; const int N=2010,M=1e6+10; int n,m,e[M],ne
glm233
2021/03/08
3230
【算法竞赛】Namomo Winter 2023 Day 3 Div 2
Dashboard - 2017-2018 ACM-ICPC, NEERC, Northern Subregional Contest - Codeforces
Livinfly
2023/01/11
3470
【算法】静态单链表、双链表、单调栈与单调队列
考虑到效率问题,如果每次都去new结点效率比较慢,平时做题时不采用动态:在有严格的时间要求的环境中,不能频繁使用new操作,new的底层涉及内存分配,调用构造函数,指针转换等多种复杂且费时的操作。也就不能使用结构体来实现数组。
平凡的人1
2023/10/15
1510
【算法】静态单链表、双链表、单调栈与单调队列
洛谷 P1177 【模板】快速排序【13种排序模版】
P1177 【模板】快速排序 题目描述 利用快速排序算法将读入的N个数从小到大排序后输出。 快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++选手请不要试图使用STL,虽然你可以使用sort一遍过,但是你并没有掌握快速排序算法的精髓。) 输入输出格式 输入格式: 输入文件sort.in的第1行为一个正整数N,第2行包含N个空格隔开的正整数a[i],为你需要进行排序的数,数据保证了A[i]不超过1000000000。 输出格式:
Angel_Kitty
2018/04/09
1.4K0
IME++ Starters Try-outs 2019 题解
显然如果有多棵树,则一定会存在无法到达的点。否则直接暴力 b f s bfs bfs求每个点到其余点的距离, a n s ans ans取 m a x max max即可
dejavu1zz
2020/12/02
5870
IME++ Starters Try-outs 2019 题解
推荐阅读
相关推荐
3. 基础搜索与图论初识
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档