以下为搜索的原始版本代码,该代码实现了基本的搜索测试,但未导出合理的接口,且当搜索词不在Annoy树中时会报错。

# 基于annoy二叉树的近邻搜索版本import json
import numpy as np
from collections import OrderedDict
from annoy import AnnoyIndexdef main():#加载关键词->索引表with open('../../res/tc_word_index.json', 'r') as fp:word_index = json.load(fp)tc_index = AnnoyIndex(200)# 从硬盘数据加载build生成的森林tc_index.load('../../res/tc_index_build.index')# 构建索引->关键词表reverse_word_index = dict([(index,word) for (word,index) in word_index.items()])# 测试数据tests = [reverse_word_index[5], reverse_word_index[100], reverse_word_index[1000]]for word in tests:print('keyword: ', word)for item in tc_index.get_nns_by_item(word_index[word], 10):print(reverse_word_index[item])print('finish')main()

为实现模块化,增加代码兼容性,重写为以下版本

# 基于annoy二叉树的近邻搜索版本import json
from annoy import AnnoyIndexclass KeywordSearcher:def __init__(self):with open('../../res/tc_word_index.json', 'r') as fp:self.word_index = json.load(fp)self.tc_index = AnnoyIndex(200)self.tc_index.load('../../res/tc_index_build.index')self.reverse_word_index = dict([(index, word) for (word, index) in self.word_index.items()])def search(self, keyword, num = 5):index = self.word_index[keyword]if index == -1:return []return self.tc_index.get_nns_by_item(index, num)

代码实现为一个类的模式,在构造器中加载索引文件,并暴露search方法,实现可指定数量的近邻搜索。

基于Annoy的语义泛化-代码模块化相关推荐

  1. ELMo:基于上下文的语言模型,5分钟构建语义搜索引擎代码实战

    2019-12-05 20:53:41 作者:Josh Taylor 编译:ronghuaiyang 导读 5分钟内构建一个基于ELMo的语义搜索引擎,在NLP中,上下文就是一切. 使用最先进的ELM ...

  2. 基于RGB-D的语义分割和目标检测介绍

    寒假的时候看了一篇论文--Multimodal Neural Networks: RGB-D for Semantic Segmentation and Object Detection这篇论文是20 ...

  3. SSC:基于点云语义上下文的大规模激光SLAM的位置识别方法

    文章:SSC: Semantic Scan Context for Large-Scale Place Recognition 作者:Lin Li1 , Xin Kong1 , Xiangrui Zh ...

  4. 面向动态环境基于点的语义SLAM系统

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:robot L | 来源:知乎 https://zhuanlan.zhihu.com/p/133 ...

  5. 基于bert的语义匹配_构建基于BERT的语义搜索系统…针对“星际迷航”

    基于bert的语义匹配 If you read my previous article on Towards Data Science you'll know I'm a bit of a Star ...

  6. 前端工程师必须要知道的SEO技巧(2):制作比设计还要漂亮的代码(内容和语义化代码)上...

    前言:现在的网站设计,大多数不仅仅要求美观,前端代码往往发挥着重要的作用.这意味着很大一部分搜索引擎优化或搜索引擎优化责任应该落在设计师身上.然而,有大量的网页设计师不理解这个问题以及如何在建立一个网 ...

  7. 单片机sleep函数的头文件_单片机代码模块化设计思想浅谈

    前言:前段时间分享的文章[单片机裸机代码框架设计思路],很多读者给我留言,觉得很不错,对于初学者而言,这是一个进阶的技巧,对于我而言,这是对自己总结和表达能力的一个提升. 本文章我们再谈谈单片机代码的 ...

  8. 论文浅尝 - ACL2022 | 基于多语言语义解耦表示的跨语言迁移方法实现多语言阅读理解...

    论文作者:吴林娟,天津大学,研究方向为自然语言理解 论文链接:http://arxiv.org/abs/2204.00996 代码地址:https://github.com/wulinjuan/SSD ...

  9. 语义级代码克隆检测数据集的评估与改进

    摘要:应用深度学习来检测语义代码克隆受到了研究界的广泛关注. 本文分享自华为云社区<语义级代码克隆检测数据集的评估与改进>,作者:软件分析Lab. 一.背景介绍 代码克隆检测[1]是软件工 ...

最新文章

  1. 首次发现:你的大脑“指纹”,全球独一份
  2. Python调用C/C++的种种方法
  3. tftp环境搭建笔记
  4. 关于计算机图形标准化的论述 哪个是正确的,地大《计算机图形学(新)》在线作业 参考资料...
  5. 由浅到浅入门批量渲染(三)
  6. Nginx正向代理实现
  7. 使用 LLVM 实现一个简单编译器
  8. C# 4.0 新特性dynamic、可选参数、命名参数等
  9. 什么是Asp.net Core?和 .net core有什么区别?(转)
  10. hulu往届笔试题及解题思路
  11. [多图]Maclean的巴厘岛游记
  12. 一天搞懂深度学习—学习笔记4(knowledge and tricks)
  13. 科立捷默认频率_科立捷(KOLEEJ) 【京东配送·隔日达】民用大功率自驾游酒店地下室隧道4S店对讲机 KLJ-T10...
  14. 计算机串口程序配置,串口设置软件 串口调试工具如何使用
  15. android 图片浏览 app 排行版,安卓图片浏览软件哪个好_安卓图片浏览app推荐_图片浏览app软件排行...
  16. 道阻且长,行则将至;行而不辍,未来可期。
  17. 宝妈每天一小时,在家用手机做情感励志短视频,收益稳定200多
  18. HNOI2008玩具装箱(T_OY)bzoj1010
  19. tushare使用教程(附代码)
  20. 首屏优化,减少白屏时间

热门文章

  1. 空间面板回归模型(stata操作)
  2. Java——数据类型
  3. 用计算机绘制采油曲线,绘制采油曲线.ppt
  4. 江西 南昌 富士康 java,好消息!富士康智能科技小镇落户小蓝经开区!总投资达110亿元...
  5. OllyDbg使用方法
  6. esp8266 AMR转PCM
  7. 文本文件转excel文件
  8. 大数据基础习题(2)
  9. LG30刷小米系统_闲鱼300块入手小米平板1,性能居然秒杀1099的小米平板4
  10. JS高级程序设计(14)