问答型知识库
前言
名词术语介绍:
- 知识库(Knowledge Base):存储和组织知识的数据集合,包含结构化或非结构化的信息。
- 问答系统(Question Answering System):能够接受用户提问并给出准确回答的系统,可以利用知识库中的信息进行推理和匹配。
- 知识库问答系统(Knowledge Base Question Answering):知识图谱问答,又称 Knowledge-based QA 或 KBQA,是一种基于结构化知识库(即知识图谱)的智能问答方法。给定自然语言问题,该类方法基于知识图对问题进行理解,并根据问题理解的结果从知识图谱中查找或推理出问题对应的答案。
- 自然语言处理(Natural Language Processing,NLP):涉及理解、处理和生成自然语言文本的领域,用于处理用户问题和知识库中的文本。
- 实体识别(Entity Recognition):识别文本中的命名实体,如人名、地名、组织机构等,用于对问题和知识库条目进行实体匹配。
- 关系抽取(Relation Extraction):从文本中提取实体之间的关系,用于构建知识图谱或寻找问题答案中的相关信息。
- 问题解析(Question Parsing):将用户提问转化为机器可理解的形式,例如识别问题类型、提取关键词等。
- 文本相似度匹配(Text Similarity Matching):衡量两个文本之间的相似程度,用于将用户问题与知识库中的条目进行匹配。
- 语义角色标注(Semantic Role Labeling):标注句子中的语义角色,如谓词、主语、宾语等,用于理解问题的语义结构。
- 信息抽取(Information Extraction):从非结构化文本中提取结构化的信息,如实体、属性和关系,用于构建知识库。
- 实体链接(Entity Linking):将文本中的实体链接到知识库中的对应实体,以便获取更丰富的背景知识。
- 语义匹配(Semantic Matching):根据问题和知识库条目之间的语义相似度,确定最相关的答案或相关条目。
- 逻辑推理(Logical Reasoning):基于逻辑规则和知识推理,推导出问题的答案或确定答案的可信度。
- 评估指标(Evaluation Metrics):用于评估问答系统性能的指标,如准确率、召回率、F1 值等。
- 文本挖掘(Text Mining):从大规模文本数据中发现有价值的信息和模式,用于知识库构建和问题解析。
检索方案
基于关键词匹配
- 基于 FEMA 表抽取实体、关系
- 基于 Neo4j 图数据库存储
- 基于 SpringBoot 框架做后端接口
- 基于 HanLP 进行实体识别
- 根据用户输入的问题,进行设备实体、失效模式实体识别,名词为设备实体,动词为失效模式实体
- 通过 Cypher 语句在 Neo4j 中查询 设备实体 匹配数据库中的设备、组件等实体,失效模式实体匹配数据库中的失效模式
- 匹配的方式是模糊查询。返回整个节点路径,包括:设备 -> 一级组件 -> 二级组件 -> 三级组件 -> 失效模式 -> 根本原因 -> 措施
ChatGPT 分析如下:
数据抽取和存储:
- 基于 FEMA 表进行实体和关系的抽取,将相关的设备、组件、失效模式、根本原因、措施等实体抽取出来。
- 使用 Neo4j 图数据库进行存储,其中节点表示实体,边表示实体之间的关系,以构建图形数据模型。
后端接口:
- 使用 Spring Boot 框架构建后端接口,提供与客户端的交互和查询功能。
实体识别:
- 基于 HanLP 进行实体识别,根据用户输入的问题进行设备实体和失效模式实体的识别。
- 设备实体通过名词识别,失效模式实体通过动词识别。
查询过程:
- 根据用户输入的设备实体和失效模式实体,使用 Cypher 语句在 Neo4j 图数据库中进行查询。
- 通过模糊查询的方式,匹配数据库中的设备、组件和失效模式节点,获取它们之间的关系路径。
- 返回完整的节点路径,包括设备、一级组件、二级组件、三级组件、失效模式、根本原因和措施等信息。
该方案的优势在于使用图数据库 Neo4j 存储实体和关系,能够更好地表示实体之间的复杂关联关系。通过实体识别和 Cypher 查询语句,可以根据用户输入的设备实体和失效模式实体,快速找到它们之间的关联路径,包括相关的组件、失效模式、根本原因和措施等信息。整体上,这个方案能够提供丰富的实体关联查询功能,帮助用户快速定位设备问题并找到解决方案。
基于相似度匹配
- 基于问答对形式的数据
基于向量数据库 milvus 和关系型数据库 PostgreSQL
- milvus 存储问题向量
- PostgreSQL 存储问题答案
- 基于 Python
fastapi
做后端接口 - 基于 bert-as-service 进行文本的 embedding 向量化
- 用户输入问题,首先将问题向量化,然后使用 milvus 提供的 search 函数,查询 milvus 数据库中的 top_k 个与该向量最为相似的答案,返回 ID, 然后根据 ID 到 PostgreSQL 查询问题答案
注:在数据处理中,"sentence encoding" 指的是将一个句子或文本转换为固定长度的向量表示。这个向量表示捕捉了输入句子的语义和语法信息,并且可以作为机器学习模型的输入。
ChatGPT 分析如下:
数据存储方面:
- 使用 Milvus 存储问题向量:将问题转换为向量表示,并使用 Milvus 进行高效的向量存储和索引,以支持快速的相似度搜索。
- 使用 PostgreSQL 存储问题答案:将问题的答案存储在关系型数据库 PostgreSQL 中,以便根据问题的 ID 进行查询。
后端接口:
- 使用 Python 的 FastAPI 框架构建后端接口,提供与客户端的交互和查询功能。
文本向量化:
- 使用 bert-as-service 库进行文本的 embedding 向量化,将输入的问题转换为高维向量表示。
查询过程:
- 当用户输入问题时,首先将问题向量化,得到其对应的向量表示。
- 使用 Milvus 的 search 函数,基于相似度匹配,查询 Milvus 数据库中与输入问题向量最相似的 top_k 个向量,并返回其对应的 ID。
- 然后,根据返回的 ID,通过查询 PostgreSQL 数据库,获取相应的问题答案。
这个方案的优势在于利用向量数据库 Milvus 进行高效的相似度搜索,并结合关系型数据库 PostgreSQL 存储详细的问题答案。通过将问题向量化和利用相似度匹配,可以快速找到与用户输入问题相似的问题,并返回相应的答案。整体上,这个方案可以提供较快的搜索响应速度和准确的答案匹配。
ChatGPT 回答
- 关键词匹配:为每个知识库条目定义关键字标签,包括常见问题、关键词和标签等。当用户输入一个问题时,系统可以通过匹配用户输入与关键字标签的相似度来找到最匹配的知识库条目。
检索算法:实现一个基于规则的检索算法,例如基于 TF-IDF 的算法或简单的词频匹配算法。这样可以根据关键字的重要性和匹配程度来对知识库条目进行排序,并返回与用户问题最相关的条目。
参考下方 "Elasticsearch 倒排索引和 TF-IDF 打分"1
- 文本预处理:在进行匹配之前,对用户输入和知识库中的文本数据进行预处理,例如分词、去除停用词和标点符号,以及词干化。这有助于提高匹配的准确性和效率。
问题解析:设计一个简单的问题解析器,根据用户输入的问题类型进行分类。例如,可以定义一些预定义的问题模板,如"How to [操作/配置] [某项]"或"什么是 [某个概念]"。通过解析问题类型,可以更好地定位匹配的知识库条目。
在问题解析方面,您可以设计一个简单的问题解析器,它可以根据用户输入的问题类型进行分类,以更好地定位匹配的知识库条目。
定义问题模板:首先,定义一些预定义的问题模板,这些模板涵盖了常见的问题类型。例如:
- "How to [操作/配置] [某项]":针对操作或配置类问题,如"How to set up a domain"(如何设置一个域名)或"How to configure network settings"(如何配置网络设置)。
- "What is [某个概念]":针对定义或解释类问题,如"What is cloud computing?"(什么是云计算?)或"What is SSL?"(SSL 是什么?)。
解析问题类型:当用户输入一个问题时,将其与预定义的问题模板进行匹配。通过检查问题的结构、关键词和句式等特征,可以确定问题所属的模板类型。
提取关键信息:一旦确定了问题的模板类型,可以使用适当的方法从问题中提取关键信息。例如,对于"How to [操作/配置] [某项]"模板,您可以提取操作或配置的目标项。对于"What is [某个概念]"模板,您可以提取需要解释的概念。
匹配知识库条目:使用提取的关键信息,将其与知识库中的条目进行匹配。您可以比较关键信息与知识库条目中的关键字或标签,并选择与之最匹配的条目。
- 排除非相关结果:在返回匹配的知识库条目时,排除那些与用户问题无关的结果。这可以通过过滤掉与关键词不相关的条目或使用简单的逻辑规则来实现。
- 用户反馈:为用户提供一个反馈机制,如点击行为,允许他们评价知识库的答案是否有用或提供其他反馈信息。这样可以通过收集用户反馈来不断改进系统的准确性和用户体验。
- 知识库维护:建立一个方便运维人员管理知识库数据的界面,使其能够方便地添加、编辑和删除知识库条目。这样可以确保知识库内容的及时更新和完整性。
相关技术
自然语言处理
HanLP(荐)
介绍
HanLP 是一系列模型与算法组成的 NLP 工具包,目标是普及自然语言处理在生产环境中的应用。HanLP 具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。
功能:
中文分词
词性标注
命名实体识别
关键词提取
自动摘要
短语提取
- 多音字、声母、韵母、声调
- 简繁分歧词(简体、繁体、臺灣正體、香港繁體)
- 语义推荐、拼音推荐、字词推荐
依存句法分析
- KMeans、Repeated Bisection、自动推断聚类数目 k
- 词向量训练、加载、词语相似度计算、语义运算、查询、KMeans 聚类
- 文档语义相似度计算
- 部分默认模型训练自小型语料库,鼓励用户自行训练。所有模块提供训练接口,语料可参考 98 年人民日报语料库。
使用
Maven 坐标
为了方便用户,特提供内置了数据包的 Portable 版,只需在 pom.xml 加入:
<dependency>
<groupId>com.hankcs</groupId>
<artifactId>hanlp</artifactId>
<version>portable-1.8.4</version>
</dependency>
调试模式
HanLP.Config.enableDebug();
拼音转换
List<Pinyin> pinyins = HanLP.convertToPinyinList("形形色色,行");
Console.log("---> 拼音:{}", pinyins);
分词
普通操作
List<Term> segment = HanLP.segment("模型跟词典没有绝对的区别,隐马模型被做成人人都可以编辑的词典形式,不代表它不是模型。"); Console.log("---> 分词:{}", segment);
开启人名识别
String[] testCase = new String[]{ "签约仪式前,秦光荣、李纪恒、仇和等一同会见了参加签约的企业家。", "王国强、高峰、汪洋、张朝阳光着头、韩寒、小四", "张浩和胡健康复员回家了", "王总和小丽结婚了", "编剧邵钧林和稽道青说", "这里有关天培的有关事迹", "龚学平等领导,邓颖超生前", }; Segment segment2 = HanLP.newSegment().enableNameRecognize(true); for (String sentence : testCase) { List<Term> termList = segment2.seg(sentence); System.out.println(termList); }
目前分词器基本上都默认开启了中国人名识别,比如
HanLP.segment()
接口中使用的分词器等等,用户不必手动开启;上面的代码只是为了强调。识别器
方法 默认 中国人名识别 enableNameRecognize() 开启 音译人名识别 enableTranslatedNameRecognize() 开启 日本人名识别 enableJapaneseNameRecognize() 关闭 地名识别 enablePlaceRecognize() 关闭 机构名识别 enableOrganizationRecognize() 关闭 关闭的识别器需要用户手动开启,一是因为消耗性能,二是有些不常用。
用户自定义词典
Console.log("================ 加载自定义词典 =================");
CustomDictionary.add("唐三", "nr 1024");
CustomDictionary.add("小舞", "nr 1024");
CustomDictionary.add("戴沐白", "nr 1024");
CustomDictionary.add("奥斯卡", "nr 1024");
CustomDictionary.add("马红俊", "nr 1024");
CustomDictionary.add("宁荣荣", "nr 1024");
CustomDictionary.add("朱竹清", "nr 1024");
CustomDictionary.add("白沉香", "nr 1024");
CustomDictionary.add("千仞雪", "nr 1024");
CustomDictionary.add("胡列娜", "nr 1024");
CustomDictionary.add("唐昊", "nr 1024");
CustomDictionary.add("比比东", "nr 1024");
CustomDictionary.add("阿银", "nr 1024");
CustomDictionary.add("玉小刚", "nr 1024");
CustomDictionary.add("弗兰德", "nr 1024");
CustomDictionary.add("柳二龙", "nr 1024");
CustomDictionary.add("赵无极", "nr 1024");
CustomDictionary.add("独孤博", "nr 1024");
CustomDictionary.add("宁风致", "nr 1024");
CustomDictionary.add("波赛西", "nr 1024");
CustomDictionary.add("千道流", "nr 1024");
CustomDictionary.add("唐晨", "nr 1024");
CustomDictionary.add("这座山", "rqn 1");
CustomDictionary.add("外门", "n 1024");
CustomDictionary.add("唐门", "nt 1024");
停用词词典
Console.log("================ 加载停用词词典 =================");
CoreStopWordDictionary.load("E:\\hanlp-wiki-vec-zh\\train\\stop_words.txt", Boolean.TRUE);
// 分词
List<Term> segment = HanLP.segment(true)
.enableNameRecognize(true)
.enableOrganizationRecognize(true)
.enablePlaceRecognize(true)
.enableNumberQuantifierRecognize(true)
.seg(s);
// 删除停用词
CoreStopWordDictionary.apply(segment);
感知机分词
PerceptronLexicalAnalyzer analyzer = new PerceptronLexicalAnalyzer("E:\\下载\\HanLP\\data\\model\\perceptron\\large\\cws.bin");
List<Term> segment = analyzer.enableCustomDictionary(true)
.enableNameRecognize(true)
.enableOrganizationRecognize(true)
.enablePlaceRecognize(true)
.enableNumberQuantifierRecognize(true)
.seg("测试一下");
文本相似度
WordVectorModel wordVectorModel = new WordVectorModel("E:\\hanlp-wiki-vec-zh\\train\\yl-msr.txt");
float similarity1 = wordVectorModel.similarity("父亲", "爸爸");
Console.log("---> 父亲 = 爸爸 近似度为 {}", similarity1);
DocVectorModel docVectorModel = new DocVectorModel(wordVectorModel);
float similarity = docVectorModel.similarity("唐三的父亲是铁匠", "宁荣荣的爸爸是组委会成员");
Console.log("---> 唐三的父亲是铁匠 = 宁荣荣的爸爸是组委会成员 近似度为 {}", similarity);
训练:
@Test
public void train()
throws IOException {
Console.log("================ 加载斗罗大陆 =================");
List<String> douluoList = FileUtil.readLines(new File("E:\\hanlp-wiki-vec-zh\\train\\douluo.txt"), CharsetUtil.UTF_8);
Console.log("================ 加载自定义词典 =================");
CustomDictionary.add("唐三", "nr 1024");
CustomDictionary.add("小舞", "nr 1024");
CustomDictionary.add("戴沐白", "nr 1024");
CustomDictionary.add("奥斯卡", "nr 1024");
CustomDictionary.add("马红俊", "nr 1024");
CustomDictionary.add("宁荣荣", "nr 1024");
CustomDictionary.add("朱竹清", "nr 1024");
CustomDictionary.add("白沉香", "nr 1024");
CustomDictionary.add("千仞雪", "nr 1024");
CustomDictionary.add("胡列娜", "nr 1024");
CustomDictionary.add("唐昊", "nr 1024");
CustomDictionary.add("比比东", "nr 1024");
CustomDictionary.add("阿银", "nr 1024");
CustomDictionary.add("玉小刚", "nr 1024");
CustomDictionary.add("弗兰德", "nr 1024");
CustomDictionary.add("柳二龙", "nr 1024");
CustomDictionary.add("赵无极", "nr 1024");
CustomDictionary.add("独孤博", "nr 1024");
CustomDictionary.add("宁风致", "nr 1024");
CustomDictionary.add("波赛西", "nr 1024");
CustomDictionary.add("千道流", "nr 1024");
CustomDictionary.add("唐晨", "nr 1024");
CustomDictionary.add("这座山", "rqn 1");
CustomDictionary.add("外门", "n 1024");
CustomDictionary.add("唐门", "nt 1024");
Console.log("================ 加载停用词词典 =================");
CoreStopWordDictionary.load("E:\\hanlp-wiki-vec-zh\\train\\stop_words.txt", Boolean.TRUE);
Console.log("================ 加载大分词模型 =================");
PerceptronLexicalAnalyzer analyzer = new PerceptronLexicalAnalyzer("E:\\下载\\HanLP\\data\\model\\perceptron\\large\\cws.bin");
Console.log("================ 生成分词文件 =================");
List<String> newDouluoList = new ArrayList<String>(douluoList.size());
for (String s : douluoList) {
if (StrUtil.isBlank(s)) {
continue;
}
s = StrUtil.trim(s);
// 分词
List<Term> segment = analyzer.enableCustomDictionary(true)
.enableNameRecognize(true)
.enableOrganizationRecognize(true)
.enablePlaceRecognize(true)
.enableNumberQuantifierRecognize(true)
.seg(s);
// 删除停用词
CoreStopWordDictionary.apply(segment);
newDouluoList.add(segment.stream().map(t -> t.word).collect(Collectors.joining(StrUtil.SPACE)));
}
String ylFile = "E:\\hanlp-wiki-vec-zh\\train\\yl.txt";
FileUtil.writeLines(newDouluoList, ylFile, CharsetUtil.UTF_8);
Console.log("================ 开始训练 =================");
Word2VecTrainer trainerBuilder = new Word2VecTrainer();
trainerBuilder.useNumThreads(16);
trainerBuilder.setNumIterations(16);
trainerBuilder.setCallback(new TrainingCallback() {
@Override
public void corpusLoading(float percent) {
log.info("语料加载中... {}", percent);
}
@Override
public void corpusLoaded(int vocWords, int trainWords, int totalWords) {
log.info("语料加载完毕");
log.info("词表大小:{}", vocWords);
log.info("词语总词频:{}", totalWords);
log.info("训练总词频:{}", trainWords);
}
@Override
public void training(float alpha, float progress) {
log.info("---> 学习率:{} | 训练百分比:{}", alpha, progress);
}
});
WordVectorModel wordVectorModel = trainerBuilder.train("E:\\hanlp-wiki-vec-zh\\train\\yl.txt", "E:\\hanlp-wiki-vec-zh\\train\\yl-msr.txt");
Console.log("================ 结束训练 =================");
Console.log("--> 查询相近词测试");
Console.log("---> 唐三 近似词 {}", wordVectorModel.nearest("唐三"));
Console.log("---> 宁荣荣 近似词 {}", wordVectorModel.nearest("宁荣荣"));
}
命令行训练:
$ java -cp hanlp.jar com.hankcs.hanlp.mining.word2vec.Train
word2vec Java toolkit v 0.1c
Options:
训练参数:
-output <file>
使用 <file> 来保存生成的词向量/词组
-size <int>
设置词向量的大小; 默认为 100
-window <int>
设置单词之间的最大跳过长度; 默认为 5
-sample <float>
设置单词出现的阈值。那些在训练数据中出现频率较高的词将被随机下采样;默认值是0.001,有效范围是(0,0.00001)。
-hs <int>
使用分层Softmax;默认为0(不使用)。
-negative <int>
反面例子的数量;默认为5,常用值为3-10(0=不使用)。
-threads <int>
使用<int>线程(默认为本地机器的核心数)。
-iter <int>
运行更多的训练迭代(默认为5次)。
-min-count <int>
这将丢弃出现次数少于<int>的单词;默认为5
-alpha <float>
设置起始学习率;默认情况下,对 skip-gram 来说是0.025,对 CBOW 来说是0.05。
-cbow <int>
使用连续的词包模型;默认为1(skip-gram 模型使用 0)。
-input <file>
使用 <file> 中的文本数据来训练模型
示例:
java -cp hanlp.jar com.hankcs.hanlp.mining.word2vec.Train -input corpus.txt -output vectors.txt -size 200 -window 5 -sample 0.0001 -negative 5 -hs 0 -binary -cbow 1 -iter 3
java -jar
和 java -cp
是 Java 命令的两种不同使用方式,它们有以下区别:
-
java -jar
:用于执行包含可执行代码的 JAR 文件。当使用java -jar
命令时,Java 虚拟机会自动查找并执行 JAR 文件中的main
方法。此方式主要用于执行独立的可执行 JAR 文件,其中 JAR 文件包含了主类和其依赖的类。
示例:java -jar myapp.jar
-
java -cp
:用于指定类路径并执行 Java 类。当使用java -cp
命令时,需要指定要执行的主类的完整类名,并通过-cp
参数指定类路径,即包含所有依赖的类和资源的路径。该方式常用于执行单个类文件或类文件集合,或者执行包含多个依赖的应用程序。
示例:java -cp myapp.jar com.example.Main
总结:
-
java -jar
用于执行独立可执行 JAR 文件,自动查找并执行 JAR 文件中的main
方法。 -
java -cp
用于指定类路径并执行 Java 类,需手动指定要执行的主类的完整类名。
注意:java -jar
和 java -cp
可以结合使用,即执行指定 JAR 文件并指定类路径,例如:java -jar myapp.jar -cp lib/*
。
参考文章:
文本摘要
String content = "程序员(英文Programmer)是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、高级程序员、系统分析员和项目经理四大类。";
List<String> keywordList = HanLP.extractKeyword(content, 5);
Console.log("---> 关键词提取:{}", keywordList);
String document = "算法可大致分为基本算法、数据结构的算法、数论算法、计算几何的算法、图的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法、厄米变形模型、随机森林算法。\n" +
"算法可以宽泛的分为三类,\n" +
"一,有限的确定性算法,这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。\n" +
"二,有限的非确定算法,这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的。\n" +
"三,无限的算法,是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。";
List<String> sentenceList = HanLP.extractSummary(document, 3);
Console.log("---> 自动摘要:{}", sentenceList);
String text = "算法工程师\n" +
"算法(Algorithm)是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。算法工程师就是利用算法处理事物的人。\n" +
"\n" +
"1职位简介\n" +
"算法工程师是一个非常高端的职位;\n" +
"专业要求:计算机、电子、通信、数学等相关专业;\n" +
"学历要求:本科及其以上的学历,大多数是硕士学历及其以上;\n" +
"语言要求:英语要求是熟练,基本上能阅读国外专业书刊;\n" +
"必须掌握计算机相关知识,熟练使用仿真工具MATLAB等,必须会一门编程语言。\n" +
"\n" +
"2研究方向\n" +
"视频算法工程师、图像处理算法工程师、音频算法工程师 通信基带算法工程师\n" +
"\n" +
"3目前国内外状况\n" +
"目前国内从事算法研究的工程师不少,但是高级算法工程师却很少,是一个非常紧缺的专业工程师。算法工程师根据研究领域来分主要有音频/视频算法处理、图像技术方面的二维信息算法处理和通信物理层、雷达信号处理、生物医学信号处理等领域的一维信息算法处理。\n" +
"在计算机音视频和图形图像技术等二维信息算法处理方面目前比较先进的视频处理算法:机器视觉成为此类算法研究的核心;另外还有2D转3D算法(2D-to-3D conversion),去隔行算法(de-interlacing),运动估计运动补偿算法(Motion estimation/Motion Compensation),去噪算法(Noise Reduction),缩放算法(scaling),锐化处理算法(Sharpness),超分辨率算法(Super Resolution),手势识别(gesture recognition),人脸识别(face recognition)。\n" +
"在通信物理层等一维信息领域目前常用的算法:无线领域的RRM、RTT,传送领域的调制解调、信道均衡、信号检测、网络优化、信号分解等。\n" +
"另外数据挖掘、互联网搜索算法也成为当今的热门方向。\n" +
"算法工程师逐渐往人工智能方向发展。";
List<String> phraseList = HanLP.extractPhrase(text, 10);
Console.log("---> 短语提取:{}", phraseList);
输出:
---> 关键词提取:[程序员, 人员, 程序, 分为, 开发]
---> 自动摘要:[无限算法的产生是由于未能确定的定义终止条件, 这类算法在有限的时间内终止, 这类算法在有限的一段时间内终止]
---> 短语提取:[算法工程师, 算法处理, 一维信息, 算法研究, 图像技术, 信息算法, 处理算法, 视频算法, 通信物理, 不同算法]
Mynlp
介绍
MYNLP 是一个 Java 实现的高性能、柔性 API、可扩展的中文 NLP 工具包。
功能:
- 感知机分词
- CORE 二元语言模型&词典分词
- 词性标注
- 通用感知机
- 命名实体识别(人名、地名、组织机构名)
- fastText
- 文本分类
- 新词发现
- 拼音转换&切分
- 简繁体转换
使用
Maven 坐标
<!-- 核心词典(20w+词,500w+二元) 18.2M -->
<dependency>
<groupId>com.mayabot.mynlp.resource</groupId>
<artifactId>mynlp-resource-coredict</artifactId>
<version>1.0.0</version>
</dependency>
<!-- 词性标注模型(感知机模型) 17.5M -->
<dependency>
<groupId>com.mayabot.mynlp.resource</groupId>
<artifactId>mynlp-resource-pos</artifactId>
<version>1.0.0</version>
</dependency>
<!-- 命名实体识别(人名识别、其他NER) 13.4M -->
<dependency>
<groupId>com.mayabot.mynlp.resource</groupId>
<artifactId>mynlp-resource-ner</artifactId>
<version>1.0.0</version>
</dependency>
<!-- 拼音词典、拼音切分模型 272K -->
<dependency>
<groupId>com.mayabot.mynlp.resource</groupId>
<artifactId>mynlp-resource-pinyin</artifactId>
<version>1.1.0</version>
</dependency>
<!-- 繁简体词典 478K -->
<dependency>
<groupId>com.mayabot.mynlp.resource</groupId>
<artifactId>mynlp-resource-transform</artifactId>
<version>1.0.0</version>
</dependency>
<!-- 感知机分词模型 62.4M (非必填) -->
<dependency>
<groupId>com.mayabot.mynlp.resource</groupId>
<artifactId>mynlp-resource-cws</artifactId>
<version>1.0.0</version>
</dependency>
<!-- 自定义扩展词库 2.19M -->
<dependency>
<groupId>com.mayabot.mynlp.resource</groupId>
<artifactId>mynlp-resource-custom</artifactId>
<version>1.0.0</version>
</dependency>
<!-- 工具类 -->
<dependency>
<groupId>com.mayabot.mynlp</groupId>
<artifactId>mynlp</artifactId>
<version>4.0.0</version>
</dependency>
Gradle 坐标 | mynlp-all 依赖 | 文件大小 | 说明 |
---|---|---|---|
com.mayabot.mynlp.resource:mynlp-resource-coredict:1.0.0 | Y | 18.2M | 核心词典(20w+ 词,500w+ 二元) |
com.mayabot.mynlp.resource:mynlp-resource-pos:1.0.0 | Y | 17.5M | 词性标注模型(感知机模型) |
com.mayabot.mynlp.resource:mynlp-resource-ner:1.0.0 | Y | 13.4M | 命名实体识别(人名识别、其他 NER) |
com.mayabot.mynlp.resource:mynlp-resource-pinyin:1.1.0 | Y | 272K | 拼音词典、拼音切分模型 |
com.mayabot.mynlp.resource:mynlp-resource-transform:1.0.0 | Y | 478K | 繁简体词典 |
com.mayabot.mynlp.resource:mynlp-resource-cws:1.0.0 | N | 62.4M | 感知机分词模型 |
com.mayabot.mynlp.resource:mynlp-resource-custom:1.0.0 | N | 2.19M | 自定义扩展词库 |
简单示例
@Test
public void demo3() {
Console.log("======================= 分词");
Lexer lexer = Lexers.coreBuilder()
.withPos()
.withPersonName()
.build();
String[] tj = new String[]{
"给定公历日期和农历日期,获取其相对应的农历日期和公历日期。若该日期不存在,则报错。",
"工作统计",
"待办任务",
"今天天气怎么样",
"下雨了,我心情就不好"
};
for (int i = 0; i < tj.length; i++) {
final String s = tj[i];
Console.log("---> 第 {} 条解析结果为 {}", i, lexer.scan(s).toList());
}
Console.log("======================= 拼音");
PinyinService pinyin = Mynlp.instance().pinyin();
PinyinResult result = pinyin.convert("行者,行长,行不行,行伍,行的");
System.out.println(result.asString());
System.out.println(result.asHeadString(","));
result.fuzzy(true);
System.out.println(result.fuzzy(true).asString());
result.keepPunctuation(true);
System.out.println(result.asString());
Console.log("======================= 摘要");
final String s = "随着科技不断发展、社会不断进步、城市不断扩张,当前我们的城市已经是一个复杂的巨系统,存在政治、经济、文化、教育等多种中心高度融合,市政、环卫、城管、交通等多部门分头治理的现象。推行城市运行一网统管能够打通数据壁垒、整合治理资源、推动城市治理更加智慧化精细化,是推动城市治理体系和治理能力现代化的必由之路。\n" +
"网格化管理和热线服务,是实现城市运行一网统管的两大重要途径。其中,网格化管理是政府城市治理的牛鼻子工作、政务热线是政府倾听市民声音的渠道。以网格化管理为手段、以热线服务为抓手,两大业务优势互补,强化市民诉求和网格数据关联分析,推进主动治理、源头治理,从而助推城市治理精细化水平提升,实现城市高效运行一网统管。\n" +
"研究ChatGPT技术,通过GPT3.5模型训练,深度赋能热线+网格业务,打造问题智能化闭环处置流程体系,实现“全流程监督,将重点问题解决在萌芽期”。同时实现对问题类型、区域、主体等对象的诉求规律预测,为政府主动治理、资源调配提供数据支撑。这将是未来城市运行一网统管、智慧城市建设的新思路、新突破,可以让市民更加积极参与城市治理、政府更加高效履职,从而实现政府服务更加高效、更加到位;管理水平更加精细、更加智能;人民群众更加幸福、更加满足。";
final LexerReader l = new DefaultLexerReader(lexer);
final List<String> result1 = new SentenceSummary(l).summarySentences(s, 10);
final List<String> keyword = new KeywordSummary(l).keyword(s, 10);
Console.log("---> 桔子摘要:{}", result1);
Console.log("---> 关键字摘要:{}", keyword);
}
参考
Segment
Segment 是基于结巴分词词库实现的更加灵活优雅易用,高性能的 java 分词实现。支持词性标注。
Maven 坐标:
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>segment</artifactId>
<version>0.3.0</version>
</dependency>
示例:
final String string = "这是一个伸手不见五指的黑夜。我叫孙悟空,我爱北京,我爱学习。";
List<ISegmentResult> resultList = SegmentHelper.segment(string);
Assert.assertEquals("[这是[0,2), 一个[2,4), 伸手不见五指[4,10), 的[10,11), 黑夜[11,13), 。[13,14), 我[14,15), 叫[15,16), 孙悟空[16,19), ,[19,20), 我爱[20,22), 北京[22,24), ,[24,25), 我爱[25,27), 学习[27,29), 。[29,30)]", resultList.toString());
Similarity
similarity 是由一系列算法组成的 Java 版相似度计算工具包,目标是传播自然语言处理中相似度计算方法。similarity 可用于文本相似度计算、情感倾向分析等,具备工具实用、性能高效、架构清晰、语料时新、可自定义的特点。
Maven 坐标:
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependency>
<groupId>com.github.shibing624</groupId>
<artifactId>similarity</artifactId>
<version>1.1.6</version>
</dependency>
示例:
import org.xm.Similarity;
import org.xm.tendency.word.HownetWordTendency;
public class demo {
public static void main(String[] args) {
double result = Similarity.cilinSimilarity("电动车", "自行车");
System.out.println(result);
String word = "混蛋";
HownetWordTendency hownetWordTendency = new HownetWordTendency();
result = hownetWordTendency.getTendency(word);
System.out.println(word + " 词语情感趋势值:" + result);
}
}
nlp2cron
nlp2cron 是一个将自然语言转换为 cron 表达式的工具包,可用于对话机器人的定时任务以及平常开发中的 cron 表达式识别:每 15 分钟一次 \=\> 0 0/15 * * * ? *
。
Maven 坐标:
<dependency>
<groupId>cn.langpy</groupId>
<artifactId>nlp2cron</artifactId>
<version>2.0.BETA</version>
</dependency>
示例:
public static void main(String[] args) {
/*模型初始化,初始化需要时间,可提前进行初始化*/
CrondModel.init("d:/model");
String test1 = "明早八点";
String test2 = "每天晚上7点开始";
String test3 = "每15分钟一次";
String test4 = "每2小时一次";
String test5 = "每天晚上7点开始";
String test6 = "每天早上7点开始";
String test7 = "上午一点执行";
String test8 = "明天早上8点";
String cron1 = CrondUtil.toCron(test1);
String cron2 = CrondUtil.toCron(test2);
String cron3 = CrondUtil.toCron(test3);
String cron4 = CrondUtil.toCron(test4);
String cron5 = CrondUtil.toCron(test5);
String cron6 = CrondUtil.toCron(test6);
String cron7 = CrondUtil.toCron(test7);
String cron8 = CrondUtil.toDate(test8);
String cron9 = CrondUtil.toDateTime(test8);
String cron10 = CrondUtil.toTime(test8);
/*使用完关闭 如果在web中需要重复使用则不需要关闭*/
CrondModel.close();
//明早八点 转为cron表达式:0 0 8 3 1 ? 2021
//每天晚上7点开始 转为cron表达式:0 0 19 * * ? *
//每15分钟一次 转为cron表达式:0 0/15 * * * ? *
//每2小时一次 转为cron表达式:0 0 0/2 * * ? *
//每天晚上7点开始 转为cron表达式:0 0 19 * * ? *
//每天早上7点开始 转为cron表达式:0 0 7 * * ? *
//上午一点执行 转为cron表达式:0 0 1 * * ? *
//明天早上八点 转为date表达式:2021-01-03
//明天早上八点 转为datetime表达式:2021-01-03 08:00:00
//明天早上八点 转为time表达式:08:00:00
}
xk-time
xk-time 是时间转换,时间计算,时间格式化,时间解析,日历,时间 cron 表达式和时间 NLP 等的工具,使用 Java8,线程安全,简单易用,多达 70 几种常用日期格式化模板,支持 Java8 时间类和 Date,轻量级,无第三方依赖。
Maven 坐标:
<dependency>
<groupId>com.github.xkzhangsan</groupId>
<artifactId>xk-time</artifactId>
<version>3.2.4</version>
</dependency>
<!-- Mini版本不包含 time nlp 功能,更简洁。 -->
<dependency>
<groupId>com.github.xkzhangsan</groupId>
<artifactId>xk-time</artifactId>
<version>3.2.4.Mini</version>
</dependency>
示例:
package com.xkzhangsan.time.test;
import com.xkzhangsan.time.calculator.DateTimeCalculatorUtil;
import com.xkzhangsan.time.formatter.DateTimeFormatterUtil;
import com.xkzhangsan.time.nlp.TimeNLP;
import com.xkzhangsan.time.nlp.TimeNLPUtil;
import com.xkzhangsan.time.utils.CollectionUtil;
import org.junit.Test;
import java.util.List;
import java.util.concurrent.*;
/**
* 时间自然语言解析工具类测试
*
* @author xkzhangsan
*/
public class TimeNLPUtilTest {
/**
* 常见实例
*/
@Test
public void timeNLPTest() {
List<TimeNLP> timeNLPList = TimeNLPUtil.parse("去年5月");
System.out.println("去年5月");
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(timeNLPList.get(0).getTime()) + "-"
+ timeNLPList.get(0).getIsAllDayTime());
timeNLPList = TimeNLPUtil.parse("上月21日");
System.out.println("上月21日");
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(timeNLPList.get(0).getTime()) + "-"
+ timeNLPList.get(0).getIsAllDayTime());
timeNLPList = TimeNLPUtil.parse("前年3月21日");
System.out.println("前年3月21日");
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(timeNLPList.get(0).getTime()) + "-"
+ timeNLPList.get(0).getIsAllDayTime());
timeNLPList = TimeNLPUtil.parse("昨天10点去公司开会");
System.out.println("昨天10点去公司开会");
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(timeNLPList.get(0).getTime()) + "-"
+ timeNLPList.get(0).getIsAllDayTime());
timeNLPList = TimeNLPUtil.parse("前天下午3点");
System.out.println("前天下午3点");
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(timeNLPList.get(0).getTime()) + "-"
+ timeNLPList.get(0).getIsAllDayTime());
timeNLPList = TimeNLPUtil.parse("大前天上午5点");
System.out.println("大前天上午5点");
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(timeNLPList.get(0).getTime()) + "-"
+ timeNLPList.get(0).getIsAllDayTime());
timeNLPList = TimeNLPUtil.parse("3个月之前");
System.out.println("3个月之前");
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(timeNLPList.get(0).getTime()) + "-"
+ timeNLPList.get(0).getIsAllDayTime());
timeNLPList = TimeNLPUtil.parse("早上六点起床");
System.out.println("早上六点起床");
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(timeNLPList.get(0).getTime()) + "-"
+ timeNLPList.get(0).getIsAllDayTime());
timeNLPList = TimeNLPUtil.parse("周一开会");
System.out.println("周一开会");
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(timeNLPList.get(0).getTime()) + "-"
+ timeNLPList.get(0).getIsAllDayTime());
timeNLPList = TimeNLPUtil.parse("下下周一开会");
System.out.println("下下周一开会");
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(timeNLPList.get(0).getTime()) + "-"
+ timeNLPList.get(0).getIsAllDayTime());
timeNLPList = TimeNLPUtil.parse("6:30 起床");
System.out.println("6:30 起床");
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(timeNLPList.get(0).getTime()) + "-"
+ timeNLPList.get(0).getIsAllDayTime());
timeNLPList = TimeNLPUtil.parse("6-3 春游");
System.out.println("6-3 春游");
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(timeNLPList.get(0).getTime()) + "-"
+ timeNLPList.get(0).getIsAllDayTime());
timeNLPList = TimeNLPUtil.parse("6月3春游");
System.out.println("6月3春游");
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(timeNLPList.get(0).getTime()) + "-"
+ timeNLPList.get(0).getIsAllDayTime());
timeNLPList = TimeNLPUtil.parse("明天早上跑步");
System.out.println("明天早上跑步");
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(timeNLPList.get(0).getTime()) + "-"
+ timeNLPList.get(0).getIsAllDayTime());
timeNLPList = TimeNLPUtil.parse("本周日到下周日出差");
System.out.println("本周日到下周日出差");
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(timeNLPList.get(0).getTime()) + "-"
+ timeNLPList.get(0).getIsAllDayTime());
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(timeNLPList.get(1).getTime()) + "-"
+ timeNLPList.get(1).getIsAllDayTime());
timeNLPList = TimeNLPUtil.parse("周四下午三点到五点开会");
System.out.println("周四下午三点到五点开会");
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(timeNLPList.get(0).getTime()) + "-"
+ timeNLPList.get(0).getIsAllDayTime());
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(timeNLPList.get(1).getTime()) + "-"
+ timeNLPList.get(1).getIsAllDayTime());
timeNLPList = TimeNLPUtil.parse("《辽宁日报》今日报道,7月18日辽宁召开省委常委扩大会,会议从下午两点半开到六点半,主要议题为:落实中央巡视整改要求。",
"2016-07-19-00-00-00");
System.out.println("《辽宁日报》今日报道,7月18日辽宁召开省委常委扩大会,会议从下午两点半开到六点半,主要议题为:落实中央巡视整改要求。");
for (int i = 0; i < timeNLPList.size(); i++) {
System.out.println("时间文本:" + timeNLPList.get(i).getTimeExpression() + ",对应时间:"
+ timeNLPList.get(i).getTimeNormFormat());
}
}
}
sensitive-word
sensitive-word 是一个基于 DFA 算法实现的高性能 java 敏感词工具框架。请勿发布涉及政治、广告、营销、翻墙、违反国家法律法规等内容。
Maven 坐标:
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>sensitive-word</artifactId>
<version>0.2.1</version>
</dependency>
示例:
// 判断是否包含敏感词
final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";
Assert.assertTrue(SensitiveWordHelper.contains(text));
// 返回第一个敏感词
final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";
String word = SensitiveWordHelper.findFirst(text);
Assert.assertEquals("五星红旗", word);
// SensitiveWordHelper.findFirst(text) 等价于:
String word = SensitiveWordHelper.findFirst(text, WordResultHandlers.word());
// WordResultHandlers.raw() 可以保留对应的下标信息:
final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";
IWordResult word = SensitiveWordHelper.findFirst(text, WordResultHandlers.raw());
Assert.assertEquals("WordResult{word='五星红旗', startIndex=0, endIndex=4}", word.toString());
// 返回所有敏感词
final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";
List<String> wordList = SensitiveWordHelper.findAll(text);
Assert.assertEquals("[五星红旗, 毛主席, 天安门]", wordList.toString());
// 返回所有敏感词用法上类似于 SensitiveWordHelper.findFirst(),同样也支持指定结果处理类。
// SensitiveWordHelper.findAll(text) 等价于:
List<String> wordList = SensitiveWordHelper.findAll(text, WordResultHandlers.word());
// WordResultHandlers.raw() 可以保留对应的下标信息:
final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";
List<IWordResult> wordList = SensitiveWordHelper.findAll(text, WordResultHandlers.raw());
Assert.assertEquals("[WordResult{word='五星红旗', startIndex=0, endIndex=4}, WordResult{word='毛主席', startIndex=9, endIndex=12}, WordResult{word='天安门', startIndex=18, endIndex=21}]", wordList.toString());
// 默认的替换策略
final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";
String result = SensitiveWordHelper.replace(text);
Assert.assertEquals("****迎风飘扬,***的画像屹立在***前。", result);
// 指定替换的内容
final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";
String result = SensitiveWordHelper.replace(text, '0');
Assert.assertEquals("0000迎风飘扬,000的画像屹立在000前。", result);
// 更多特性,参考官方文档.....
Elasticsearch 分词器(HanLP)
elasticsearch-analysis-hao
一个非常 hao 用的 Elasticsearch 中文分词器插件。功能特性:
- 支持复杂汉字,有的汉字在 java 中长度不是 1,比如𡃁,而 IK 等不支持。
- 支持单字分词和搜索,而 ik_max_word 模式不支持。
支持自定义长度分词,适合短文本下的人名等识别。
根据空格标点符号字母数字等分隔后的汉字文本长度
<=autoWordLength
会自动识别为一个词语。- 支持 emoji 搜索
相比 IK,比 IK 更智能,更准确。
比如 IK
ik_max_word
是穷举所有可能词,导致搜索一些不相关的也会被搜到。
任性冲动过
分词结果居然有 任性、性冲动、动过,那么搜性冲动
就会把这个 doc 搜索到。南京市长江大桥,结果是南京市、市长、长江大桥,那么搜
市长
会把这个 doc 搜索到。而 hao 分词器不会,通过词频计算最短路,识别出可能性最高的词组。还可以根据自己场景,随意调节词频。
- ik_smart 分词结果不是 ik_max_word 的子集,hao_search_mode 分词结果是 hao_index_mode 分词结果的子集
- 相比 HanLp,比 HanLP 更轻量,分词更可控,没有一些智能的人名等预测功能,可能会导致分词不稳定不准确,机器学习对于长短文本不同,预测分词结果也不同。并且 HanLP 也没有官方的 ES 插件。
- 根据词频计算最短路,穷举出可能的词,而不是所有的词,如果穷举的词不对,可以调词频来纠正,词频文件是可读性更好的 txt 文件
- 支持元词,比如俄罗斯不会再拆分成俄和罗斯(罗斯是常用人名)。这样搜罗斯就不会把俄罗斯相关文档召回
- 但是不支持词性
版本对照:
- master:ES 最新稳定版
- v7.17.1:7.17.1
- vX.Y.Z:X.Y.Z
ElasticSearch-analysis-hanlp
ElasticSearch-analysis-hanlp 是基于 HanLP 的 Elasticsearch 中文分词插件,核心功能:
- 兼容 ES 5.x-7.x;
- 内置词典,无需额外配置即可使用;
- 支持用户自定义词典;
- 支持远程词典热更新(待开发);
- 内置多种分词模式,适合不同场景;
- 拼音过滤器(待开发);
- 简繁体转换过滤器(待开发)。
插件版本和 ES 版本一致,直接下载对应版本的插件进行安装即可。
- 插件开发完成时,最新版本已经为 6.5.2 了,所以个人只对典型的版本进行了测试;
- 5.X 在 5.0.0、5.5.0 版本进行了测试;
- 6.X 在 6.0.0、6.3.0、6.4.1、6.5.1 版本进行了测试;
- 7.X 在 7.0.0 版本进行了测试。
hanlp-tokenizer
hanlp-tokenizer 是基于 HanLP 自然语言处理包的 Elasticsearch 分词器,功能包括:
- 本分词器使用 HanLP 提供的维特比分词
- 屏蔽了本地配置用户词典
- 增加同义词索引功能
- 增加远程词典热更新(用户词典,停词典,同义词典)
注:目前支持的 Elasticsearch 版本为 2.3.5 和 5.6.3,其他版本请修改 plugin-descriptor.properties 文件的 Elasticsearch 版本。
Text2vec
text2vec 文本向量表征工具,把文本转化为向量矩阵,实现了 Word2Vec、RankBM25、Sentence-BERT、CoSENT 等文本表征、文本相似度计算模型,开箱即用。
安装:
pip install torch # conda install pytorch
pip install -U text2vec
# 或
pip install torch # conda install pytorch
pip install -r requirements.txt
git clone https://github.com/shibing624/text2vec.git
cd text2vec
pip install --no-deps .
基于 pretrained model
计算文本向量:
>>> from text2vec import SentenceModel
>>> m = SentenceModel()
>>> m.encode("如何更换花呗绑定银行卡")
Embedding shape: (768,)
数据库
Milvus(向量数据库)
Milvus 是一个开源的向量数据库,旨在提供高效的向量存储和相似度搜索功能。它的设计目标是处理大规模向量数据,如图像、文本、音频等领域中的向量。它提供了一种高效的存储引擎,可以快速地插入和检索向量数据,并支持复杂的相似度搜索操作。
主要特点包括:
- 高性能:Milvus 使用了一系列的技术手段来提高向量数据的存储和检索性能,包括多种索引结构和查询优化算法。这使得 Milvus 能够在大规模数据集上实现快速的相似度搜索。
- 多种数据类型支持:Milvus 不仅支持数值型向量,还支持文本向量和二进制向量。这使得它适用于各种类型的应用场景。
- 分布式部署:Milvus 支持在多台服务器上分布式部署,以实现高可用性和扩展性。这使得它能够处理大规模的向量数据,并支持并行查询操作。
- 易用性:Milvus 提供了易于使用的 Python 和 RESTful API 接口,使开发人员可以方便地集成和使用 Milvus 数据库。
Milvus 在许多应用领域都有广泛的应用,包括图像搜索、推荐系统、人脸识别等。它的高性能和灵活性使得它成为处理大规模向量数据的首选数据库之一。
Neo4j(图数据库)
Neo4j 是一种图数据库,图数据库是以图结构的形式存储数据的数据库。 它以节点,关系和属性的形式存储应用程序的数据。与传统的搜索引擎相比,它在处理具有复杂关系的数据时具有优势。虽然 Neo4j 并非专门设计用于全文搜索,但它可以用于知识库检索和问答系统的一些方面。以下是 Neo4j 在知识库检索中的应用示例:
- 知识图谱建模:使用 Neo4j 可以将知识库中的数据建模为图形结构,其中实体作为节点,关系作为边。通过这种方式,可以更好地表示实体之间的关系和属性,从而构建一个丰富的知识图谱。
- 问题解析和匹配:使用 Cypher 查询语言,可以编写灵活的查询来解析用户的问题,并从图数据库中检索相关的知识。通过遍历节点和边的关系,可以找到与用户问题最相关的节点,并返回相应的答案或建议。
- 关系推理和推荐:基于 Neo4j 的图数据库,可以进行关系推理和推荐。通过分析节点之间的关系,可以发现隐藏的模式、推断潜在的关联,并为用户提供个性化的推荐和建议。
- 可视化展示:Neo4j 具有强大的图形可视化能力,可以将知识库的图谱数据以直观的方式展示出来。这有助于用户更好地理解知识之间的关系,并进行交互式的浏览和探索。
需要注意的是,Neo4j 主要面向图形数据模型和图分析,相对于专门用于全文搜索的搜索引擎,它在文本检索和相关性排序方面可能不如搜索引擎那么高效。因此,如果您的主要目标是实现高级全文搜索功能,可以将 Neo4j 与其他搜索引擎(如 Elasticsearch)结合使用,以充分发挥它们各自的优势。
其他
elastiknn
Elasticsearch 的近邻搜索插件。存储向量并使用精确和近似算法运行相似性搜索。
查看已安装插件
# 方式一:直接访问以下地址
http://192.168.0.88:9200/_cat/plugins
master analysis-hao 7.14.0
master analysis-ik 7.14.0
master analysis-pinyin 7.14.0
master elastiknn 7.14.0.0
# 方式二:服务器敲命令
[root@fa4f68cbccd9 elasticsearch]# elasticsearch-plugin list
analysis-hao
analysis-ik
analysis-pinyin
elastiknn
准备数据
创建索引
PUT elastiknn-index-test { "settings": { "number_of_shards": 12, "number_of_replicas": 0, "analysis": { "analyzer": { "ik_analyzer": { "type": "custom", "tokenizer": "ik_max_word" } } } }, "mappings": { "properties": { "title_vec": { "type": "elastiknn_dense_float_vector", "elastiknn": { "dims": 512, "model": "lsh", "similarity": "cosine", "L": 99, "k": 1 } }, "title": { "type": "text" }, "content": { "type": "text" } } } }
插入几条测试数据
PUT elastiknn-index-test/_doc/1 { "title_vec": [0.003425748, 0.0349592, 0.034549166, 0.0022239508, 0.060810618, -0.022429558, -0.07004068, -0.001433827, 0.030713845, 0.011735543, -0.02168091, 0.052747343, -0.003032838, 0.07201349, -0.009121663, -0.035253286, -0.003087171, 0.033998333, -0.033415455, -0.020261392, 0.016096197, -0.055096716, -0.03921775, 3.2432762E-4, 0.048466, -0.020422108, 0.012400874, 0.048314445, 0.022852462, 0.016534192, -0.0791529, 0.04423471, 0.028590905, -0.020271868, -0.037338763, -0.053555593, 0.011092596, -0.026704505, -0.024752602, 0.0011142232, -0.040562928, 0.037982084, 0.0057855425, -0.0049113855, 0.022291979, -0.056476884, 0.029644014, -0.019107254, -0.003555308, -0.009681879, -0.07766024, 0.0070911874, -0.04910793, 0.0027092798, -0.0016745668, -0.028527947, -0.038718343, -0.009667692, -0.020795133, -0.012676213, -0.013904908, -0.017796164, -0.026805168, -0.14529184, 0.005773016, 0.011728189, -0.0047366945, -0.035389133, 0.0019069307, 0.020702973, -0.0055385977, 0.040782254, 0.009009192, 0.040845815, -0.028374115, 0.054288667, -0.011138878, -0.036187347, 0.011442376, -0.0132880295, 0.073753305, -0.097925894, 0.03636818, -0.04072707, 0.012919646, 0.05003554, 0.055168953, -0.012209735, -0.019181276, -0.03257699, -0.058053195, -0.025219388, -0.021497307, -0.001162345, -0.035980176, -0.035884265, -0.033100065, -0.00829503, -0.047079828, -0.02395855, -0.021471633, -0.0038828822, -0.0058413167, -0.015221235, 0.027641736, -0.029010223, 3.8878803E-4, 0.005856648, 2.0493125E-4, 0.02283165, 0.0145955905, 0.11387214, -0.025491737, 0.01645211, 0.061243463, -0.02927204, 0.03987121, 6.2265707E-4, 0.12808461, 0.048372313, -0.04586932, 5.218875E-4, 0.03338346, 0.022554236, -0.017504048, -0.045141526, -0.008534511, -0.017828498, 0.036588904, -0.016354308, 0.007750258, -0.003903245, -1.7327466E-4, -0.0100838, 0.063716546, 0.024896173, 0.0042410623, -0.107530154, 0.0030101123, 0.05138916, -0.003680045, 0.0035677121, 0.03090353, -0.028802726, -0.057706047, -0.0077695334, -0.030067058, -0.0073236115, 0.028622106, -0.020661816, -0.006895617, -0.087078355, 0.020292405, -0.09136877, 0.077871025, 0.034251146, -0.04043043, 0.009749394, -0.060770616, -0.014484504, -0.033462424, -0.04498533, -0.008569162, 0.029500335, -0.02620329, 0.016665585, 0.006792792, -0.110291496, 0.038737524, -0.0316104, -0.08394115, 0.0625756, -0.03423133, -0.029469164, 0.03100374, 0.04309461, -0.074423, -0.028166816, -0.009060677, 0.027572004, 0.005048868, -0.012845816, 0.017110486, 0.015368103, -0.055320587, 0.0064367545, -0.04773569, 0.033720955, 0.07017167, -0.012598084, 0.018722724, -0.033211257, -0.052664973, 0.004498666, -0.023347132, -0.039391857, 0.048897594, 0.029863205, -0.008016134, 0.027602006, 0.027358193, -0.025875986, 0.025465434, -0.02878025, 0.021779213, 0.042077173, -0.011555729, -0.026198916, 0.032100078, -0.043048263, -0.027187653, -0.0402725, -0.020369655, -0.013327858, 1.6972772E-5, -0.003885551, -0.041187145, -0.014162298, 0.028868157, -0.01037627, 0.037233584, -0.018804729, 0.007887838, -0.037073694, -0.05942401, 0.01240634, 0.0221232, -0.028147424, 0.0073892097, 0.03958656, -0.034933493, -0.030155692, 0.009021838, 0.002932108, 0.012281143, 4.1424247E-4, 0.027152574, 0.06452393, 0.023870597, 0.017925534, 0.014357434, -0.106567256, 0.008429156, 0.036298342, -0.028493863, 0.030789679, 0.015373285, 0.0027190328, 0.0011485133, 0.01907994, -0.017132722, -0.015111511, -0.006247805, -0.08744835, 0.020638978, 0.03195406, 0.014723591, 0.015694404, 0.021649327, -3.8856504E-4, -0.004523996, -0.0088082235, 0.019244773, 0.005211741, -0.009596286, -0.012487133, 0.02576933, -0.023590969, -0.07383563, 0.0052784397, -0.019830242, -0.032136276, -0.0559001, -0.027888171, 0.012820674, 0.042624634, 0.020084862, 0.013775034, 0.0018024327, -0.0030583849, 0.008733587, 0.03011925, -0.010819768, 0.01846895, -0.027928192, 0.054508165, 0.025518509, 0.015765147, 0.0055009336, 0.008995844, -0.001397986, 0.013922541, -1.4566258E-4, 0.014703157, 0.00892575, -0.025066845, -0.012928029, -0.0060389563, 0.045801383, 0.018579468, 3.1862292E-4, -0.0035438025, 0.028089356, 0.0033972785, -0.09361243, -0.05980632, 0.040125515, 0.05354448, -0.028163841, 0.05078453, 0.032952312, -0.0362255, -0.040162623, 0.029067608, 0.05469056, -0.057086382, -0.043093912, -0.052694004, -4.773717E-4, 0.010348781, -0.002899653, -0.039878853, -0.0031686411, -0.017416924, 0.0023792672, 0.05185327, 0.052650593, 0.0147140045, 0.00534939, 0.041315783, -0.04911213, 0.015727231, 0.03869164, 0.040212993, -0.027982218, 0.015433941, -0.023373008, -0.0010281625, 0.03179473, 0.0809107, -0.006591896, 0.07492227, 0.051036846, 0.05243999, 0.012217927, -5.8672315E-4, -0.05568167, -0.045633372, 0.004958849, 0.06414878, -0.08234718, 0.055348992, 0.026701692, -0.03219593, -0.031503137, -0.05069124, -0.06783226, 0.0054454487, -0.01793748, -0.048341606, -0.008448702, -7.011754E-4, -0.025374316, 0.048590273, -0.03305374, -0.052704513, 0.052871093, -0.034879833, -0.028176619, -0.008617678, 0.020152742, -0.043748375, 0.066275075, -0.0053646383, -0.020060522, -0.011765275, -0.016720584, -0.11795565, -0.0029911115, -0.06743606, 0.011309156, 8.773381E-4, -0.0075211884, 0.015839778, -0.019497382, 0.0072432347, 0.03325934, -0.038977157, 0.036526572, 0.01263625, 0.031347763, -0.038133346, -0.0046586976, 0.012437723, -0.07406788, -0.026325636, -0.039441943, 0.033739123, -0.02652633, 0.01418932, 0.0115834875, 0.008360267, 0.028494984, 0.010411456, -0.0013066668, -0.02228452, 0.08229267, 0.0063977535, -0.09075892, 0.015774589, -0.012635471, -0.013978461, -0.047774613, -0.036760166, -0.008622342, 0.041786294, 0.031008786, 0.018403547, -0.018363375, -0.03071931, 0.028448794, 0.027587907, -0.031309966, -0.060857788, -0.009144435, -0.009149089, -0.0138160605, -0.023221325, 0.041510608, -0.012421435, -0.0013590785, -0.021834265, 0.0318156, -0.026229814, -0.012133902, 0.021569753, 0.029152462, 0.0062848297, 0.021908771, -0.062652424, -0.019044742, 0.07203413, 0.0645531, 0.064836435, 0.013075323, -0.014966318, -0.013762404, -0.037492, -0.0214157, 0.013161554, 0.003251, 0.04308545, 0.028279785, 0.007946551, -0.023538174, 0.017218951, 0.040116537, 0.0050127236, 0.0068970826, 0.020377496, 0.029326467, 0.03255159, 0.048297945, 7.0397765E-4, 0.017532872, -0.0066716787, -0.03623868, 0.0082028955, 0.007304976, 0.053477094, -0.04715973, 0.026167873, -0.05383834, -0.004187588, 0.006051728, -6.76833E-4, -0.0053422535, -0.009363592, 0.07374679, -0.057454553, -0.0021901669, 0.009387111, -0.057686746, -0.022387888, -0.009012612, 0.025805265, -0.02442889, 0.014319615, -0.006989777, 0.06344666, 0.040135924, -0.012629844, 0.0113826515, 0.044885244, -0.059586156, 0.0048252083, -0.035091937, -0.03562694, -0.040692493, -0.062527485, -0.043084674, 0.009344234, 0.03516395, 0.042935252, -0.041356236, 0.027835313, 5.2603515E-4, 0.0030535415, 0.0016332692, -0.07045216, 0.013352063, 0.012707965], "title": "如何在Python中实现图像分类", "content": "图像分类是一种机器学习任务,用于将图像分为不同的类别。在Python中,可以使用深度学习框架如TensorFlow或PyTorch来实现图像分类算法。" } PUT elastiknn-index-test/_doc/2 { "title_vec": [0.0117143085, 0.045121565, 0.09191994, 0.00710566, 0.10173434, -0.008269696, 0.030694166, -0.08023042, 0.040613037, 5.408306E-4, -0.0678575, 0.009960665, 0.017735811, 0.024963507, -0.0032798927, -0.051621184, 0.02022438, 0.06552727, 0.017096853, 0.017405674, -0.0022419635, -0.024945313, -0.06346019, 0.010615516, 0.04126783, 0.007176247, -0.04579749, 0.002776335, -0.0082544815, 0.03610969, -0.0852345, 0.010771294, -0.0029955162, -0.01804644, -0.06935482, -0.018124674, 0.036978412, -0.03874629, -0.068938084, 0.029514022, -0.022372592, -9.625907E-4, 0.024773112, -0.014288258, 0.035850678, -0.05834622, 0.047468852, -0.014909751, -0.013359034, -0.0027257034, -0.003975198, -0.0034708378, 7.885395E-4, 0.04721367, 0.013148114, -0.033280034, -0.026391065, -0.049792975, 0.038625944, -0.033596966, 0.024053974, 0.06774398, -0.033422623, -0.056706488, -0.026988262, -0.033531144, 0.026621416, 0.0075515034, 0.006276171, 0.024225065, -0.034884002, 0.010733044, 0.012259465, -0.004880513, -0.028888768, 0.009233602, -0.026490841, -0.0038679505, -0.0046571405, 0.0012432153, 0.037743468, -0.0511176, 9.6163567E-4, -0.05004952, -4.5989078E-4, -5.1093794E-4, 0.058971576, 0.010198453, -0.02887652, -0.012081953, 0.016507419, 0.020551708, -0.025001513, -0.02773335, -0.06560827, -0.04375667, -0.021418005, 0.06252699, -0.068086006, -0.013108571, 0.018477185, -0.0048998264, 0.008991208, -0.03792886, 0.075551465, -0.010586611, 2.126107E-4, -0.050966423, -0.028227802, 0.03515584, -0.046834193, 0.11370123, 0.024434015, 0.020431882, 0.042476565, -0.014892725, -0.003985886, 0.059183728, 0.119265065, -0.0011428657, 0.03052966, 0.035903666, 0.013500129, 0.037276782, -0.018733403, 0.024424113, -0.043611906, -0.028979385, -0.023797715, 0.03195113, 0.026660897, -0.03994073, 0.009719538, -0.020009007, 0.058797523, -0.014668489, 0.047455758, 0.01267241, 0.050841488, 0.06769339, -0.055657435, 0.03294857, -0.0025667865, -0.039912347, -0.03248613, -0.021620722, 0.009903828, 0.0035388812, 0.00851918, -0.020379512, 0.013021799, -0.08282925, -0.01132819, -0.03473937, 0.01885625, -0.0121050505, 0.031654138, 0.028466877, 0.032860592, -0.007829607, -0.010235609, -0.07666566, -0.040454138, 0.010658153, 0.0046947543, 0.024346089, -0.0010503771, -0.11209227, -0.00612948, 0.010487131, -0.11789431, 0.08106747, -0.04559209, -0.07589063, 9.0824394E-4, 0.016997071, -0.05926595, 0.03505642, 0.062483832, 0.013590767, 0.053455405, -8.4429706E-4, -0.011715628, 0.0034937256, 0.008201729, 0.058486883, -0.030845467, 0.022439579, 0.020314703, 0.012636989, -0.029004734, 0.007914829, -0.002141122, -0.053387873, -0.0069468436, 0.04166113, 0.054034412, 0.05492169, -0.016120603, -0.036476914, 0.004447421, 0.003561287, 0.031071331, -0.029407015, 0.02269256, 3.9890423E-4, 0.007146244, -0.0208965, 0.015234989, -0.010426937, -0.008766269, 0.0144377155, -0.017882215, -0.031066203, 0.018730363, 0.019393297, 0.012934468, 0.010574833, -0.007553376, -0.01052809, -0.060938537, -0.024685156, -0.036083933, 0.019071005, -0.059797686, -0.004272712, -0.0032094757, -0.057068206, 0.0063553816, 0.04246625, -0.037045427, 9.333572E-4, 0.06806911, -0.028314348, 0.01807504, 0.040009916, 0.025617162, 0.012296813, 0.048575666, 0.05792758, 0.0181828, -0.09494853, -0.010511767, -0.0058425944, -0.06316953, -0.019733034, 0.03783072, 0.028139684, -0.0043169777, 0.014565453, -0.019038588, 0.00998606, 0.033683494, 0.011317593, 0.033992592, 0.0053655817, 0.01107605, 0.0030383733, 0.0036201268, 8.42958E-4, 0.057126924, -0.015587716, -0.0012857222, 0.07736839, 0.004825883, 0.048844088, 0.015585583, -0.038394477, -0.060490374, -0.04555572, -0.045241755, -0.007222421, -0.037498824, -0.06075751, 0.051257756, 0.01226002, -0.012768651, 0.07517634, -6.5865583E-4, -0.015895523, -0.021724261, -7.6792E-4, 0.012344259, 0.0091987075, -0.058543753, 0.06907949, -0.025212744, 0.040837668, 0.0046373694, 0.0018736622, 0.048904162, 0.033207558, -0.026885064, 0.0018661866, -0.0030907537, -0.037033476, -0.019643692, -0.009424732, 0.052872445, 0.03940382, -0.03180674, -0.03984017, -0.014511414, -0.042511046, -0.08959477, 0.013552238, 0.008722365, 0.024217544, -0.07459556, 0.028619433, -0.038014777, 0.044403173, -0.03306039, 0.007870692, -0.009769034, -0.021419631, -0.038302805, 0.009293837, 0.022912279, 0.008031682, 8.1134896E-4, -0.026267486, 0.028896447, -0.0027557183, 0.012683719, 0.06473891, 0.024489367, 0.0036631813, -0.013814428, 0.020309508, -0.07892576, -0.018932587, -3.1196815E-4, 0.02800487, -0.021794366, 0.033176254, -0.044635642, -0.0054335548, 0.08097203, -0.029633824, 0.008697728, 0.07016618, 0.036964465, -0.011894994, -0.028811816, 0.035276312, -0.0074575255, 0.011733262, 0.018111786, -0.013496318, -0.053402975, 2.560399E-4, 0.004600753, 0.024878355, -0.055244442, 0.0033579913, -0.03698139, 0.03778507, -0.05911295, -0.022704894, 4.3038322E-4, 0.015157517, -8.773331E-4, 0.046883848, -0.029940244, -0.06293744, 0.029528368, 0.009371632, 0.0033297667, 0.0027188316, -0.008704155, 0.0358954, 0.050830826, -0.034152627, 0.054006435, -0.025707228, -1.08596054E-4, -0.06489064, -0.008094756, -0.037734933, 0.012544428, -0.00720663, -0.038805187, 0.031188434, 0.01687598, -0.006368296, 0.05238537, -0.049742915, -0.052619614, -0.027405418, 0.022044819, 0.0057760994, -0.013791722, -0.023093732, -0.035344556, -0.015110196, -0.048774548, -0.018002523, -0.0056335353, 0.066452056, 0.0072636213, 0.0012199358, 0.069724694, 0.005817949, 0.022240497, -0.015321118, 0.0820662, 0.028178591, -0.08539435, 0.0019945367, 0.02006667, -0.0061124275, -5.12594E-4, -0.03549404, -0.00795016, -0.0016249074, -0.012301801, 0.012492642, -5.1937666E-4, -0.016898623, 0.019816255, 0.05134753, 0.018421471, 0.009171907, 0.017838158, 0.043232366, 0.026528297, -0.028303025, -0.016405558, 0.0103685865, -0.031022625, 0.065529704, 0.041098703, -0.034336, -0.05352473, 0.020121042, -0.012044331, 0.0034804214, 0.021412788, -0.026181115, -0.026110137, 0.09393993, 0.0037390857, 0.06305225, -0.037513845, 0.017198782, 0.030384552, 0.02973615, 0.014410185, 0.018699534, 0.044680133, 0.043075275, -0.01910853, 0.004449705, 0.002680912, -0.013235103, 0.036758747, 0.01017896, -0.02270456, -0.03146837, -0.035153992, 0.027544972, -0.0012317606, 0.024501756, 0.059981886, -0.031208033, -0.058444165, -0.0041939807, -0.025207335, 0.01704825, -0.03662345, 0.023225486, -0.057966754, 0.01924193, 0.029117774, -0.006828361, -0.0072594383, 0.0031118144, 0.04780706, -0.020960245, -0.011914286, -0.016184784, -0.07688063, -0.04833374, 0.012004205, 0.005326569, -0.037733167, 0.03464075, 0.030300675, -0.0024853563, -0.00643714, 0.016070087, 0.031160934, -0.0027925444, 0.011567297, -0.043394674, -0.017964955, -0.02457455, 0.009044433, -0.051248875, -0.036129963, 0.02006153, 0.019607674, -0.029285472, -0.06072313, 0.03174668, -0.035128094, -0.012177203, 0.0053611994, -0.01820117, 0.010682981, 0.0079119] , "title": "使用Elasticsearch进行全文搜索", "content": "Elasticsearch是一种开源搜索和分析引擎,提供了强大的全文搜索功能。通过使用Elasticsearch的查询语法和过滤器,可以快速地搜索和检索大量文档。" } PUT elastiknn-index-test/_doc/3 { "title_vec": [0.016784616, 0.020519117, 0.030111508, -0.028519263, 0.07518433, -0.051196612, -0.016427713, -0.03274426, -0.006999862, 0.013230742, 0.0014656008, 0.0106661925, -0.02636794, 0.024049409, -0.021129115, -0.018221525, 0.015097005, 0.06026247, 0.009421245, 0.006248035, 0.03560257, -0.04287118, -0.01708559, 0.02073055, 0.03344506, -0.02307966, -0.0058548474, 0.065074705, -0.008398853, 0.0012660566, -0.09577061, 0.03543353, 0.0024966393, 0.02084241, -0.042799987, -0.06250128, 0.01739693, -0.0025754948, -0.025383381, 0.05294736, -0.07126671, 0.010699218, 0.040031053, -0.0029111512, 0.020760858, -0.028012006, 0.020912662, -0.017607598, -0.036782715, -0.0013501794, -0.035480805, -0.008612508, 0.016199343, -0.016624006, 0.048927076, -0.020968508, -0.02205474, -0.07989428, 0.002516207, 0.027721284, -0.010456964, -0.0017861929, 0.0017328408, -0.02443157, -0.010273274, 0.073678784, 0.012320716, -0.01125913, 0.010977987, 0.014950072, 0.02413759, 0.06941475, -0.010831938, 0.010134839, -0.024368586, 0.0034789941, -0.023567665, -0.05385553, 0.026537031, -0.024497297, 0.06428117, -0.054112148, 0.02833654, -0.009830102, 0.0381592, 0.030345818, 0.06484088, -0.014410146, -0.025190039, -0.034735322, -0.033459432, 0.013515908, -0.065364145, -0.0046312897, -0.04968972, -0.049516045, 0.032647893, -0.012442322, -0.07077929, 0.024445178, -0.036758445, 0.002506368, -0.02322982, -0.065954074, 0.0023990714, -0.037555844, 0.017565237, 0.016743861, -0.024668787, 0.045114752, -0.03365812, 0.13232008, 0.037784528, -0.031255182, 0.057812512, 0.032824196, -0.027275931, 0.014450303, 0.13421698, 0.015463857, -0.0011247124, 0.020310704, 0.022275193, 0.012187366, -0.020215938, 0.013493274, 0.008388018, -0.017624404, 0.026022287, -0.016615424, -0.0019567527, 0.041329436, -0.012479547, -0.046005387, 0.043853868, 0.0050776657, 0.0019343727, -0.07607299, 0.0027859057, 0.079697326, 0.0058062593, 0.001494177, 0.033128537, 0.022172192, -0.030957298, -0.05897137, 8.3054433E-4, 0.034674577, 0.005550485, -0.012436947, 0.009744706, -0.096184924, 0.010737939, -0.030373301, 0.042013187, 0.03452175, 0.008070757, 0.016847495, -0.014018681, 0.054120626, -0.014965496, -0.05285822, -0.003829602, 0.028578814, 0.0036061455, 0.043356184, -0.052930538, -0.11477936, 0.009550974, -0.008142021, -0.092857026, 0.076251, -0.04458482, 0.0046990984, 0.013276958, 0.029387569, -0.06863542, 0.02843804, 0.013989966, 0.04032029, 0.020761117, -0.010589985, 0.021284932, -0.027813368, 0.028861504, -0.029792972, 0.023123495, 0.043803982, 0.032950405, 0.057323217, -0.02943795, -0.026258025, -0.043449067, -0.016675606, -0.009220994, -0.01850998, 0.02563114, -0.008510559, -0.063547924, 0.050500654, 0.027622208, 7.6432136E-4, -0.018045945, -0.05143423, 0.00842977, 0.010495132, 0.05621727, -0.015217322, 0.018001953, -0.0032027247, -0.049921732, -0.011762531, -0.00505444, -0.054429326, 0.007943052, 0.02047597, -7.0097845E-4, -0.0353484, 0.022843523, 0.035549253, 0.01640826, -0.028774995, -0.03920335, -9.137909E-4, -0.030994173, 0.014044211, -0.020832088, 0.011306218, -0.036892805, 0.044345878, -0.046444025, -0.0026610105, 7.185055E-4, -0.021391854, 0.053396776, 0.010034656, 0.047536675, 0.03787573, 0.047288418, 0.048008375, -0.0062377, -0.109366134, -0.002601604, -0.023127172, 0.04921732, 0.037831005, 0.0033542723, -0.014267195, -0.0166604, 0.024596646, 0.0028841908, -0.016982783, -0.038487695, 0.0018406434, 0.024887785, 0.02916111, 0.015302732, 0.026965596, 0.031603776, -0.004337056, -0.029891763, 0.0019879828, -0.043052543, -0.013307595, -0.019992145, -0.0043748287, 0.028978886, -0.09625752, -0.05659296, -0.043125566, -0.0057997466, -0.03657176, -0.052662835, -0.056527853, -0.02049155, 0.0258627, -0.029543126, 0.056826334, -0.02816312, -0.026319828, -0.017822968, 0.020093508, 0.033180203, -0.008548107, -0.046509624, 0.07618974, 0.031183545, 0.04737461, 0.0050830003, 0.035528325, 0.034361128, 0.06339511, -0.030830832, -0.022504665, -0.017021988, -0.05506125, -0.006114913, -0.013205699, 0.034146365, 0.029429123, 0.012824722, -0.020647887, -0.009293704, -0.028284745, -0.094554596, -6.9697725E-4, 0.09753584, 0.010986537, -0.0035297812, 0.05422378, 0.021043744, 0.009086395, -0.012693904, 0.02680544, -0.036261875, 0.0076627554, -0.0057761017, 0.015776424, -0.009700114, 0.031242738, 0.019186368, -0.0028866564, -0.046690863, 0.005305751, 0.0018206707, 0.028960796, -0.035025112, -0.0055870363, 0.017552257, 0.0241954, -0.061102744, 7.6228596E-4, 0.038060848, 0.006230281, -0.04551478, 0.021307707, 0.002247805, 0.0066571897, 0.073760435, 0.010303884, -0.008555741, 0.021170786, -0.012999387, 0.059789352, -0.022671169, -0.008046518, -0.061492044, -0.042631153, -0.0022257266, -0.015653, -0.059939887, 0.021959152, 0.007605635, -0.002778676, -0.07390067, 0.0015003402, -0.029145002, 0.022942487, -0.04001941, -0.0043251645, -0.031685725, 0.0048446036, -0.0024335666, 0.0149714295, -0.022116264, -0.0043054023, 0.010090583, -0.04294768, 0.051723044, 0.035688806, 0.028495466, -0.027362399, 0.019788265, -0.01178412, -0.014138521, 0.024591636, -0.044782575, -0.06735365, -0.028504742, -0.057163645, 0.05695221, -0.022166347, -0.04451005, 0.014691745, 0.04113617, -0.008089954, 0.010025199, -0.045975577, 0.031956807, 0.031765953, -0.014199915, 0.025208898, 0.02850284, 0.00442861, -0.043709684, -0.009718366, -0.028823296, 0.008590094, -0.0123363435, 0.0075237253, 0.03165285, 0.02475639, -0.042340275, 0.0017608865, 0.05602848, -0.0037397814, 0.03378299, 0.014766566, -0.07766058, 0.01948597, -0.0042322176, -0.0150059415, -0.033930447, 0.0029098534, -0.047355026, 0.008973074, 0.0253112, 0.01681251, 0.043956235, -0.039550375, 0.038400263, 0.06783158, -0.023040872, -0.08381893, 0.011351353, -0.056480996, 0.008295839, -0.03334715, 0.0095198965, 0.008056539, 0.046945307, 0.022916667, 0.037797224, -0.014018824, -0.0048553664, 0.018071273, -0.0107611865, -0.0214194, 0.014424621, -0.03819466, 0.011876106, 0.05026059, 0.019187842, 0.06374923, 0.014579262, -0.037569158, 0.011835665, 0.017713098, -0.027050775, 0.026788656, 0.08116169, 0.039701227, -0.0055367453, -0.009694235, -0.019231772, 0.04879468, -0.009797937, -0.018563254, -0.012032378, -0.015050962, -0.0047615357, 6.150493E-4, 0.013877279, 0.026810782, 0.028333226, -0.014622133, -0.019331085, 0.014589741, 0.014318359, 0.025742022, -0.046950392, -0.010229369, -0.009645523, 0.0329765, 0.036561195, 0.01159512, -0.031698752, -0.032687787, 0.012641392, -0.07276797, 0.04251666, -0.034565516, -0.07448755, -0.019024288, 0.0043084947, -0.047439367, 0.0010236345, 0.061309505, -0.0063446863, 0.037814572, 0.0362395, -0.022489674, 0.032085948, 0.036399387, -0.010529208, -0.04060308, -0.030028868, 0.0057342243, -0.032551434, -0.034590337, 0.00879041, -0.06376077, 0.04364927, -0.020221423, -0.0110524865, 0.045074865, -0.014625823, -0.032139197, -0.009300333, -0.026035018, -0.00830334, -1.461152E-5], "title": "构建推荐系统的最佳实践", "content": "推荐系统是一种用于向用户提供个性化建议和推荐的技术。构建一个有效的推荐系统需要考虑数据收集、特征工程、算法选择和评估等方面的最佳实践。" }
搜索测试
前置条件
先弄点词向量,如下:
标 题:如何在Python中实现图像分类 词向量:[0.003425748, 0.0349592, 0.034549166, 0.0022239508, 0.060810618, -0.022429558, -0.07004068, -0.001433827, 0.030713845, 0.011735543, -0.02168091, 0.052747343, -0.003032838, 0.07201349, -0.009121663, -0.035253286, -0.003087171, 0.033998333, -0.033415455, -0.020261392, 0.016096197, -0.055096716, -0.03921775, 3.2432762E-4, 0.048466, -0.020422108, 0.012400874, 0.048314445, 0.022852462, 0.016534192, -0.0791529, 0.04423471, 0.028590905, -0.020271868, -0.037338763, -0.053555593, 0.011092596, -0.026704505, -0.024752602, 0.0011142232, -0.040562928, 0.037982084, 0.0057855425, -0.0049113855, 0.022291979, -0.056476884, 0.029644014, -0.019107254, -0.003555308, -0.009681879, -0.07766024, 0.0070911874, -0.04910793, 0.0027092798, -0.0016745668, -0.028527947, -0.038718343, -0.009667692, -0.020795133, -0.012676213, -0.013904908, -0.017796164, -0.026805168, -0.14529184, 0.005773016, 0.011728189, -0.0047366945, -0.035389133, 0.0019069307, 0.020702973, -0.0055385977, 0.040782254, 0.009009192, 0.040845815, -0.028374115, 0.054288667, -0.011138878, -0.036187347, 0.011442376, -0.0132880295, 0.073753305, -0.097925894, 0.03636818, -0.04072707, 0.012919646, 0.05003554, 0.055168953, -0.012209735, -0.019181276, -0.03257699, -0.058053195, -0.025219388, -0.021497307, -0.001162345, -0.035980176, -0.035884265, -0.033100065, -0.00829503, -0.047079828, -0.02395855, -0.021471633, -0.0038828822, -0.0058413167, -0.015221235, 0.027641736, -0.029010223, 3.8878803E-4, 0.005856648, 2.0493125E-4, 0.02283165, 0.0145955905, 0.11387214, -0.025491737, 0.01645211, 0.061243463, -0.02927204, 0.03987121, 6.2265707E-4, 0.12808461, 0.048372313, -0.04586932, 5.218875E-4, 0.03338346, 0.022554236, -0.017504048, -0.045141526, -0.008534511, -0.017828498, 0.036588904, -0.016354308, 0.007750258, -0.003903245, -1.7327466E-4, -0.0100838, 0.063716546, 0.024896173, 0.0042410623, -0.107530154, 0.0030101123, 0.05138916, -0.003680045, 0.0035677121, 0.03090353, -0.028802726, -0.057706047, -0.0077695334, -0.030067058, -0.0073236115, 0.028622106, -0.020661816, -0.006895617, -0.087078355, 0.020292405, -0.09136877, 0.077871025, 0.034251146, -0.04043043, 0.009749394, -0.060770616, -0.014484504, -0.033462424, -0.04498533, -0.008569162, 0.029500335, -0.02620329, 0.016665585, 0.006792792, -0.110291496, 0.038737524, -0.0316104, -0.08394115, 0.0625756, -0.03423133, -0.029469164, 0.03100374, 0.04309461, -0.074423, -0.028166816, -0.009060677, 0.027572004, 0.005048868, -0.012845816, 0.017110486, 0.015368103, -0.055320587, 0.0064367545, -0.04773569, 0.033720955, 0.07017167, -0.012598084, 0.018722724, -0.033211257, -0.052664973, 0.004498666, -0.023347132, -0.039391857, 0.048897594, 0.029863205, -0.008016134, 0.027602006, 0.027358193, -0.025875986, 0.025465434, -0.02878025, 0.021779213, 0.042077173, -0.011555729, -0.026198916, 0.032100078, -0.043048263, -0.027187653, -0.0402725, -0.020369655, -0.013327858, 1.6972772E-5, -0.003885551, -0.041187145, -0.014162298, 0.028868157, -0.01037627, 0.037233584, -0.018804729, 0.007887838, -0.037073694, -0.05942401, 0.01240634, 0.0221232, -0.028147424, 0.0073892097, 0.03958656, -0.034933493, -0.030155692, 0.009021838, 0.002932108, 0.012281143, 4.1424247E-4, 0.027152574, 0.06452393, 0.023870597, 0.017925534, 0.014357434, -0.106567256, 0.008429156, 0.036298342, -0.028493863, 0.030789679, 0.015373285, 0.0027190328, 0.0011485133, 0.01907994, -0.017132722, -0.015111511, -0.006247805, -0.08744835, 0.020638978, 0.03195406, 0.014723591, 0.015694404, 0.021649327, -3.8856504E-4, -0.004523996, -0.0088082235, 0.019244773, 0.005211741, -0.009596286, -0.012487133, 0.02576933, -0.023590969, -0.07383563, 0.0052784397, -0.019830242, -0.032136276, -0.0559001, -0.027888171, 0.012820674, 0.042624634, 0.020084862, 0.013775034, 0.0018024327, -0.0030583849, 0.008733587, 0.03011925, -0.010819768, 0.01846895, -0.027928192, 0.054508165, 0.025518509, 0.015765147, 0.0055009336, 0.008995844, -0.001397986, 0.013922541, -1.4566258E-4, 0.014703157, 0.00892575, -0.025066845, -0.012928029, -0.0060389563, 0.045801383, 0.018579468, 3.1862292E-4, -0.0035438025, 0.028089356, 0.0033972785, -0.09361243, -0.05980632, 0.040125515, 0.05354448, -0.028163841, 0.05078453, 0.032952312, -0.0362255, -0.040162623, 0.029067608, 0.05469056, -0.057086382, -0.043093912, -0.052694004, -4.773717E-4, 0.010348781, -0.002899653, -0.039878853, -0.0031686411, -0.017416924, 0.0023792672, 0.05185327, 0.052650593, 0.0147140045, 0.00534939, 0.041315783, -0.04911213, 0.015727231, 0.03869164, 0.040212993, -0.027982218, 0.015433941, -0.023373008, -0.0010281625, 0.03179473, 0.0809107, -0.006591896, 0.07492227, 0.051036846, 0.05243999, 0.012217927, -5.8672315E-4, -0.05568167, -0.045633372, 0.004958849, 0.06414878, -0.08234718, 0.055348992, 0.026701692, -0.03219593, -0.031503137, -0.05069124, -0.06783226, 0.0054454487, -0.01793748, -0.048341606, -0.008448702, -7.011754E-4, -0.025374316, 0.048590273, -0.03305374, -0.052704513, 0.052871093, -0.034879833, -0.028176619, -0.008617678, 0.020152742, -0.043748375, 0.066275075, -0.0053646383, -0.020060522, -0.011765275, -0.016720584, -0.11795565, -0.0029911115, -0.06743606, 0.011309156, 8.773381E-4, -0.0075211884, 0.015839778, -0.019497382, 0.0072432347, 0.03325934, -0.038977157, 0.036526572, 0.01263625, 0.031347763, -0.038133346, -0.0046586976, 0.012437723, -0.07406788, -0.026325636, -0.039441943, 0.033739123, -0.02652633, 0.01418932, 0.0115834875, 0.008360267, 0.028494984, 0.010411456, -0.0013066668, -0.02228452, 0.08229267, 0.0063977535, -0.09075892, 0.015774589, -0.012635471, -0.013978461, -0.047774613, -0.036760166, -0.008622342, 0.041786294, 0.031008786, 0.018403547, -0.018363375, -0.03071931, 0.028448794, 0.027587907, -0.031309966, -0.060857788, -0.009144435, -0.009149089, -0.0138160605, -0.023221325, 0.041510608, -0.012421435, -0.0013590785, -0.021834265, 0.0318156, -0.026229814, -0.012133902, 0.021569753, 0.029152462, 0.0062848297, 0.021908771, -0.062652424, -0.019044742, 0.07203413, 0.0645531, 0.064836435, 0.013075323, -0.014966318, -0.013762404, -0.037492, -0.0214157, 0.013161554, 0.003251, 0.04308545, 0.028279785, 0.007946551, -0.023538174, 0.017218951, 0.040116537, 0.0050127236, 0.0068970826, 0.020377496, 0.029326467, 0.03255159, 0.048297945, 7.0397765E-4, 0.017532872, -0.0066716787, -0.03623868, 0.0082028955, 0.007304976, 0.053477094, -0.04715973, 0.026167873, -0.05383834, -0.004187588, 0.006051728, -6.76833E-4, -0.0053422535, -0.009363592, 0.07374679, -0.057454553, -0.0021901669, 0.009387111, -0.057686746, -0.022387888, -0.009012612, 0.025805265, -0.02442889, 0.014319615, -0.006989777, 0.06344666, 0.040135924, -0.012629844, 0.0113826515, 0.044885244, -0.059586156, 0.0048252083, -0.035091937, -0.03562694, -0.040692493, -0.062527485, -0.043084674, 0.009344234, 0.03516395, 0.042935252, -0.041356236, 0.027835313, 5.2603515E-4, 0.0030535415, 0.0016332692, -0.07045216, 0.013352063, 0.012707965] 标 题:使用Elasticsearch进行全文搜索 词向量:[0.0117143085, 0.045121565, 0.09191994, 0.00710566, 0.10173434, -0.008269696, 0.030694166, -0.08023042, 0.040613037, 5.408306E-4, -0.0678575, 0.009960665, 0.017735811, 0.024963507, -0.0032798927, -0.051621184, 0.02022438, 0.06552727, 0.017096853, 0.017405674, -0.0022419635, -0.024945313, -0.06346019, 0.010615516, 0.04126783, 0.007176247, -0.04579749, 0.002776335, -0.0082544815, 0.03610969, -0.0852345, 0.010771294, -0.0029955162, -0.01804644, -0.06935482, -0.018124674, 0.036978412, -0.03874629, -0.068938084, 0.029514022, -0.022372592, -9.625907E-4, 0.024773112, -0.014288258, 0.035850678, -0.05834622, 0.047468852, -0.014909751, -0.013359034, -0.0027257034, -0.003975198, -0.0034708378, 7.885395E-4, 0.04721367, 0.013148114, -0.033280034, -0.026391065, -0.049792975, 0.038625944, -0.033596966, 0.024053974, 0.06774398, -0.033422623, -0.056706488, -0.026988262, -0.033531144, 0.026621416, 0.0075515034, 0.006276171, 0.024225065, -0.034884002, 0.010733044, 0.012259465, -0.004880513, -0.028888768, 0.009233602, -0.026490841, -0.0038679505, -0.0046571405, 0.0012432153, 0.037743468, -0.0511176, 9.6163567E-4, -0.05004952, -4.5989078E-4, -5.1093794E-4, 0.058971576, 0.010198453, -0.02887652, -0.012081953, 0.016507419, 0.020551708, -0.025001513, -0.02773335, -0.06560827, -0.04375667, -0.021418005, 0.06252699, -0.068086006, -0.013108571, 0.018477185, -0.0048998264, 0.008991208, -0.03792886, 0.075551465, -0.010586611, 2.126107E-4, -0.050966423, -0.028227802, 0.03515584, -0.046834193, 0.11370123, 0.024434015, 0.020431882, 0.042476565, -0.014892725, -0.003985886, 0.059183728, 0.119265065, -0.0011428657, 0.03052966, 0.035903666, 0.013500129, 0.037276782, -0.018733403, 0.024424113, -0.043611906, -0.028979385, -0.023797715, 0.03195113, 0.026660897, -0.03994073, 0.009719538, -0.020009007, 0.058797523, -0.014668489, 0.047455758, 0.01267241, 0.050841488, 0.06769339, -0.055657435, 0.03294857, -0.0025667865, -0.039912347, -0.03248613, -0.021620722, 0.009903828, 0.0035388812, 0.00851918, -0.020379512, 0.013021799, -0.08282925, -0.01132819, -0.03473937, 0.01885625, -0.0121050505, 0.031654138, 0.028466877, 0.032860592, -0.007829607, -0.010235609, -0.07666566, -0.040454138, 0.010658153, 0.0046947543, 0.024346089, -0.0010503771, -0.11209227, -0.00612948, 0.010487131, -0.11789431, 0.08106747, -0.04559209, -0.07589063, 9.0824394E-4, 0.016997071, -0.05926595, 0.03505642, 0.062483832, 0.013590767, 0.053455405, -8.4429706E-4, -0.011715628, 0.0034937256, 0.008201729, 0.058486883, -0.030845467, 0.022439579, 0.020314703, 0.012636989, -0.029004734, 0.007914829, -0.002141122, -0.053387873, -0.0069468436, 0.04166113, 0.054034412, 0.05492169, -0.016120603, -0.036476914, 0.004447421, 0.003561287, 0.031071331, -0.029407015, 0.02269256, 3.9890423E-4, 0.007146244, -0.0208965, 0.015234989, -0.010426937, -0.008766269, 0.0144377155, -0.017882215, -0.031066203, 0.018730363, 0.019393297, 0.012934468, 0.010574833, -0.007553376, -0.01052809, -0.060938537, -0.024685156, -0.036083933, 0.019071005, -0.059797686, -0.004272712, -0.0032094757, -0.057068206, 0.0063553816, 0.04246625, -0.037045427, 9.333572E-4, 0.06806911, -0.028314348, 0.01807504, 0.040009916, 0.025617162, 0.012296813, 0.048575666, 0.05792758, 0.0181828, -0.09494853, -0.010511767, -0.0058425944, -0.06316953, -0.019733034, 0.03783072, 0.028139684, -0.0043169777, 0.014565453, -0.019038588, 0.00998606, 0.033683494, 0.011317593, 0.033992592, 0.0053655817, 0.01107605, 0.0030383733, 0.0036201268, 8.42958E-4, 0.057126924, -0.015587716, -0.0012857222, 0.07736839, 0.004825883, 0.048844088, 0.015585583, -0.038394477, -0.060490374, -0.04555572, -0.045241755, -0.007222421, -0.037498824, -0.06075751, 0.051257756, 0.01226002, -0.012768651, 0.07517634, -6.5865583E-4, -0.015895523, -0.021724261, -7.6792E-4, 0.012344259, 0.0091987075, -0.058543753, 0.06907949, -0.025212744, 0.040837668, 0.0046373694, 0.0018736622, 0.048904162, 0.033207558, -0.026885064, 0.0018661866, -0.0030907537, -0.037033476, -0.019643692, -0.009424732, 0.052872445, 0.03940382, -0.03180674, -0.03984017, -0.014511414, -0.042511046, -0.08959477, 0.013552238, 0.008722365, 0.024217544, -0.07459556, 0.028619433, -0.038014777, 0.044403173, -0.03306039, 0.007870692, -0.009769034, -0.021419631, -0.038302805, 0.009293837, 0.022912279, 0.008031682, 8.1134896E-4, -0.026267486, 0.028896447, -0.0027557183, 0.012683719, 0.06473891, 0.024489367, 0.0036631813, -0.013814428, 0.020309508, -0.07892576, -0.018932587, -3.1196815E-4, 0.02800487, -0.021794366, 0.033176254, -0.044635642, -0.0054335548, 0.08097203, -0.029633824, 0.008697728, 0.07016618, 0.036964465, -0.011894994, -0.028811816, 0.035276312, -0.0074575255, 0.011733262, 0.018111786, -0.013496318, -0.053402975, 2.560399E-4, 0.004600753, 0.024878355, -0.055244442, 0.0033579913, -0.03698139, 0.03778507, -0.05911295, -0.022704894, 4.3038322E-4, 0.015157517, -8.773331E-4, 0.046883848, -0.029940244, -0.06293744, 0.029528368, 0.009371632, 0.0033297667, 0.0027188316, -0.008704155, 0.0358954, 0.050830826, -0.034152627, 0.054006435, -0.025707228, -1.08596054E-4, -0.06489064, -0.008094756, -0.037734933, 0.012544428, -0.00720663, -0.038805187, 0.031188434, 0.01687598, -0.006368296, 0.05238537, -0.049742915, -0.052619614, -0.027405418, 0.022044819, 0.0057760994, -0.013791722, -0.023093732, -0.035344556, -0.015110196, -0.048774548, -0.018002523, -0.0056335353, 0.066452056, 0.0072636213, 0.0012199358, 0.069724694, 0.005817949, 0.022240497, -0.015321118, 0.0820662, 0.028178591, -0.08539435, 0.0019945367, 0.02006667, -0.0061124275, -5.12594E-4, -0.03549404, -0.00795016, -0.0016249074, -0.012301801, 0.012492642, -5.1937666E-4, -0.016898623, 0.019816255, 0.05134753, 0.018421471, 0.009171907, 0.017838158, 0.043232366, 0.026528297, -0.028303025, -0.016405558, 0.0103685865, -0.031022625, 0.065529704, 0.041098703, -0.034336, -0.05352473, 0.020121042, -0.012044331, 0.0034804214, 0.021412788, -0.026181115, -0.026110137, 0.09393993, 0.0037390857, 0.06305225, -0.037513845, 0.017198782, 0.030384552, 0.02973615, 0.014410185, 0.018699534, 0.044680133, 0.043075275, -0.01910853, 0.004449705, 0.002680912, -0.013235103, 0.036758747, 0.01017896, -0.02270456, -0.03146837, -0.035153992, 0.027544972, -0.0012317606, 0.024501756, 0.059981886, -0.031208033, -0.058444165, -0.0041939807, -0.025207335, 0.01704825, -0.03662345, 0.023225486, -0.057966754, 0.01924193, 0.029117774, -0.006828361, -0.0072594383, 0.0031118144, 0.04780706, -0.020960245, -0.011914286, -0.016184784, -0.07688063, -0.04833374, 0.012004205, 0.005326569, -0.037733167, 0.03464075, 0.030300675, -0.0024853563, -0.00643714, 0.016070087, 0.031160934, -0.0027925444, 0.011567297, -0.043394674, -0.017964955, -0.02457455, 0.009044433, -0.051248875, -0.036129963, 0.02006153, 0.019607674, -0.029285472, -0.06072313, 0.03174668, -0.035128094, -0.012177203, 0.0053611994, -0.01820117, 0.010682981, 0.0079119] 标 题:构建推荐系统的最佳实践 词向量:[0.016784616, 0.020519117, 0.030111508, -0.028519263, 0.07518433, -0.051196612, -0.016427713, -0.03274426, -0.006999862, 0.013230742, 0.0014656008, 0.0106661925, -0.02636794, 0.024049409, -0.021129115, -0.018221525, 0.015097005, 0.06026247, 0.009421245, 0.006248035, 0.03560257, -0.04287118, -0.01708559, 0.02073055, 0.03344506, -0.02307966, -0.0058548474, 0.065074705, -0.008398853, 0.0012660566, -0.09577061, 0.03543353, 0.0024966393, 0.02084241, -0.042799987, -0.06250128, 0.01739693, -0.0025754948, -0.025383381, 0.05294736, -0.07126671, 0.010699218, 0.040031053, -0.0029111512, 0.020760858, -0.028012006, 0.020912662, -0.017607598, -0.036782715, -0.0013501794, -0.035480805, -0.008612508, 0.016199343, -0.016624006, 0.048927076, -0.020968508, -0.02205474, -0.07989428, 0.002516207, 0.027721284, -0.010456964, -0.0017861929, 0.0017328408, -0.02443157, -0.010273274, 0.073678784, 0.012320716, -0.01125913, 0.010977987, 0.014950072, 0.02413759, 0.06941475, -0.010831938, 0.010134839, -0.024368586, 0.0034789941, -0.023567665, -0.05385553, 0.026537031, -0.024497297, 0.06428117, -0.054112148, 0.02833654, -0.009830102, 0.0381592, 0.030345818, 0.06484088, -0.014410146, -0.025190039, -0.034735322, -0.033459432, 0.013515908, -0.065364145, -0.0046312897, -0.04968972, -0.049516045, 0.032647893, -0.012442322, -0.07077929, 0.024445178, -0.036758445, 0.002506368, -0.02322982, -0.065954074, 0.0023990714, -0.037555844, 0.017565237, 0.016743861, -0.024668787, 0.045114752, -0.03365812, 0.13232008, 0.037784528, -0.031255182, 0.057812512, 0.032824196, -0.027275931, 0.014450303, 0.13421698, 0.015463857, -0.0011247124, 0.020310704, 0.022275193, 0.012187366, -0.020215938, 0.013493274, 0.008388018, -0.017624404, 0.026022287, -0.016615424, -0.0019567527, 0.041329436, -0.012479547, -0.046005387, 0.043853868, 0.0050776657, 0.0019343727, -0.07607299, 0.0027859057, 0.079697326, 0.0058062593, 0.001494177, 0.033128537, 0.022172192, -0.030957298, -0.05897137, 8.3054433E-4, 0.034674577, 0.005550485, -0.012436947, 0.009744706, -0.096184924, 0.010737939, -0.030373301, 0.042013187, 0.03452175, 0.008070757, 0.016847495, -0.014018681, 0.054120626, -0.014965496, -0.05285822, -0.003829602, 0.028578814, 0.0036061455, 0.043356184, -0.052930538, -0.11477936, 0.009550974, -0.008142021, -0.092857026, 0.076251, -0.04458482, 0.0046990984, 0.013276958, 0.029387569, -0.06863542, 0.02843804, 0.013989966, 0.04032029, 0.020761117, -0.010589985, 0.021284932, -0.027813368, 0.028861504, -0.029792972, 0.023123495, 0.043803982, 0.032950405, 0.057323217, -0.02943795, -0.026258025, -0.043449067, -0.016675606, -0.009220994, -0.01850998, 0.02563114, -0.008510559, -0.063547924, 0.050500654, 0.027622208, 7.6432136E-4, -0.018045945, -0.05143423, 0.00842977, 0.010495132, 0.05621727, -0.015217322, 0.018001953, -0.0032027247, -0.049921732, -0.011762531, -0.00505444, -0.054429326, 0.007943052, 0.02047597, -7.0097845E-4, -0.0353484, 0.022843523, 0.035549253, 0.01640826, -0.028774995, -0.03920335, -9.137909E-4, -0.030994173, 0.014044211, -0.020832088, 0.011306218, -0.036892805, 0.044345878, -0.046444025, -0.0026610105, 7.185055E-4, -0.021391854, 0.053396776, 0.010034656, 0.047536675, 0.03787573, 0.047288418, 0.048008375, -0.0062377, -0.109366134, -0.002601604, -0.023127172, 0.04921732, 0.037831005, 0.0033542723, -0.014267195, -0.0166604, 0.024596646, 0.0028841908, -0.016982783, -0.038487695, 0.0018406434, 0.024887785, 0.02916111, 0.015302732, 0.026965596, 0.031603776, -0.004337056, -0.029891763, 0.0019879828, -0.043052543, -0.013307595, -0.019992145, -0.0043748287, 0.028978886, -0.09625752, -0.05659296, -0.043125566, -0.0057997466, -0.03657176, -0.052662835, -0.056527853, -0.02049155, 0.0258627, -0.029543126, 0.056826334, -0.02816312, -0.026319828, -0.017822968, 0.020093508, 0.033180203, -0.008548107, -0.046509624, 0.07618974, 0.031183545, 0.04737461, 0.0050830003, 0.035528325, 0.034361128, 0.06339511, -0.030830832, -0.022504665, -0.017021988, -0.05506125, -0.006114913, -0.013205699, 0.034146365, 0.029429123, 0.012824722, -0.020647887, -0.009293704, -0.028284745, -0.094554596, -6.9697725E-4, 0.09753584, 0.010986537, -0.0035297812, 0.05422378, 0.021043744, 0.009086395, -0.012693904, 0.02680544, -0.036261875, 0.0076627554, -0.0057761017, 0.015776424, -0.009700114, 0.031242738, 0.019186368, -0.0028866564, -0.046690863, 0.005305751, 0.0018206707, 0.028960796, -0.035025112, -0.0055870363, 0.017552257, 0.0241954, -0.061102744, 7.6228596E-4, 0.038060848, 0.006230281, -0.04551478, 0.021307707, 0.002247805, 0.0066571897, 0.073760435, 0.010303884, -0.008555741, 0.021170786, -0.012999387, 0.059789352, -0.022671169, -0.008046518, -0.061492044, -0.042631153, -0.0022257266, -0.015653, -0.059939887, 0.021959152, 0.007605635, -0.002778676, -0.07390067, 0.0015003402, -0.029145002, 0.022942487, -0.04001941, -0.0043251645, -0.031685725, 0.0048446036, -0.0024335666, 0.0149714295, -0.022116264, -0.0043054023, 0.010090583, -0.04294768, 0.051723044, 0.035688806, 0.028495466, -0.027362399, 0.019788265, -0.01178412, -0.014138521, 0.024591636, -0.044782575, -0.06735365, -0.028504742, -0.057163645, 0.05695221, -0.022166347, -0.04451005, 0.014691745, 0.04113617, -0.008089954, 0.010025199, -0.045975577, 0.031956807, 0.031765953, -0.014199915, 0.025208898, 0.02850284, 0.00442861, -0.043709684, -0.009718366, -0.028823296, 0.008590094, -0.0123363435, 0.0075237253, 0.03165285, 0.02475639, -0.042340275, 0.0017608865, 0.05602848, -0.0037397814, 0.03378299, 0.014766566, -0.07766058, 0.01948597, -0.0042322176, -0.0150059415, -0.033930447, 0.0029098534, -0.047355026, 0.008973074, 0.0253112, 0.01681251, 0.043956235, -0.039550375, 0.038400263, 0.06783158, -0.023040872, -0.08381893, 0.011351353, -0.056480996, 0.008295839, -0.03334715, 0.0095198965, 0.008056539, 0.046945307, 0.022916667, 0.037797224, -0.014018824, -0.0048553664, 0.018071273, -0.0107611865, -0.0214194, 0.014424621, -0.03819466, 0.011876106, 0.05026059, 0.019187842, 0.06374923, 0.014579262, -0.037569158, 0.011835665, 0.017713098, -0.027050775, 0.026788656, 0.08116169, 0.039701227, -0.0055367453, -0.009694235, -0.019231772, 0.04879468, -0.009797937, -0.018563254, -0.012032378, -0.015050962, -0.0047615357, 6.150493E-4, 0.013877279, 0.026810782, 0.028333226, -0.014622133, -0.019331085, 0.014589741, 0.014318359, 0.025742022, -0.046950392, -0.010229369, -0.009645523, 0.0329765, 0.036561195, 0.01159512, -0.031698752, -0.032687787, 0.012641392, -0.07276797, 0.04251666, -0.034565516, -0.07448755, -0.019024288, 0.0043084947, -0.047439367, 0.0010236345, 0.061309505, -0.0063446863, 0.037814572, 0.0362395, -0.022489674, 0.032085948, 0.036399387, -0.010529208, -0.04060308, -0.030028868, 0.0057342243, -0.032551434, -0.034590337, 0.00879041, -0.06376077, 0.04364927, -0.020221423, -0.0110524865, 0.045074865, -0.014625823, -0.032139197, -0.009300333, -0.026035018, -0.00830334, -1.461152E-5] ---------------------------------------------------- 标 题:Python中的图像分类算法实现 词向量:[0.018334504, 0.024280138, 0.060270008, -0.00703231, 0.062384542, -0.033714343, -0.089470446, 0.01052925, 0.030128203, 0.016259717, -0.0041708597, 0.07508473, -1.4808029E-5, 0.07208159, -0.025966516, -0.035937995, -0.019125087, 0.02894972, -0.042877838, -0.016556587, 0.038519125, -0.05497628, -0.022371262, 0.0052025816, 0.06263389, -0.012726134, -0.0076508494, 0.048508916, 0.028581567, 0.025932636, -0.04068385, 0.03526424, 0.043063276, -0.0045921654, -0.03677957, -0.044359524, 0.022593407, -0.010674483, -0.030666064, 0.0104613975, -0.06754987, 0.03236309, 7.70517E-4, -0.017036248, 0.02123662, -0.054729816, 0.02336933, -0.028074302, 0.0039182375, -0.012599534, -0.097433954, 0.003237031, -0.037144624, 0.0058577955, -0.006290964, -0.025053108, -0.056105237, -0.008978243, -0.02688102, -0.0129503645, -0.008121182, -0.029434739, -0.022789279, -0.15444307, 0.014734943, 0.0065265135, 0.011842373, -0.036312938, 0.008875027, 0.03323997, 0.010595138, 0.06085125, -0.008255827, 0.042788893, -0.029874694, 0.051551364, -0.03500654, -0.026431937, 0.0052033635, -0.015055023, 0.08952935, -0.091231525, 0.027016645, -0.053308353, 0.005032279, 0.06008603, 0.07357959, -0.009609652, -0.003973632, -0.057170775, -0.04671027, -0.0048645018, -0.033610284, -0.003089503, -0.04178789, -0.0133626815, -0.040106755, -0.01489888, -0.04663396, -0.007279365, -0.02141951, -0.0034206498, -0.0060589705, -0.012498243, 0.018241506, -0.025400665, 0.008988069, 0.00954205, 0.0067822053, 0.026373647, 0.022600269, 0.11963017, -0.03573345, 0.01343307, 0.070174664, -0.040029693, 0.035598405, -0.004611507, 0.11729125, 0.059418842, -0.034857914, 0.017056938, 0.035486206, 0.031676758, -0.029388057, -0.054247927, -0.0048671667, -0.011214918, 0.046272412, -0.043653212, 0.005927232, -0.0060632927, -0.031766295, -0.0065160003, 0.06309202, 0.031696334, 0.010834883, -0.11858474, 0.015118523, 0.063034624, 0.0037512407, 0.019837465, 0.03365307, -0.04349621, -0.04838277, -0.014911847, -0.027467359, -0.03379531, 0.013083895, -0.023289312, -0.0122351255, -0.054968126, 0.027260402, -0.11570955, 0.0810923, 0.048150994, -0.02272245, 0.02167532, -0.07473878, 0.010024956, -0.045342594, -0.040995996, -0.003830455, 0.029282497, -0.031038662, 0.003926054, 0.015166712, -0.103414126, 0.02164625, -0.032480583, -0.06634523, 0.05898234, -0.03116015, -0.056782607, 0.025620563, 0.046223305, -0.068947636, -0.036224153, -0.0054390104, 0.034677997, -0.0012064547, -0.014691091, 0.016825436, 0.026014788, -0.046168473, 0.0064939386, -0.065640055, 0.044646576, 0.081166275, -0.0035780836, 0.022505274, -0.017853433, -0.039874192, 0.0027993673, -0.018770952, -0.02639674, 0.03317332, 0.051389776, -0.0042318776, 0.030204441, 0.013347908, -0.011683809, 0.03636062, -0.040875424, 0.012521518, 0.051372528, -0.019215906, -0.014054019, 0.025017811, -0.023925602, -0.040116623, -0.05494136, -0.015616297, -0.021807574, -0.015647572, -0.002124208, -0.051249743, -0.0096973395, 0.031446666, -0.02780494, 0.049189955, -0.029717067, 0.007830184, -0.05809309, -0.058707375, 0.030614134, 0.03524412, -0.034313593, 0.0112889055, 0.037618678, -0.033219296, -0.03769533, 0.005770336, -0.0017073594, -0.0040953867, 0.0075088665, 0.032104407, 0.038916063, 0.028482001, 0.018831132, 0.0196853, -0.0968549, 0.010079594, 0.024128614, -0.019420033, 0.053984404, -0.003876352, 0.009392947, 0.0022547024, 0.020174231, 0.0020515497, -0.003640826, -0.008331576, -0.09186866, 0.035954855, 0.03892597, 0.008403802, 0.032515895, 0.020249581, -0.015331016, -0.0033263185, 0.020847946, 0.024370752, -0.013341614, -0.025442561, -0.022106968, 0.033984475, -0.038147148, -0.06698335, -0.0025435148, -0.025766112, -0.02414459, -0.06505771, -0.035145413, 0.003635327, 0.06367122, -0.010155436, -0.0024379725, -4.5812075E-4, 0.018759023, 0.026726952, 0.024773588, -0.010748584, 0.02538642, -0.026085567, 0.047703348, 0.014363001, 0.009833401, 0.003947038, -0.0067513445, -0.0025483482, 0.020491373, -0.006104005, 0.02506443, 0.012511464, -0.0024656195, 0.0031949526, -1.6820827E-4, 0.021071967, 0.025954686, 0.019704795, -0.014183586, 0.045486882, 0.02204026, -0.07147743, -0.06660837, 0.032999154, 0.052447073, -0.017600073, 0.05710723, 0.028700078, -0.02923506, -0.04366008, 0.041560367, 0.055844158, -0.032798912, -0.05667255, -0.04946596, 0.003996133, -0.0025304968, 0.027621573, -0.042329058, -0.016636109, -0.04114112, -0.02273995, 0.05618336, 0.053753596, 0.018957214, -0.006487004, 0.04412349, -0.024048153, 0.017044146, 0.040858924, 0.040573496, -0.019988013, 0.019975705, -0.038978666, -0.015306521, 0.039337978, 0.09774831, -0.006554067, 0.08606857, 0.0585227, 0.05483377, 0.014958298, -0.0048144795, -0.037498493, -0.06519725, 0.003035377, 0.05896656, -0.0849043, 0.048408963, 0.021710442, -0.034050927, -0.0039758496, -0.07412198, -0.044429187, -0.008626837, -0.010930866, -0.048836604, 0.0011481331, -0.005427692, -0.018389411, 0.05359212, -0.026096955, -0.050659325, 0.059301037, -0.032735784, -0.030279418, -0.0030599472, 0.0142146405, -0.037663408, 0.0737027, -0.01956614, -0.037615348, -1.8160511E-4, -0.029712649, -0.089713134, 0.0011612815, -0.08236109, -0.00709404, 3.5659302E-4, -0.020743284, 0.016616344, -0.028921027, 0.009294537, 0.017093465, -0.032445095, 0.058222927, 0.008568909, 0.03677239, -0.03746566, 0.014174925, 0.03566817, -0.063097134, -0.019889072, -0.054829415, 0.03446317, -0.023996752, 0.008673901, 0.01951796, 0.005942422, 0.014864499, 0.0055181044, 0.007302453, -0.016944436, 0.10389743, -0.0020791213, -0.07125883, 0.0352342, -0.012946072, -0.021096097, -0.055850707, -0.04794835, -0.006866279, 0.021536127, 0.024503617, 0.017718377, -0.022436446, -0.027201625, 0.04263096, 0.023965012, -0.03678662, -0.08512502, 0.0036935005, -0.012211001, -0.031326313, -0.032609697, 0.06252547, -0.00652635, 0.016881183, -0.035671808, 0.0143922, -0.026964137, -0.022093501, 0.027231608, 0.0348811, 0.012951652, 0.035395734, -0.06288116, -0.024185633, 0.057561185, 0.055526968, 0.0584887, -9.907435E-4, -0.02232988, -0.016641524, -0.036239166, -0.008777217, 0.012492639, 0.0052368673, 0.03817985, 0.05986094, 0.005637845, -0.031989623, 0.032398615, 0.051869143, 0.0113028465, 0.0143419765, 0.012046146, 0.028136974, 0.027474927, 0.045836695, 0.015627034, 0.016563581, -0.02871797, -0.045672912, 0.0069116773, -0.004560964, 0.06710901, -0.057497114, 0.041751735, -0.04781406, -0.0069232797, 0.030780569, -0.00906503, 0.0020974206, 0.02144345, 0.081875205, -0.061759055, 0.0039352537, 0.0100662345, -0.060573794, -0.008153452, -0.013763209, 0.05385816, -0.016150707, 0.013022631, 0.0014990036, 0.06283503, 0.04291183, -0.028426409, 0.0060491026, 0.0480245, -0.076360986, -0.018043978, -0.026324745, -0.060814414, -0.025072854, -0.047528446, -0.057492107, 0.0045749904, 0.03887366, 0.020883841, -0.051129226, 0.034032185, 0.01762571, 0.009605042, -0.00511932, -0.091090634, 0.0070879753, 0.0021814427] 标 题:利用Elasticsearch进行高效全文搜索 词向量:[0.028334545, 0.04808455, 0.054223213, -0.021798454, 0.0945059, 0.0033262551, 5.0448696E-5, -0.056805007, 0.037401047, 0.010768487, -0.048363864, 0.025941702, 0.023150815, 0.04304203, -0.031488836, -0.057050273, -0.018632913, 0.06198032, 0.018015359, 0.021398744, 0.019701745, -0.03146597, -0.056198522, 0.013590538, 0.046737146, -0.009726907, -0.042173695, 0.0068503506, 0.03534159, 0.03005312, -0.064686924, 0.03621582, -0.016471885, -0.012193312, -0.074417986, -0.01766112, 0.02724811, -0.038141087, -0.049351376, 0.052266356, -0.040434923, -0.018830702, 0.005368009, -0.03396543, 0.015351972, -0.077662274, 0.06817002, -0.0035892013, 0.018406149, 0.02260536, -0.023874182, 0.0011654581, 0.018005168, 0.051917426, 0.010722944, -0.04200844, -0.04632208, -0.07842748, 0.016677842, -0.024655232, 0.024934692, 0.036638416, -0.04926346, -0.059437174, -0.020153923, -0.03533702, 0.0072743865, 0.008430382, 0.008015532, 0.060297247, 0.010504731, 0.03086903, 0.012021666, -0.034335937, -0.009965666, 0.021863114, -0.059912305, -0.0014935217, -0.013985441, -6.17749E-4, 0.04700554, -0.041114308, 0.029944489, -0.043466613, -0.026387652, -0.004704645, 0.053466644, -0.008273594, -0.029359173, -0.025460107, 0.002253579, 0.039436597, -0.05860007, -0.0386374, -0.07954853, -0.041595798, -0.03559868, 0.062319368, -0.09021597, -0.013475061, 0.0135375485, 0.008878271, -0.00953272, -0.038091235, 0.052982114, 0.019271756, 0.011575543, -0.020163942, -0.028771717, 0.011637373, -0.03262478, 0.09397539, 0.005085267, 0.011102016, 0.032702163, -0.0038947032, -0.050326135, 0.07953474, 0.09047092, 0.008992724, 0.029380959, 0.023687955, 0.033742443, 0.020253137, -0.03813523, 0.020047523, -0.038192753, -0.0046202713, -0.016382942, 0.0154150175, 0.0053617, -0.044661403, 0.004215044, -0.023033086, 0.055270102, 0.016150443, 0.038561888, -0.009198192, 0.06254773, 0.0592613, -0.050476223, 0.030029668, 0.0059621055, -0.03422539, -0.034032956, -0.03878676, 0.014992213, 0.0043020966, -6.420453E-4, -0.023369566, 0.0028834413, -0.0723571, -0.029307807, -0.053825032, 0.013410929, -3.5013893E-4, 0.013525775, 0.034127172, 0.016089289, -0.027587675, -0.029109651, -0.07968074, -0.034363296, 0.008289026, 0.009049414, 0.033455137, 0.007044888, -0.09103199, 0.0039788447, 0.018719338, -0.0993544, 0.08398196, -0.016725155, -0.0762753, -0.011668972, 0.051004317, -0.05135479, 0.034115486, 0.026734846, 0.00958967, 0.04886044, 0.01209961, -0.033501763, -0.03515588, -0.010005488, 0.0401187, -0.0070804823, 0.033241913, 0.03572946, 0.027282279, -0.014707907, 0.018911239, 0.005589736, -0.030505618, 0.0017049264, 0.04897294, 0.070767045, 0.06423891, -0.03979555, -0.023579989, -0.0011878831, -0.0036330426, 0.020364275, -0.029213857, 0.02858686, -0.003081878, 0.016607476, -0.030065073, 0.021560377, 0.030196784, -0.019569477, 0.004563586, -0.025454056, -0.018741067, 0.003828148, 0.008548169, 0.0056045456, 0.0030136195, 0.014526269, -0.016482355, -0.06365093, -0.027959913, -0.012181808, 0.028299553, -0.04452068, -0.022517681, -0.008201533, -0.023308014, 0.02418263, 0.05172734, -0.049244992, 0.0046426235, 0.04115353, -0.036517307, 0.014148319, 0.047181796, 0.019306827, 0.027330881, 0.03832524, 0.033864092, 0.0017904951, -0.08888077, -0.01084467, 0.007841478, -0.06529573, 0.0052259206, 0.017430682, 0.012530655, 0.009365835, 0.013881219, -0.016060933, -0.002089198, 0.031378657, 0.026508959, 0.040644832, 0.027947545, -0.021121973, 0.026068565, 0.0337489, 0.0025968358, 0.024919208, -0.02810015, 0.029599614, 0.047019474, 0.015142831, 0.029633312, 0.003947408, -0.029611275, -0.060817365, -0.028810414, -0.06828311, -0.020455647, -0.07756667, -0.040743787, 0.039471235, 0.011719791, -0.011171071, 0.07155256, -0.00232053, -0.025374796, -0.0067653554, -0.0032467803, 0.05687664, -0.0053391024, -0.0537165, 0.06393155, -0.043268748, 0.03477851, 0.0076147886, 0.0052478663, 0.032829277, 0.06782281, -0.041134, 0.0038805949, -0.022430127, -0.034901273, 0.012922938, -0.0054386077, 0.056455396, 0.035392053, -0.024007078, -0.041406337, -0.018672345, -0.03128725, -0.102861375, -2.0894292E-4, -0.009757686, 0.007514865, -0.07941969, 0.027783481, -0.03645121, 0.047711253, -0.014130004, -0.0031383825, 4.4106666E-4, -0.013607596, -0.036571465, -0.0027864233, 0.014011047, 0.016102068, -0.014125993, -0.017640907, 0.012896609, -0.005228941, -0.0151483985, 0.045150984, 0.034510832, -0.005458301, -0.030876895, 0.016430607, -0.07941773, -0.017809007, 0.032709543, 0.045819465, 0.030013492, 0.027040668, -0.026347885, 0.019060152, 0.08425903, -0.036772065, 0.005798364, 0.080342755, 0.025664663, 2.954409E-4, -0.011513682, 0.027842324, -0.0067500263, 0.022953197, 0.025111517, 0.0043567386, -0.076238714, 0.011444775, 0.002843227, 0.022591323, -0.04158587, -0.009256941, -0.06298163, 0.016665533, -0.05009554, -0.005289547, -0.017863628, 0.015074731, 0.019708904, 0.038801894, -0.026002284, -0.06957396, 0.016780673, 0.0065676165, 0.009342996, -0.0041535264, -0.011294206, 0.03484797, 0.07799633, -0.040186282, 0.023183705, -0.029850798, 0.00718968, -0.066980764, -0.030590303, -0.04786944, 0.019365689, 0.004246228, -0.03220564, 0.027918935, 0.023351235, 0.0065788287, 0.046684057, -0.0347386, -0.016440758, -0.017709889, 0.038760427, 0.01489383, -0.024673043, -0.01897858, -0.028980628, 8.0320315E-4, -0.06350929, -0.033831175, -0.008867018, 0.05993688, 0.009820553, -0.01718175, 0.071881376, 0.027410828, 0.010464776, -0.013566429, 0.083044045, 0.0185467, -0.0608657, -0.019901408, 0.030446157, -0.0061509553, -0.03291117, -0.027566962, -0.035407286, -0.014940865, -0.007364024, 0.017062578, -0.0023208912, -0.017681487, 0.033249274, 0.06568902, 0.0028817207, -0.0018500625, 0.004172928, 0.022354173, -4.1713633E-4, -0.041020896, -0.015584559, 0.025251323, -0.013291813, 0.07949704, 0.038074035, -0.00781783, -0.0649478, 0.0022130474, -0.005481779, 2.9529817E-4, 0.024249846, -0.044140533, -0.013781334, 0.060853947, 0.010753433, 0.06959813, -0.025984505, 0.010769482, 0.014492557, 0.03440985, -0.0027761061, 0.0016984236, 0.036999125, 0.026306633, -0.005000712, 0.020283392, -0.014401022, -0.011689808, 0.038070086, 0.017285049, -0.04483409, -0.011954739, -0.010914342, 0.01386349, 0.002462445, 0.036933377, 0.04820386, -0.040058248, -0.05964479, -0.019300474, -0.045699447, 0.02144554, -0.053158414, 0.026730591, -0.048208177, 0.03456711, 0.030431993, -0.028584491, -0.031200724, 1.4216627E-4, 0.07198847, -0.04634454, -0.015364805, -0.005090764, -0.07324053, -0.044619888, 0.032493304, 0.010959381, -0.04436248, 0.05047868, 0.014357394, -0.025333887, -0.010157695, 0.012750839, 0.023644388, -0.0068314294, -0.008499044, -0.021188095, -0.008431624, -0.008864346, -0.0022568116, -0.04528666, -0.030904165, 0.009856904, 0.018320508, -0.022673862, -0.07587775, 0.031852838, -0.008647556, -0.005760423, 0.022892796, -0.03343484, 0.0031994118, 0.01114707] 标 题:推荐系统构建的最佳实践指南 词向量:[0.020176865, 0.018013671, 0.020441825, -0.00817161, 0.07331785, -0.051497992, -0.008001804, -0.009821307, 0.01772255, 0.01185993, -0.033124562, 0.03846657, 0.015009669, 0.040160175, -0.036490418, -0.05288429, 0.017452706, 0.07770491, 1.2476006E-4, -0.016186768, 0.007361202, -0.047650225, -0.044357236, 0.0041307276, 0.011872713, -0.017730616, -0.023548584, 0.021989651, 9.2729804E-4, -0.0031401685, -0.10814663, 0.049524203, 0.028511299, -0.014449703, -0.03917067, -0.050791513, -0.00372236, -0.012571809, -0.037137218, 0.057121474, -0.019856542, 0.031745452, -0.013830771, 0.020373918, 0.024949305, -0.02923703, 0.034603216, -0.012404621, -0.0072062183, -0.0017996699, -0.05231095, -0.012444853, -0.007687434, 0.012115218, 0.04647616, -0.030036885, -0.035796095, -0.017427383, 0.0035970088, 0.0039387187, -0.003913366, 0.017365806, -0.004058628, -0.039199222, 0.011451096, 0.0407556, -0.0052178977, -0.017166857, -3.721325E-4, 0.021847943, 0.016629001, 0.024921775, 0.008685851, 0.02907511, -0.0055996357, 0.034402717, -0.038910817, -0.010842558, 0.0011091558, -0.018546566, 0.061938625, -0.07101797, 0.04701119, -0.05401508, 0.009883417, 0.022849942, 0.067329116, -0.017646562, -0.0027261165, -0.0206346, 0.0034308154, -0.0040649287, -0.07604849, -0.005528512, -0.072600424, -0.045190413, 0.0019274658, 0.0054807933, -0.106341675, -0.0031717469, -0.019709622, 0.0012288935, -0.027953282, -0.031454872, 0.0051185186, -0.04163962, 0.010661924, 0.01569962, -0.016102294, 0.006814643, -0.034805004, 0.14391613, 0.022362463, 0.017286437, 0.071684904, -8.053345E-4, 0.019037819, 0.041480135, 0.1391783, 0.029697701, -0.009604581, 0.012713719, 0.044421833, 0.016278392, -0.008103911, 0.004620498, -0.0040253275, -0.019940365, 0.019570045, 0.007761001, -0.0034458002, 0.003171224, 0.0013762292, -0.004427869, 0.035891734, -0.018802945, -0.007991557, -0.0660986, 9.6944993E-4, 0.077287726, -0.029514456, -0.02141512, 0.027198594, 0.013757113, -0.061589055, -0.048754703, -0.014838703, 0.027631544, 0.034173958, -0.031916812, -0.021070737, -0.11054544, 0.012875739, -0.029655086, 0.045511015, 0.03793455, -0.027144315, 0.017506242, 0.00508894, 0.0126864845, 0.010527922, -0.0640053, -0.020187728, 0.027680751, -0.011223648, 0.046826113, -0.032790765, -0.106516026, 0.01773984, -0.028330876, -0.092658415, 0.10020782, -0.024876457, -0.018661013, 0.0026548672, 0.031311266, -0.06357584, -0.019942261, -0.0015932824, 0.025942348, -0.012010198, 8.355615E-4, 0.0140656475, -0.025935594, 0.004825561, -0.0074821473, -0.008569689, 0.018069476, 0.051536113, 0.046916433, -0.004316404, -0.029892707, -0.022886503, 0.0059178923, -0.011857643, -0.00969995, 0.043526363, 0.011556709, -0.016502518, 0.004841694, -0.007530155, -0.048250727, 0.027448332, -0.046439085, 0.013366017, -0.0029213212, 0.024255773, -0.026490798, 0.03040603, -0.02037677, -0.059137385, -0.016380208, -0.0101097245, -0.023400038, 0.01613007, 0.007765635, -0.008269973, -0.008965154, 0.012272444, -0.0017407323, 0.012327957, -0.0126816565, -0.0316608, 0.018546997, -0.06256054, 0.0144605525, 0.015020388, 7.9761806E-4, -0.0025870192, 0.048064902, -0.008798499, -0.035233516, -0.015752718, -0.03356817, 0.009185835, 0.032802273, 0.031973332, 0.036410794, 0.06413215, 0.021557802, 0.0144509915, -0.12004858, 0.043086804, 0.0069246865, 0.0024493884, 0.026060792, 0.006235664, -0.035484966, -0.03346663, 0.05172515, -0.0029011732, -0.012780354, -0.031360354, -0.028327178, 0.0036724312, 0.004310559, 0.023579793, 0.028935231, 0.021871613, 0.010864367, -0.025159502, -0.026268406, -0.046991277, 0.031371437, 0.0024513511, 0.004981428, 0.010157341, -0.051233873, -0.029999997, -0.005193608, -0.0100606885, -0.048709083, -0.05773087, -0.026464453, 0.024324007, 0.01887182, -0.024238395, 0.0065502455, -0.007887902, -0.010915061, 0.013267882, 0.024642868, -0.005623145, -0.0033496642, -0.0042723967, 0.06359101, 0.03932942, 0.03325179, 0.004320938, 0.043876488, 0.02861801, 0.044250466, -0.038733568, -0.022712661, 0.00729201, -0.039833803, -0.0024204897, 0.0223828, 0.05798518, 0.008765158, -0.0123523325, -0.028370654, -0.04094028, -0.010352625, -0.10172127, 0.0057556788, 0.029153649, 0.02826799, 0.006713412, 0.04232893, 0.039565366, -0.027610453, -0.008420641, 0.00985716, -0.009440699, -0.005341049, -0.04171021, -0.012384966, -0.022974523, -0.0069387513, -0.006373196, -0.018619178, -0.0070117754, -0.013720579, 0.004229601, 0.041373376, -0.0035207842, 0.016793469, 0.015105755, 0.034255527, -0.06952758, -0.0075536934, -0.0023227835, 0.019785976, -0.013776368, 0.01479144, -0.00774451, 0.009553103, 0.05241517, 0.026198363, -0.0021252963, 0.04121885, -0.0045805345, 0.07279487, -0.0068406137, 0.015955126, -0.05417711, -0.010521043, 0.029305229, 0.0073839277, -0.059010975, 0.037357956, 0.03578287, -0.030060872, -0.032563403, 0.019322094, -0.06320648, -0.00749607, -0.01275475, -0.009370126, -0.037761655, 0.023242643, 0.018690052, 0.007040258, -0.014387473, -0.022421587, 0.028529283, -0.0077794944, 0.004904452, -0.00843547, -0.015684368, 0.004840789, 0.036845896, -0.005728872, -0.0039868387, -0.009858405, -0.040879983, -0.0762968, 0.009553022, -0.024299346, 0.02403893, -0.004941931, -0.022635007, 0.003961157, 0.011861349, 0.011483055, 0.024293076, -0.060592253, 0.025465438, 0.013555427, -0.008032102, 6.244019E-4, -0.0027587758, -0.03188872, -0.07057721, -0.028267879, -0.020278053, 0.0029825591, -0.016538702, 0.021478552, 0.025431482, 0.007633893, 0.016487455, 0.004694345, 0.011178508, 0.025491577, 0.031485066, -0.0011202341, -0.058632683, 0.023734566, -0.008195115, -0.008448813, -0.047648612, -0.014221561, -0.020561568, -0.0043484727, 0.036318794, 0.0029451933, 0.007861052, -0.033514123, 0.045885947, 0.033422004, -0.0037492283, -0.054315243, 0.013440647, -0.0125341965, -0.0011891556, -0.010152109, 0.008400864, -0.0062091555, 0.0012294148, 0.0125125665, -0.0038776326, -0.01183276, -0.031525597, 0.020881264, 0.0015806657, -0.023714384, 0.009878709, -0.025724586, 0.005190534, 0.046698768, 0.004041341, 0.054199964, 0.0071890764, -0.029679619, 0.008237211, 0.008493821, -0.02129553, 0.021552294, 0.039482098, 0.040688705, 0.008236304, -0.003771412, -0.02519112, 0.022473032, 0.031222725, 0.0029746594, 0.008879383, 0.0036140382, -0.0134337265, 0.029145526, 0.035609134, 0.021491151, 0.019321201, 0.0013479685, -0.03673674, -0.0056937733, -0.0069686435, 0.014062251, -0.036850754, 0.02264161, -0.0301922, 0.035565794, 0.009886495, -0.002910225, -0.030621635, -0.02312683, 0.045213647, -0.0373237, 0.015111429, -0.011161007, -0.07155504, -0.011960255, -0.009498806, -0.010005341, -0.028409267, 0.056986734, 0.013355508, 0.05131198, 0.008995293, -0.016548341, 0.025681585, 0.03776288, -0.009257083, 0.0018010105, -0.026507912, -0.021373514, -0.034264293, -0.059185162, -0.013329972, -0.0033269203, 0.028322576, -0.0036013226, -0.03527288, 0.05287127, 0.0056176097, -0.005692962, -0.0051955683, -0.030428046, 0.010498131, -0.004209829]
近邻查询
Elastiknn 提供了一个名为 elastiknn\_nearest\_neighbors 的查询,它可以像标准 Elasticsearch 查询一样在
GET /_search
请求中使用,也可以与标准 Elasticsearch 查询结合使用。使用问题:Python 中的图像分类算法实现
使用以下命令搜索:
GET /elastiknn-index-test/_search { "_source": [ "title", "content" ], "query": { "elastiknn_nearest_neighbors": { "field": "title_vec", "vec": { "values": [0.018334504, 0.024280138, 0.060270008, -0.00703231, 0.062384542, -0.033714343, -0.089470446, 0.01052925, 0.030128203, 0.016259717, -0.0041708597, 0.07508473, -1.4808029E-5, 0.07208159, -0.025966516, -0.035937995, -0.019125087, 0.02894972, -0.042877838, -0.016556587, 0.038519125, -0.05497628, -0.022371262, 0.0052025816, 0.06263389, -0.012726134, -0.0076508494, 0.048508916, 0.028581567, 0.025932636, -0.04068385, 0.03526424, 0.043063276, -0.0045921654, -0.03677957, -0.044359524, 0.022593407, -0.010674483, -0.030666064, 0.0104613975, -0.06754987, 0.03236309, 7.70517E-4, -0.017036248, 0.02123662, -0.054729816, 0.02336933, -0.028074302, 0.0039182375, -0.012599534, -0.097433954, 0.003237031, -0.037144624, 0.0058577955, -0.006290964, -0.025053108, -0.056105237, -0.008978243, -0.02688102, -0.0129503645, -0.008121182, -0.029434739, -0.022789279, -0.15444307, 0.014734943, 0.0065265135, 0.011842373, -0.036312938, 0.008875027, 0.03323997, 0.010595138, 0.06085125, -0.008255827, 0.042788893, -0.029874694, 0.051551364, -0.03500654, -0.026431937, 0.0052033635, -0.015055023, 0.08952935, -0.091231525, 0.027016645, -0.053308353, 0.005032279, 0.06008603, 0.07357959, -0.009609652, -0.003973632, -0.057170775, -0.04671027, -0.0048645018, -0.033610284, -0.003089503, -0.04178789, -0.0133626815, -0.040106755, -0.01489888, -0.04663396, -0.007279365, -0.02141951, -0.0034206498, -0.0060589705, -0.012498243, 0.018241506, -0.025400665, 0.008988069, 0.00954205, 0.0067822053, 0.026373647, 0.022600269, 0.11963017, -0.03573345, 0.01343307, 0.070174664, -0.040029693, 0.035598405, -0.004611507, 0.11729125, 0.059418842, -0.034857914, 0.017056938, 0.035486206, 0.031676758, -0.029388057, -0.054247927, -0.0048671667, -0.011214918, 0.046272412, -0.043653212, 0.005927232, -0.0060632927, -0.031766295, -0.0065160003, 0.06309202, 0.031696334, 0.010834883, -0.11858474, 0.015118523, 0.063034624, 0.0037512407, 0.019837465, 0.03365307, -0.04349621, -0.04838277, -0.014911847, -0.027467359, -0.03379531, 0.013083895, -0.023289312, -0.0122351255, -0.054968126, 0.027260402, -0.11570955, 0.0810923, 0.048150994, -0.02272245, 0.02167532, -0.07473878, 0.010024956, -0.045342594, -0.040995996, -0.003830455, 0.029282497, -0.031038662, 0.003926054, 0.015166712, -0.103414126, 0.02164625, -0.032480583, -0.06634523, 0.05898234, -0.03116015, -0.056782607, 0.025620563, 0.046223305, -0.068947636, -0.036224153, -0.0054390104, 0.034677997, -0.0012064547, -0.014691091, 0.016825436, 0.026014788, -0.046168473, 0.0064939386, -0.065640055, 0.044646576, 0.081166275, -0.0035780836, 0.022505274, -0.017853433, -0.039874192, 0.0027993673, -0.018770952, -0.02639674, 0.03317332, 0.051389776, -0.0042318776, 0.030204441, 0.013347908, -0.011683809, 0.03636062, -0.040875424, 0.012521518, 0.051372528, -0.019215906, -0.014054019, 0.025017811, -0.023925602, -0.040116623, -0.05494136, -0.015616297, -0.021807574, -0.015647572, -0.002124208, -0.051249743, -0.0096973395, 0.031446666, -0.02780494, 0.049189955, -0.029717067, 0.007830184, -0.05809309, -0.058707375, 0.030614134, 0.03524412, -0.034313593, 0.0112889055, 0.037618678, -0.033219296, -0.03769533, 0.005770336, -0.0017073594, -0.0040953867, 0.0075088665, 0.032104407, 0.038916063, 0.028482001, 0.018831132, 0.0196853, -0.0968549, 0.010079594, 0.024128614, -0.019420033, 0.053984404, -0.003876352, 0.009392947, 0.0022547024, 0.020174231, 0.0020515497, -0.003640826, -0.008331576, -0.09186866, 0.035954855, 0.03892597, 0.008403802, 0.032515895, 0.020249581, -0.015331016, -0.0033263185, 0.020847946, 0.024370752, -0.013341614, -0.025442561, -0.022106968, 0.033984475, -0.038147148, -0.06698335, -0.0025435148, -0.025766112, -0.02414459, -0.06505771, -0.035145413, 0.003635327, 0.06367122, -0.010155436, -0.0024379725, -4.5812075E-4, 0.018759023, 0.026726952, 0.024773588, -0.010748584, 0.02538642, -0.026085567, 0.047703348, 0.014363001, 0.009833401, 0.003947038, -0.0067513445, -0.0025483482, 0.020491373, -0.006104005, 0.02506443, 0.012511464, -0.0024656195, 0.0031949526, -1.6820827E-4, 0.021071967, 0.025954686, 0.019704795, -0.014183586, 0.045486882, 0.02204026, -0.07147743, -0.06660837, 0.032999154, 0.052447073, -0.017600073, 0.05710723, 0.028700078, -0.02923506, -0.04366008, 0.041560367, 0.055844158, -0.032798912, -0.05667255, -0.04946596, 0.003996133, -0.0025304968, 0.027621573, -0.042329058, -0.016636109, -0.04114112, -0.02273995, 0.05618336, 0.053753596, 0.018957214, -0.006487004, 0.04412349, -0.024048153, 0.017044146, 0.040858924, 0.040573496, -0.019988013, 0.019975705, -0.038978666, -0.015306521, 0.039337978, 0.09774831, -0.006554067, 0.08606857, 0.0585227, 0.05483377, 0.014958298, -0.0048144795, -0.037498493, -0.06519725, 0.003035377, 0.05896656, -0.0849043, 0.048408963, 0.021710442, -0.034050927, -0.0039758496, -0.07412198, -0.044429187, -0.008626837, -0.010930866, -0.048836604, 0.0011481331, -0.005427692, -0.018389411, 0.05359212, -0.026096955, -0.050659325, 0.059301037, -0.032735784, -0.030279418, -0.0030599472, 0.0142146405, -0.037663408, 0.0737027, -0.01956614, -0.037615348, -1.8160511E-4, -0.029712649, -0.089713134, 0.0011612815, -0.08236109, -0.00709404, 3.5659302E-4, -0.020743284, 0.016616344, -0.028921027, 0.009294537, 0.017093465, -0.032445095, 0.058222927, 0.008568909, 0.03677239, -0.03746566, 0.014174925, 0.03566817, -0.063097134, -0.019889072, -0.054829415, 0.03446317, -0.023996752, 0.008673901, 0.01951796, 0.005942422, 0.014864499, 0.0055181044, 0.007302453, -0.016944436, 0.10389743, -0.0020791213, -0.07125883, 0.0352342, -0.012946072, -0.021096097, -0.055850707, -0.04794835, -0.006866279, 0.021536127, 0.024503617, 0.017718377, -0.022436446, -0.027201625, 0.04263096, 0.023965012, -0.03678662, -0.08512502, 0.0036935005, -0.012211001, -0.031326313, -0.032609697, 0.06252547, -0.00652635, 0.016881183, -0.035671808, 0.0143922, -0.026964137, -0.022093501, 0.027231608, 0.0348811, 0.012951652, 0.035395734, -0.06288116, -0.024185633, 0.057561185, 0.055526968, 0.0584887, -9.907435E-4, -0.02232988, -0.016641524, -0.036239166, -0.008777217, 0.012492639, 0.0052368673, 0.03817985, 0.05986094, 0.005637845, -0.031989623, 0.032398615, 0.051869143, 0.0113028465, 0.0143419765, 0.012046146, 0.028136974, 0.027474927, 0.045836695, 0.015627034, 0.016563581, -0.02871797, -0.045672912, 0.0069116773, -0.004560964, 0.06710901, -0.057497114, 0.041751735, -0.04781406, -0.0069232797, 0.030780569, -0.00906503, 0.0020974206, 0.02144345, 0.081875205, -0.061759055, 0.0039352537, 0.0100662345, -0.060573794, -0.008153452, -0.013763209, 0.05385816, -0.016150707, 0.013022631, 0.0014990036, 0.06283503, 0.04291183, -0.028426409, 0.0060491026, 0.0480245, -0.076360986, -0.018043978, -0.026324745, -0.060814414, -0.025072854, -0.047528446, -0.057492107, 0.0045749904, 0.03887366, 0.020883841, -0.051129226, 0.034032185, 0.01762571, 0.009605042, -0.00511932, -0.091090634, 0.0070879753, 0.0021814427] }, "model": "lsh", "similarity": "cosine", "candidates": 50 } } }
响应结果如下:
{ "took": 4, "timed_out": false, "_shards": { "total": 12, "successful": 12, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 3, "relation": "eq" }, "max_score": 1.9501064, "hits": [ { "_index": "elastiknn-index-test", "_type": "_doc", "_id": "1", "_score": 1.9501064, "_source": { "title": "如何在Python中实现图像分类", "content": "图像分类是一种机器学习任务,用于将图像分为不同的类别。在Python中,可以使用深度学习框架如TensorFlow或PyTorch来实现图像分类算法。" } }, { "_index": "elastiknn-index-test", "_type": "_doc", "_id": "3", "_score": 1.564908, "_source": { "title": "构建推荐系统的最佳实践", "content": "推荐系统是一种用于向用户提供个性化建议和推荐的技术。构建一个有效的推荐系统需要考虑数据收集、特征工程、算法选择和评估等方面的最佳实践。" } }, { "_index": "elastiknn-index-test", "_type": "_doc", "_id": "2", "_score": 1.4582255, "_source": { "title": "使用Elasticsearch进行全文搜索", "content": "Elasticsearch是一种开源搜索和分析引擎,提供了强大的全文搜索功能。通过使用Elasticsearch的查询语法和过滤器,可以快速地搜索和检索大量文档。" } } ] } }
在过滤后的文档集上进行近邻查询
使用问题:Python 中的图像分类算法实现
使用以下命令搜索:
GET /elastiknn-index-test/_search { "size": 10, "_source": [ "title", "content" ], "query": { "function_score": { "query": { "bool": { "should": [ { "match_phrase": { "title": { "query": "图像分类算法" } } }, { "match_phrase": { "content": { "query": "图像分类算法" } } } ] } }, "functions": [ { "elastiknn_nearest_neighbors": { "field": "title_vec", "model": "exact", "similarity": "cosine", "vec": { "values": [0.018334504, 0.024280138, 0.060270008, -0.00703231, 0.062384542, -0.033714343, -0.089470446, 0.01052925, 0.030128203, 0.016259717, -0.0041708597, 0.07508473, -1.4808029E-5, 0.07208159, -0.025966516, -0.035937995, -0.019125087, 0.02894972, -0.042877838, -0.016556587, 0.038519125, -0.05497628, -0.022371262, 0.0052025816, 0.06263389, -0.012726134, -0.0076508494, 0.048508916, 0.028581567, 0.025932636, -0.04068385, 0.03526424, 0.043063276, -0.0045921654, -0.03677957, -0.044359524, 0.022593407, -0.010674483, -0.030666064, 0.0104613975, -0.06754987, 0.03236309, 7.70517E-4, -0.017036248, 0.02123662, -0.054729816, 0.02336933, -0.028074302, 0.0039182375, -0.012599534, -0.097433954, 0.003237031, -0.037144624, 0.0058577955, -0.006290964, -0.025053108, -0.056105237, -0.008978243, -0.02688102, -0.0129503645, -0.008121182, -0.029434739, -0.022789279, -0.15444307, 0.014734943, 0.0065265135, 0.011842373, -0.036312938, 0.008875027, 0.03323997, 0.010595138, 0.06085125, -0.008255827, 0.042788893, -0.029874694, 0.051551364, -0.03500654, -0.026431937, 0.0052033635, -0.015055023, 0.08952935, -0.091231525, 0.027016645, -0.053308353, 0.005032279, 0.06008603, 0.07357959, -0.009609652, -0.003973632, -0.057170775, -0.04671027, -0.0048645018, -0.033610284, -0.003089503, -0.04178789, -0.0133626815, -0.040106755, -0.01489888, -0.04663396, -0.007279365, -0.02141951, -0.0034206498, -0.0060589705, -0.012498243, 0.018241506, -0.025400665, 0.008988069, 0.00954205, 0.0067822053, 0.026373647, 0.022600269, 0.11963017, -0.03573345, 0.01343307, 0.070174664, -0.040029693, 0.035598405, -0.004611507, 0.11729125, 0.059418842, -0.034857914, 0.017056938, 0.035486206, 0.031676758, -0.029388057, -0.054247927, -0.0048671667, -0.011214918, 0.046272412, -0.043653212, 0.005927232, -0.0060632927, -0.031766295, -0.0065160003, 0.06309202, 0.031696334, 0.010834883, -0.11858474, 0.015118523, 0.063034624, 0.0037512407, 0.019837465, 0.03365307, -0.04349621, -0.04838277, -0.014911847, -0.027467359, -0.03379531, 0.013083895, -0.023289312, -0.0122351255, -0.054968126, 0.027260402, -0.11570955, 0.0810923, 0.048150994, -0.02272245, 0.02167532, -0.07473878, 0.010024956, -0.045342594, -0.040995996, -0.003830455, 0.029282497, -0.031038662, 0.003926054, 0.015166712, -0.103414126, 0.02164625, -0.032480583, -0.06634523, 0.05898234, -0.03116015, -0.056782607, 0.025620563, 0.046223305, -0.068947636, -0.036224153, -0.0054390104, 0.034677997, -0.0012064547, -0.014691091, 0.016825436, 0.026014788, -0.046168473, 0.0064939386, -0.065640055, 0.044646576, 0.081166275, -0.0035780836, 0.022505274, -0.017853433, -0.039874192, 0.0027993673, -0.018770952, -0.02639674, 0.03317332, 0.051389776, -0.0042318776, 0.030204441, 0.013347908, -0.011683809, 0.03636062, -0.040875424, 0.012521518, 0.051372528, -0.019215906, -0.014054019, 0.025017811, -0.023925602, -0.040116623, -0.05494136, -0.015616297, -0.021807574, -0.015647572, -0.002124208, -0.051249743, -0.0096973395, 0.031446666, -0.02780494, 0.049189955, -0.029717067, 0.007830184, -0.05809309, -0.058707375, 0.030614134, 0.03524412, -0.034313593, 0.0112889055, 0.037618678, -0.033219296, -0.03769533, 0.005770336, -0.0017073594, -0.0040953867, 0.0075088665, 0.032104407, 0.038916063, 0.028482001, 0.018831132, 0.0196853, -0.0968549, 0.010079594, 0.024128614, -0.019420033, 0.053984404, -0.003876352, 0.009392947, 0.0022547024, 0.020174231, 0.0020515497, -0.003640826, -0.008331576, -0.09186866, 0.035954855, 0.03892597, 0.008403802, 0.032515895, 0.020249581, -0.015331016, -0.0033263185, 0.020847946, 0.024370752, -0.013341614, -0.025442561, -0.022106968, 0.033984475, -0.038147148, -0.06698335, -0.0025435148, -0.025766112, -0.02414459, -0.06505771, -0.035145413, 0.003635327, 0.06367122, -0.010155436, -0.0024379725, -4.5812075E-4, 0.018759023, 0.026726952, 0.024773588, -0.010748584, 0.02538642, -0.026085567, 0.047703348, 0.014363001, 0.009833401, 0.003947038, -0.0067513445, -0.0025483482, 0.020491373, -0.006104005, 0.02506443, 0.012511464, -0.0024656195, 0.0031949526, -1.6820827E-4, 0.021071967, 0.025954686, 0.019704795, -0.014183586, 0.045486882, 0.02204026, -0.07147743, -0.06660837, 0.032999154, 0.052447073, -0.017600073, 0.05710723, 0.028700078, -0.02923506, -0.04366008, 0.041560367, 0.055844158, -0.032798912, -0.05667255, -0.04946596, 0.003996133, -0.0025304968, 0.027621573, -0.042329058, -0.016636109, -0.04114112, -0.02273995, 0.05618336, 0.053753596, 0.018957214, -0.006487004, 0.04412349, -0.024048153, 0.017044146, 0.040858924, 0.040573496, -0.019988013, 0.019975705, -0.038978666, -0.015306521, 0.039337978, 0.09774831, -0.006554067, 0.08606857, 0.0585227, 0.05483377, 0.014958298, -0.0048144795, -0.037498493, -0.06519725, 0.003035377, 0.05896656, -0.0849043, 0.048408963, 0.021710442, -0.034050927, -0.0039758496, -0.07412198, -0.044429187, -0.008626837, -0.010930866, -0.048836604, 0.0011481331, -0.005427692, -0.018389411, 0.05359212, -0.026096955, -0.050659325, 0.059301037, -0.032735784, -0.030279418, -0.0030599472, 0.0142146405, -0.037663408, 0.0737027, -0.01956614, -0.037615348, -1.8160511E-4, -0.029712649, -0.089713134, 0.0011612815, -0.08236109, -0.00709404, 3.5659302E-4, -0.020743284, 0.016616344, -0.028921027, 0.009294537, 0.017093465, -0.032445095, 0.058222927, 0.008568909, 0.03677239, -0.03746566, 0.014174925, 0.03566817, -0.063097134, -0.019889072, -0.054829415, 0.03446317, -0.023996752, 0.008673901, 0.01951796, 0.005942422, 0.014864499, 0.0055181044, 0.007302453, -0.016944436, 0.10389743, -0.0020791213, -0.07125883, 0.0352342, -0.012946072, -0.021096097, -0.055850707, -0.04794835, -0.006866279, 0.021536127, 0.024503617, 0.017718377, -0.022436446, -0.027201625, 0.04263096, 0.023965012, -0.03678662, -0.08512502, 0.0036935005, -0.012211001, -0.031326313, -0.032609697, 0.06252547, -0.00652635, 0.016881183, -0.035671808, 0.0143922, -0.026964137, -0.022093501, 0.027231608, 0.0348811, 0.012951652, 0.035395734, -0.06288116, -0.024185633, 0.057561185, 0.055526968, 0.0584887, -9.907435E-4, -0.02232988, -0.016641524, -0.036239166, -0.008777217, 0.012492639, 0.0052368673, 0.03817985, 0.05986094, 0.005637845, -0.031989623, 0.032398615, 0.051869143, 0.0113028465, 0.0143419765, 0.012046146, 0.028136974, 0.027474927, 0.045836695, 0.015627034, 0.016563581, -0.02871797, -0.045672912, 0.0069116773, -0.004560964, 0.06710901, -0.057497114, 0.041751735, -0.04781406, -0.0069232797, 0.030780569, -0.00906503, 0.0020974206, 0.02144345, 0.081875205, -0.061759055, 0.0039352537, 0.0100662345, -0.060573794, -0.008153452, -0.013763209, 0.05385816, -0.016150707, 0.013022631, 0.0014990036, 0.06283503, 0.04291183, -0.028426409, 0.0060491026, 0.0480245, -0.076360986, -0.018043978, -0.026324745, -0.060814414, -0.025072854, -0.047528446, -0.057492107, 0.0045749904, 0.03887366, 0.020883841, -0.051129226, 0.034032185, 0.01762571, 0.009605042, -0.00511932, -0.091090634, 0.0070879753, 0.0021814427] } } } ] } } }
响应结果如下:
{ "took": 2, "timed_out": false, "_shards": { "total": 12, "successful": 12, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 1, "relation": "eq" }, "max_score": 3.3932827, "hits": [ { "_index": "elastiknn-index-test", "_type": "_doc", "_id": "1", "_score": 3.3932827, "_source": { "title": "如何在Python中实现图像分类", "content": "图像分类是一种机器学习任务,用于将图像分为不同的类别。在Python中,可以使用深度学习框架如TensorFlow或PyTorch来实现图像分类算法。" } } ] } }
注:当使用
model:lsh
时,"candidates" 参数被忽略,向量不会像 elastiknn_nearest_neighbors 查询那样用精确的相似度重新评分。相反,得分是:max similarity score * proportion of matching hashes
。这是一个必要的结果,因为评分函数接受一个文档 ID,必须立即返回一个分数。使用查询重构器
使用问题:Python 中的图像分类算法实现
使用以下命令搜索:
GET /elastiknn-index-test/_search { "size": 10, "_source": [ "title", "content" ], "query": { "bool": { "should": [ { "match_phrase": { "title": { "query": "图像分类算法" } } }, { "match_phrase": { "content": { "query": "图像分类算法" } } } ] } }, "rescore": { "window_size": 10, "query": { "rescore_query": { "elastiknn_nearest_neighbors": { "field": "title_vec", "model": "exact", "similarity": "cosine", "vec": { "values": [0.018334504, 0.024280138, 0.060270008, -0.00703231, 0.062384542, -0.033714343, -0.089470446, 0.01052925, 0.030128203, 0.016259717, -0.0041708597, 0.07508473, -1.4808029E-5, 0.07208159, -0.025966516, -0.035937995, -0.019125087, 0.02894972, -0.042877838, -0.016556587, 0.038519125, -0.05497628, -0.022371262, 0.0052025816, 0.06263389, -0.012726134, -0.0076508494, 0.048508916, 0.028581567, 0.025932636, -0.04068385, 0.03526424, 0.043063276, -0.0045921654, -0.03677957, -0.044359524, 0.022593407, -0.010674483, -0.030666064, 0.0104613975, -0.06754987, 0.03236309, 7.70517E-4, -0.017036248, 0.02123662, -0.054729816, 0.02336933, -0.028074302, 0.0039182375, -0.012599534, -0.097433954, 0.003237031, -0.037144624, 0.0058577955, -0.006290964, -0.025053108, -0.056105237, -0.008978243, -0.02688102, -0.0129503645, -0.008121182, -0.029434739, -0.022789279, -0.15444307, 0.014734943, 0.0065265135, 0.011842373, -0.036312938, 0.008875027, 0.03323997, 0.010595138, 0.06085125, -0.008255827, 0.042788893, -0.029874694, 0.051551364, -0.03500654, -0.026431937, 0.0052033635, -0.015055023, 0.08952935, -0.091231525, 0.027016645, -0.053308353, 0.005032279, 0.06008603, 0.07357959, -0.009609652, -0.003973632, -0.057170775, -0.04671027, -0.0048645018, -0.033610284, -0.003089503, -0.04178789, -0.0133626815, -0.040106755, -0.01489888, -0.04663396, -0.007279365, -0.02141951, -0.0034206498, -0.0060589705, -0.012498243, 0.018241506, -0.025400665, 0.008988069, 0.00954205, 0.0067822053, 0.026373647, 0.022600269, 0.11963017, -0.03573345, 0.01343307, 0.070174664, -0.040029693, 0.035598405, -0.004611507, 0.11729125, 0.059418842, -0.034857914, 0.017056938, 0.035486206, 0.031676758, -0.029388057, -0.054247927, -0.0048671667, -0.011214918, 0.046272412, -0.043653212, 0.005927232, -0.0060632927, -0.031766295, -0.0065160003, 0.06309202, 0.031696334, 0.010834883, -0.11858474, 0.015118523, 0.063034624, 0.0037512407, 0.019837465, 0.03365307, -0.04349621, -0.04838277, -0.014911847, -0.027467359, -0.03379531, 0.013083895, -0.023289312, -0.0122351255, -0.054968126, 0.027260402, -0.11570955, 0.0810923, 0.048150994, -0.02272245, 0.02167532, -0.07473878, 0.010024956, -0.045342594, -0.040995996, -0.003830455, 0.029282497, -0.031038662, 0.003926054, 0.015166712, -0.103414126, 0.02164625, -0.032480583, -0.06634523, 0.05898234, -0.03116015, -0.056782607, 0.025620563, 0.046223305, -0.068947636, -0.036224153, -0.0054390104, 0.034677997, -0.0012064547, -0.014691091, 0.016825436, 0.026014788, -0.046168473, 0.0064939386, -0.065640055, 0.044646576, 0.081166275, -0.0035780836, 0.022505274, -0.017853433, -0.039874192, 0.0027993673, -0.018770952, -0.02639674, 0.03317332, 0.051389776, -0.0042318776, 0.030204441, 0.013347908, -0.011683809, 0.03636062, -0.040875424, 0.012521518, 0.051372528, -0.019215906, -0.014054019, 0.025017811, -0.023925602, -0.040116623, -0.05494136, -0.015616297, -0.021807574, -0.015647572, -0.002124208, -0.051249743, -0.0096973395, 0.031446666, -0.02780494, 0.049189955, -0.029717067, 0.007830184, -0.05809309, -0.058707375, 0.030614134, 0.03524412, -0.034313593, 0.0112889055, 0.037618678, -0.033219296, -0.03769533, 0.005770336, -0.0017073594, -0.0040953867, 0.0075088665, 0.032104407, 0.038916063, 0.028482001, 0.018831132, 0.0196853, -0.0968549, 0.010079594, 0.024128614, -0.019420033, 0.053984404, -0.003876352, 0.009392947, 0.0022547024, 0.020174231, 0.0020515497, -0.003640826, -0.008331576, -0.09186866, 0.035954855, 0.03892597, 0.008403802, 0.032515895, 0.020249581, -0.015331016, -0.0033263185, 0.020847946, 0.024370752, -0.013341614, -0.025442561, -0.022106968, 0.033984475, -0.038147148, -0.06698335, -0.0025435148, -0.025766112, -0.02414459, -0.06505771, -0.035145413, 0.003635327, 0.06367122, -0.010155436, -0.0024379725, -4.5812075E-4, 0.018759023, 0.026726952, 0.024773588, -0.010748584, 0.02538642, -0.026085567, 0.047703348, 0.014363001, 0.009833401, 0.003947038, -0.0067513445, -0.0025483482, 0.020491373, -0.006104005, 0.02506443, 0.012511464, -0.0024656195, 0.0031949526, -1.6820827E-4, 0.021071967, 0.025954686, 0.019704795, -0.014183586, 0.045486882, 0.02204026, -0.07147743, -0.06660837, 0.032999154, 0.052447073, -0.017600073, 0.05710723, 0.028700078, -0.02923506, -0.04366008, 0.041560367, 0.055844158, -0.032798912, -0.05667255, -0.04946596, 0.003996133, -0.0025304968, 0.027621573, -0.042329058, -0.016636109, -0.04114112, -0.02273995, 0.05618336, 0.053753596, 0.018957214, -0.006487004, 0.04412349, -0.024048153, 0.017044146, 0.040858924, 0.040573496, -0.019988013, 0.019975705, -0.038978666, -0.015306521, 0.039337978, 0.09774831, -0.006554067, 0.08606857, 0.0585227, 0.05483377, 0.014958298, -0.0048144795, -0.037498493, -0.06519725, 0.003035377, 0.05896656, -0.0849043, 0.048408963, 0.021710442, -0.034050927, -0.0039758496, -0.07412198, -0.044429187, -0.008626837, -0.010930866, -0.048836604, 0.0011481331, -0.005427692, -0.018389411, 0.05359212, -0.026096955, -0.050659325, 0.059301037, -0.032735784, -0.030279418, -0.0030599472, 0.0142146405, -0.037663408, 0.0737027, -0.01956614, -0.037615348, -1.8160511E-4, -0.029712649, -0.089713134, 0.0011612815, -0.08236109, -0.00709404, 3.5659302E-4, -0.020743284, 0.016616344, -0.028921027, 0.009294537, 0.017093465, -0.032445095, 0.058222927, 0.008568909, 0.03677239, -0.03746566, 0.014174925, 0.03566817, -0.063097134, -0.019889072, -0.054829415, 0.03446317, -0.023996752, 0.008673901, 0.01951796, 0.005942422, 0.014864499, 0.0055181044, 0.007302453, -0.016944436, 0.10389743, -0.0020791213, -0.07125883, 0.0352342, -0.012946072, -0.021096097, -0.055850707, -0.04794835, -0.006866279, 0.021536127, 0.024503617, 0.017718377, -0.022436446, -0.027201625, 0.04263096, 0.023965012, -0.03678662, -0.08512502, 0.0036935005, -0.012211001, -0.031326313, -0.032609697, 0.06252547, -0.00652635, 0.016881183, -0.035671808, 0.0143922, -0.026964137, -0.022093501, 0.027231608, 0.0348811, 0.012951652, 0.035395734, -0.06288116, -0.024185633, 0.057561185, 0.055526968, 0.0584887, -9.907435E-4, -0.02232988, -0.016641524, -0.036239166, -0.008777217, 0.012492639, 0.0052368673, 0.03817985, 0.05986094, 0.005637845, -0.031989623, 0.032398615, 0.051869143, 0.0113028465, 0.0143419765, 0.012046146, 0.028136974, 0.027474927, 0.045836695, 0.015627034, 0.016563581, -0.02871797, -0.045672912, 0.0069116773, -0.004560964, 0.06710901, -0.057497114, 0.041751735, -0.04781406, -0.0069232797, 0.030780569, -0.00906503, 0.0020974206, 0.02144345, 0.081875205, -0.061759055, 0.0039352537, 0.0100662345, -0.060573794, -0.008153452, -0.013763209, 0.05385816, -0.016150707, 0.013022631, 0.0014990036, 0.06283503, 0.04291183, -0.028426409, 0.0060491026, 0.0480245, -0.076360986, -0.018043978, -0.026324745, -0.060814414, -0.025072854, -0.047528446, -0.057492107, 0.0045749904, 0.03887366, 0.020883841, -0.051129226, 0.034032185, 0.01762571, 0.009605042, -0.00511932, -0.091090634, 0.0070879753, 0.0021814427] } } }, "query_weight": 0, "rescore_query_weight": 1 } } }
响应结果如下:
{ "took": 2, "timed_out": false, "_shards": { "total": 12, "successful": 12, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 1, "relation": "eq" }, "max_score": 1.9501064, "hits": [ { "_index": "elastiknn-index-test", "_type": "_doc", "_id": "1", "_score": 1.9501064, "_source": { "title": "如何在Python中实现图像分类", "content": "图像分类是一种机器学习任务,用于将图像分为不同的类别。在Python中,可以使用深度学习框架如TensorFlow或PyTorch来实现图像分类算法。" } } ] } }
Neo4J 与 Elasticsearch
对于主要涉及配置和操作指导的问题,推荐使用搜索引擎类的知识库,如 Elasticsearch、Solr 或 Azure Cognitive Search。这些搜索引擎具有强大的全文搜索和相关性排序功能,适用于快速检索和匹配与用户问题最相关的知识库条目。
这类搜索引擎使用基于规则的检索算法(如 TF-IDF、词频匹配等)来处理用户的查询,并返回匹配程度最高的结果。它们通常具有高性能和扩展性,能够处理大规模的数据集,并提供快速的响应时间。
针对相关的问题,你可以构建一个包含各种指南、操作步骤和最佳实践的知识库。通过使用合适的检索算法和关键字匹配,搜索引擎可以根据用户提供的查询快速找到与配置相关的知识库条目,并按相关性进行排序。
Elasticsearch 倒排索引和 TF-IDF 打分
倒排序索引
在关系数据库系统里,索引是检索数据最有效率的方式。但对于搜索引擎,它并不能满足其特殊要求,比如海量数据下比如百度或者谷歌要搜索百亿级的网页,如果使用类似关系型数据库使用的 B+ 树索引,可想而知其对 cpu 的计算能力要求得有多高。其次关系型数据库中一般存储的都是结构化的数据,数据格式都是一定的,操作上一般也都是 curd 等比较简单的操作。
倒排索引区别于正向索引,一般的倒排索引被用来做全文搜索。比如现在有一本 10w 字的书,单词使用量为 3k,我要从中搜索某个词出现的章节,我们该怎么做?
- 正排索引:遍历这本书,记录该次出现的章节。我们几乎要遍历完 10w 个词才能统计完。
- 倒排索引:建立倒排索引,将每个词作为 key,该词出现的章节为 value。我们只要在 3k 个单词中找到我们的目标词即可。
这样的话,显然倒排索引对于全文搜索性能更好。一般的正排索引是以 key 找 value,而倒排索引则是以 value 找 key。反转了 key-value 的关系。
在 Elasticsearch 中 text 类型字段默认只会建立倒排索引,其它几种类型在建立倒排索引的时候还会建立正排索引,当然 Elasticsearch 是支持自定义的。在这里这个正排索引其实就是 Doc Value。
TF-IDF 算法
TF-IDF(term frequency–inverse document frequency)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF 是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF 加权的各种形式常被搜寻引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了 TF-IDF 以外,因特网上的搜寻引擎还会使用基于连结分析的评级方法,以确定文件在搜寻结果中出现的顺序。
Term frequency:搜索文本中的各个词条在 field 文本中出现了多少次,出现次数越多,就越相关
在 es 中进行全文搜索时,搜索结果的匹配度也是采用的 TF-IDF 算法。这个匹配度是能够在 es 的元数据 _score 属性中体现出来的。通过实验验证一下。
首先建立一个索引
PUT /my_index?pretty
插入数据
PUT /my_index/my_index_type/1
{
"content":"The quick brown fox jumped over the lazy dog"
}
PUT /my_index/my_index_type/2
{
"content":"Quick brown foxes jump over lazy dogs in summer"
}
查询数据
GET /my_index/my_index_type/_search
{
"query": {
"match": {
"content": "quick"
}
}
}
搜索结果
{
"took": 8,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 2,
"relation": "eq"
},
"max_score": 0.18232156,
"hits": [
{
"_index": "my_index",
"_type": "my_index_type",
"_id": "2",
"_score": 0.18232156,
"_source": {
"content": "Quick brown foxes jump over lazy dogs in summer"
}
},
{
"_index": "my_index",
"_type": "my_index_type",
"_id": "1",
"_score": 0.18232156,
"_source": {
"content": "The quick brown fox jumped over the lazy dog"
}
}
]
}
}
通过以上结果我们很容易发现,es 通过 TF-IDF 算法计算出来了相关度 _score。并且还勿略了大小写。
如果我们搜索单词 “summer”,结果如下所示,只匹配到了 doc1。
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 0.6931471,
"hits": [
{
"_index": "my_index",
"_type": "my_index_type",
"_id": "2",
"_score": 0.6931471,
"_source": {
"content": "Quick brown foxes jump over lazy dogs in summer"
}
}
]
}
}
框架
AIAS (AI Acceleration Suite)
AIAS 提供: 包括 SDK,平台引擎,场景套件在内,合计超过 100 个项目组成的项目集。
个人理解为 AI 的 Demo 项目集吧。(里头有 DJL 的使用代码)
Deep Java Library
Deep Java Library(DJL)是一个开源的、高水平的、与引擎无关的深度学习的 Java 框架。DJL 的设计是为了让 Java 开发者容易上手和简单使用。DJL 提供了一个原生的 Java 开发体验,其功能与其他普通的 Java 库一样。
你不需要成为机器学习/深度学习专家就可以开始使用。你可以把你现有的 Java 专业知识作为学习和使用机器学习和深度学习的一个跳板。你可以使用你喜欢的 IDE 来构建、训练和部署你的模型。DJL 使得这些模型与你的 Java 应用程序的集成变得非常容易。
因为 DJL 是与深度学习引擎无关的,所以你在创建项目时不必在引擎之间做出选择。你可以在任何时候切换引擎。为了确保最佳性能,DJL 还提供了基于硬件配置的 CPU/GPU 自动选择。
Deeplearning4j(DL4J)
Deeplearning4j 基于广泛使用的编程语言 Java——同时也兼容 Clojure,并且包括 Scala 的 API。它由自有的开源数值计算库 ND4J 驱动,可使用 CPU 或 GPU 运行。 Deeplearning4j 是开源项目,主要由位于旧金山的一支机器学习团队开发,团队由 Adam Gibson 领导。Deeplearning4j 是谷歌 Word2vec 页面上列出的唯一一个在 Java 环境下实施 Word2vec 的开源项目。
Deeplearning4j 已经用于多项商业和科研应用。其代码由 GitHub 托管,并在谷歌小组上设有支持论坛。
这一框架是可组合的,即受限玻尔兹曼机、卷积网络、自动编码器、递归网络等浅层神经网络可以相互叠加,组合成不同类型的深度网络。
TensorFlow for Java
TensorFlow 可以在任何 JVM 上运行,用于构建,训练和运行机器学习模型。它带有一系列实用程序和框架,可帮助完成在该领域工作的数据科学家和开发人员常见的大多数任务。Java 和其他 JVM 语言,如 Scala 或 Kotlin,经常用于世界各地的小型到大型企业,这使得 TensorFlow 成为大规模采用机器学习的战略选择。
Apache Spark
Apache Spark 是一个通用的大数据处理框架,提供了分布式计算和数据处理的能力,适用于处理大规模数据集和复杂的计算任务。
在知识库问答系统中,你可以使用 Spark 来处理和分析知识库数据,进行预处理、特征提取和模型训练等操作。以下是一些可以整合 Spark 的应用场景:
- 数据清洗和预处理:使用 Spark 可以高效地处理大规模的知识库数据,进行数据清洗、去重、标准化等预处理操作,确保数据质量和一致性。
- 特征提取和表示学习:Spark 提供了机器学习库(如 MLlib)和分布式计算的功能,可以应用各种特征提取和表示学习算法,从知识库数据中提取有用的特征,并构建表示模型。
- 分布式计算和并行处理:Spark 的分布式计算能力使得可以并行处理大规模的知识库数据,加速数据处理和模型训练的过程,提高系统的性能和可扩展性。
- 批处理和实时处理:Spark 支持批处理和实时处理模式,可以根据需求选择适合的数据处理模式。批处理适用于离线数据分析和模型训练,而实时处理可以用于对用户实时查询进行响应和推荐。
朴素贝叶斯算法
应用场景
Spark 中的朴素贝叶斯算法主要用于分类任务,包括文本分类、垃圾邮件过滤、情感分析等。朴素贝叶斯分类器是基于贝叶斯定理和特征条件独立性假设的统计学算法,适用于处理大规模数据集和高维特征。
在知识库问答系统中,朴素贝叶斯算法可以用于以下方面:
- 文本分类:知识库中的问题和答案可以被视为文本数据,朴素贝叶斯分类器可以根据问题的特征(如关键词、句法结构等)将其分类到不同的问题类型或主题分类中。这有助于对用户的问题进行归类和自动化处理。
- 意图识别:朴素贝叶斯算法也可用于识别用户问题的意图。通过训练一个朴素贝叶斯分类器,使用一组标记好的意图样本数据,系统可以根据用户的输入判断其意图是询问配置还是经营处理等,以便提供更准确和相关的回答。
- 垃圾信息过滤:知识库中可能包含垃圾信息或无关紧要的内容,朴素贝叶斯算法可以用于垃圾信息过滤。通过训练一个朴素贝叶斯分类器,使用一组已标记的垃圾信息和非垃圾信息样本数据,系统可以自动判断新的知识库条目是否为垃圾信息,并将其过滤掉。
实际应用
有如下的训练样本:
- 训练样本 1: 问题文本:"如何设置域名?",分类标签:1
- 训练样本 2: 问题文本:"设置域名的步骤有哪些?",分类标签:1
- 训练样本 3: 问题文本:"什么是域名?",分类标签:2
收集知识库数据,进行数据清洗和预处理,标注分类信息,构建训练集。将训练集中的文本数据转换为数值向量表示,例如使用词袋模型或 TF-IDF 方法。使用训练集的特征向量和对应的分类标签训练朴素贝叶斯模型。该模型学习各个特征在每个分类中的条件概率。
输入的新问题,将其转换为特征向量,并使用训练好的朴素贝叶斯模型预测其所属分类,例如:
用户输入的问题 "如何对域名进行设置?" 应该属于分类 1,即配置相关的问题。因为标题为 "如何设置域名" 的知识库条目属于分类 1,而用户的问题与该知识库条目的主题和内容相匹配,因此可以将用户的问题分类为 1。
BERT
介绍
基于变换器的双向编码器表示技术(英语:Bidirectional Encoder Representations from Transformers,BERT)是用于 NLP 的预训练技术,包括但不限于以下几个方面:
- 文本分类:BERT 可以将输入的文本进行分类,例如情感分析、垃圾邮件过滤、新闻分类等。
- 命名实体识别(NER):BERT 可以识别文本中的实体,如人名、地名、组织机构名等。
- 问答系统:BERT 可以用于问答任务,包括基于检索的问答和生成式问答,用于回答用户提出的问题。
- 句子关系判断:BERT 可以判断两个句子之间的关系,如蕴含关系判断、相似度计算等。
- 序列标注:BERT 可以对序列进行标注,如词性标注、命名实体标注等。
- 机器翻译:BERT 可以用于将一种语言的文本翻译成另一种语言。
- 文本生成:BERT 可以生成符合语法和语义规则的文本,如自动摘要、文本补全、对联生成等。
BERT 基于 Transformer 架构,通过在大规模的无标签文本上进行训练,学习到了丰富的语言表示。BERT 模型的特点是双向的、深层的、基于自注意力机制,能够捕捉到词语之间的上下文关系和语义信息。
BERT-QA 利用预训练好的 BERT 模型进行问答任务,它通过对问题和文本段落进行编码,将问题和文本的表示进行匹配和推理,从文本中抽取出答案或生成回答。它的流程通常包括以下步骤:
- 输入处理:将问题和文本段落进行分词,并添加特殊标记,如"[CLS]"表示问题的开头,"[SEP]"表示问题和文本的分隔。
- 编码表示:将经过分词和标记的输入转换为对应的词向量表示,然后通过 BERT 模型进行编码,得到问题和文本段落的表示。
- 匹配与推理:利用问题和文本的表示进行匹配和推理操作,比如计算问题和文本的相似度、进行关系推理等。
- 答案抽取或生成:根据问题和文本的匹配结果,抽取文本中与问题相关的答案片段,或者通过生成模型生成自然语言形式的回答。
BERT-QA 在问答任务中取得了很好的效果,尤其在对于长文本和复杂语义的理解上有一定优势。通过预训练的方式,BERT 模型能够学习到更加丰富的语言表示,从而提高了问答系统的准确性和效果。
需要注意的是,BERT-QA 需要在训练阶段使用带有标注答案的数据进行微调,以适应特定的问答任务和领域。微调过程可以通过使用有监督的学习方法来调整 BERT 模型的参数,使其更好地适应具体的问答需求。
大致应用流程
假设我们有一个知识库,其中包含以下两个条目:
知识库条目 1: 问题:什么是人工智能? 答案:人工智能(Artificial Intelligence,AI)是一门研究如何使计算机能够像人一样思考和行动的科学与技术。它涵盖了机器学习、自然语言处理、计算机视觉等多个领域。
知识库条目 2: 问题:什么是机器学习? 答案:机器学习(Machine Learning)是人工智能的一个分支,它关注如何通过计算机算法和模型,使计算机系统从数据中自动学习和改进性能。机器学习应用广泛,包括图像识别、语音识别、推荐系统等领域。
现在,我们使用 BERT-QA 来回答用户的问题:"什么是机器学习?"
输入处理:
- 问题:什么是机器学习?
- 文本段落:知识库条目 1 的答案和知识库条目 2 的答案
编码表示:
- 利用预训练好的 BERT 模型,将问题和文本段落转换为对应的词向量表示。
匹配与推理:
- 计算问题和文本段落之间的相似度或关联程度,可以使用余弦相似度等方法。
- 在本例中,BERT-QA 会计算问题与知识库条目 2 的答案之间的相似度。
答案抽取或生成:
- 根据相似度结果,BERT-QA 会判断知识库条目 2 的答案与问题更相关。
- 因此,BERT-QA 会抽取知识库条目 2 的答案:"机器学习(Machine Learning)是人工智能的一个分支,它关注如何通过计算机算法和模型,使计算机系统从数据中自动学习和改进性能。机器学习应用广泛,包括图像识别、语音识别、推荐系统等领域。"
通过 BERT-QA,我们可以将用户的问题与知识库中的答案进行匹配和推理,从而准确地回答用户的问题。BERT-QA 利用预训练的 BERT 模型的语义理解能力,通过计算问题与文本之间的相似度,找到最相关的答案并提供给用户。这样的问答系统能够提供高质量的回答,并适用于各种领域和问题类型。为了匹配到知识库条目 2,用户的问题需要与知识库条目 2 的问题有一定的相似性或相关性。
以下是一些用户输入的问题示例,可以匹配到知识库条目 2:
用户输入问题:"机器学习的定义是什么?"
- 这个问题与知识库条目 2 中的问题 "什么是机器学习?" 相似,可以匹配到知识库条目 2。
用户输入问题:"机器学习有哪些应用领域?"
- 虽然这个问题不是与知识库条目 2 中的问题完全相同,但它涉及到机器学习的应用领域,与知识库条目 2 的内容相关,因此也可以匹配到知识库条目 2。
用户输入问题:"机器学习和人工智能有什么关系?"
- 这个问题与知识库条目 2 中的问题没有直接的相似性,但它涉及到机器学习和人工智能的关系,与知识库条目 2 的内容相关,因此也可以匹配到知识库条目 2。
总之,用户输入的问题需要涉及到与知识库条目 2 相关的概念、领域或问题,具有一定的相关性或相似性,才能匹配到知识库条目 2。BERT-QA 模型会通过计算问题和文本段落之间的相似度来确定最相关的答案。
预训练模型库
哈工大讯飞联合实验室
基于 TensorFlow/PyTorch + Transformers 的 中文 BERT-wwm 系列模型
CLUE 预训练模型
基于 TensorFlow/PyTorch + Transformers 的 CLUE Pretrained Models
高质量中文预训练模型集合:最先进大模型、最快小模型、相似度专门模型
百度预训练模型 ERNIE/BERT
基于 PaddlePaddle 的 ERNIE
阿里云预训练模型 BERT 等
基于 PAI-TensorFlow 的 EasyTransfer 文本匹配实践
百度 ernie
pytorch 实现 nghuyong/ernie-1.0-base-zh
ERNIE(Enhanced Representation through kNowledge IntEgration)是由百度在 2019 年提出的,旨在通过知识掩蔽策略即实体级掩蔽和短语级掩蔽来学习语言表示。实验结果表明,ERNIE 在五个中文自然语言处理任务上取得了最先进的结果,包括自然语言推理、语义相似性、命名实体识别、情感分析和问题回答。
KB-QA 项目
基于 Neo4j 图数据库构建知识图谱,提供知识图谱的增删改查;基于知识图谱和策略构建智能问答引擎
以 Spring Boot 框架为载体,通过集成 hanLP、neo4j、spark-mllib 实现基于电影知识图谱的简易问答系统。
首先启动 springboot 后在浏览器中访问 8080 端口,接着在网页上输入关于电影的一些问题,前端页面通过 AJAX 请求将问题发送到后端接口,后端接收到请求后,先加载问题模板、字典、分类模型及自定义字典;再对问题分词后利用分类模型将原问题匹配到对应的问题模板上;最后针对不同种类的问题从图数据库 neo4j 中查询对应的答案并返回。
医疗系统知识图谱问答(neo4j)
基于自然语言处理的知识库系统、咨询、问答库
利用 HanLP 加载词典,利用词向量进行语义相似度分析
参考文档
- ##### Elasticsearch 倒排索引和 TF-IDF 打分 ↩