首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

没数据也能玩转BERT!无监督语义匹配实战

里面分成了Server端和Client端,其中Server端就是加载BERT预训练模型和根据Client传过来的句子返回向量编码,而Client端只需要向Server传原始句子,得到向量编码后利用编码干活即可...而获取句子编码方面是将整个句子所有字编码取平均,若是经过微调之后,选择CLS标签也不错。 相似度怎么衡量?...输出的query和词的句子向量计算完cos相似度之后,不建议用阈值,而应当选择cos相似度最高的几个词,因为cos计算相似度时所有维度权重相同,而编码后的向量足足有768维,其中对实际业务query影响较大的维度不多...预先加载好Server的BERT模型和gensim的词库向量,对于新来的每个query,首先通过BERT得到向量表示,然后扔到gensim中查找最接近的几个词语返回。 看到这里似乎可以结束了?...效果优化二:BERT微调 前文提到,如果有业务相关的数据用于微调会更好,这里指的业务相关不一定要完全和任务一样,例如这里是语义匹配,如果手里有该业务的意图分类的训练语料,那也可以用来微调,实验证明效果会好一些

2.2K30

腾讯词向量实战:通过Annoy进行索引和快速查询

学习一个东西最直接的方法就是从官方文档走起:https://github.com/spotify/annoy , Annoy是Spotify开源的一个用于近似最近邻查询的C++/Python工具,对内存使用进行了优化...能够快速实时的查找它的最近邻就非常有意义了,Annoy诞生于Spotify的Hack Week,之后被用于Sptify的音乐推荐系统,这是它的诞生背景: There are some other libraries...做词向量的索引和查询这个问题,在用Annoy玩腾讯词向量之前,我google了一下相关的资料,这篇文章《超平面多维近似向量查找工具annoy使用总结》提到了一个特别需要注意的坑: 但是我还是想弄明白到底怎么回事...,自然语言处理和AINLP公众号后台的结果基本一致 # 感兴趣的同学可以关注AINLP公众号,查询:相似词 自然语言处理 In [33]: for item in tc_index.get_nns_by_item...超平面多维近似向量查找工具annoy使用总结 https://zhuanlan.zhihu.com/p/50604120 topk相似度性能比较(kd-tree、kd-ball、faiss、annoy

3.4K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ​我如何用Annoy和ThreadPool把相似度计算加速360倍

    背景故事 我最近的一个项目中需要大量查询一个词的相似词,而无论是英文的WordNet,还是中文的同义词词林,都覆盖面太窄,我决定借助训练好的Word2Vec模型,使用gensim库,调用它经典的.most_similar...因为这个gensim中查询相似词,默认是直接brute-force search,即我会把当前查询的词,跟词表里所有的词都计算一个相似度,然后给你排序返回。...我果断kill掉了程序,看着任务管理器缓缓下降的CPU利用率曲线,我和CPU们都进入了贤者时间。...之前也了解过ANN算法,即近似最近邻算法,于是我开始在Google上搜索有关ANN和gensim的内容,终于,找到了这篇文章的主角——Annoy,而且我发现,gensim其实已经对Annoy做了封装,支持使用...树越多,结果越精确,但建树和查询的速度会变慢; 我也测试了100或者500棵树,前者的相似度精度不够,后者则太慢(大概30~50小时?) 4.

    63320

    基于知识图谱的问答系统,BERT做命名实体识别和句子相似度

    其实构建知识图谱的核心在于命名实体识别和关系抽取,围绕这两个方面也有很多细致的工作,比如如何解决实体的歧义,进行实体消歧;如何进行多关系的抽取等。...构造Triple的方法为从知识库中反向查找答案,根据问题过滤实体,最终筛选得到,也会存在少量噪音数据。...该Triple之后用于构建实体识别和属性选择等任务的数据集。 问答对样例如下所示: ? 技术方案 基于知识图谱的自动问答拆分为2 个主要步骤:命名实体识别步骤和属性映射步骤。...(attribute)属性的相似度,将最相似的三元组的答案作为答案,并与正确的答案进行匹配,correct +1 目前这2个是一起做的,更注重的是测试性能,所以并没有像Retrieval QA那样做召回...反思 其实用question和attribute进行一个相似度计算做排序是有缺陷的,毕竟question的句子明显更长,语义明显比attribute更丰富,单拿attribute进行匹配有种断章取义的感觉

    3.6K10

    文本情感识别系统python+Django网页界面+SVM算法模型+数据集

    NLTK库是Python中常用的自然语言处理库,其中包含了许多有用的函数和工具。我们首先将文本进行分句和分词处理。分句将文本拆分成句子,而分词则将句子拆分成单词。...接着,我们可以使用训练好的Word2Vec模型来查找与给定词最相似的词。在示例代码中,我们查找与词'whale'最相似的词,并打印出结果。...除了查找相似词之外,Word2Vec还可以用于计算词语之间的相似度。我们可以使用similarity方法来计算两个词之间的余弦相似度。...和词'ship'之间的余弦相似度,并将结果打印出来。...Word2Vec算法的应用广泛,可以用于词义相似度计算、文本分类、信息检索等任务中,为我们提供了丰富的语义分析能力。希望本文对你理解和应用Word2Vec有所帮助。

    42820

    TOP20你用了几个?Python人工智能与机器学习开源项目

    Contributors: 327 (24% up), Commits: 27931, Github URL: Theano Gensim :一种支持可扩展的统计语义,分析用于语义结构的文本文档,检索语义相似的文档等功能的...Contributors: 262 (81% up), Commits: 3549, Github URL: Gensim Caffe:由伯克利视觉和学习中心(BVLC)和社区贡献者开发的深度学习框架...Contributors: 39 (5.4% up), Commits: 2721, Github URL: Pymc Deap:一种用于快速原型设计和测试思想的新型演化计算框架。...):一种用于搜索接近给定查询点的空间点。...Contributors: 35 (46% up), Commits: 527, Github URL: Annoy PyBrain:一种模块化的机器学习库,使用简单,支持用户测试和分析自己的算法。

    58620

    Top 20-Python 机器学习开源项目

    Gensim 是一个免费的 Python 库,它包含可扩展的统计语义,分析纯文本文档的语义结构,以及检索相似语义的文档等功能。...PyBrain 是一个模块化的 Python 机器学习库。它致力于为机器学习任务提供灵活易上手但功能强大的算法,和一系列用于测试和比较算法的预定义环境。...它提供了一个可扩展的框架和一个用于分类,回归,特征选择,数据导入导出等算法的高级接口。...Annoy (Approximate Nearest Neighbors Oh Yeah) 是一个带有 Python 绑定的 C++ 库,用于在空间中找到和已知的查询点临近的点。...Deap 是一个创新的,仍在发展中的计算框架,用于快速构建原型和测试方法。它旨在使算法和数据结构更加清晰透明。它与并行机制(如多进程和 SCOOP 模块)完美协调。

    90680

    推荐:机器学习 Python库Top 20

    Gensim是一个免费的 Python 库,它包含可扩展的统计语义,分析纯文本文档的语义结构,以及检索相似语义的文档等功能。...PyBrain是一个模块化的 Python 机器学习库。它致力于为机器学习任务提供灵活易上手但功能强大的算法,和一系列用于测试和比较算法的预定义环境。...它提供了一个可扩展的框架和一个用于分类,回归,特征选择,数据导入导出等算法的高级接口。...Annoy (Approximate Nearest Neighbors Oh Yeah)是一个带有 Python 绑定的 C++ 库,用于在空间中找到和已知的查询点临近的点。...Deap是一个创新的,仍在发展中的计算框架,用于快速构建原型和测试方法。它旨在使算法和数据结构更加清晰透明。它与并行机制(如多进程和 SCOOP 模块)完美协调。

    95580

    玩转腾讯词向量:Game of Words(词语的加减游戏)

    上一篇文章《腾讯词向量实战:通过Annoy进行索引和快速查询》结束后,觉得可以通过Annoy做一点有趣的事,把“词类比(Word Analogy)”操作放到线上,作为AINLP公众号聊天机器人的新技能,...英文词类比中最有名的一个例子大概就是: king - man + woman = queen, 当我把这个例子换成中文映射到腾讯的中文词向量中并且用gensim来计算,竟然能完美复现:国王 - 男人 +...在此前google的时候,据说在中文词向量场景下一个更容易出现的词类比例子是:机场-飞机+火车=火车站,这个确实可以通过gensim在腾讯词向量中得到复现: ?...当然,Annoy的topk最近邻结果是不完全精确的,有两个参数对查询结果影响较大:n_trees 和 search_k There are just two main parameters needed...,我将search_k设置到500以上时,“机场-飞机+火车”这个例子的结果变为了“火车站”, 和gensim一致了,不过“国王-男人+女人”这个例子的结果没有变化,考虑到线上服务的响应时间,最终还是把

    87920

    强大的 Gensim 库用于 NLP 文本分析

    “你好”、“123”和“-”是标记的一些示例。 句子(Sentence): 是一组意义完整的记号。“天气看起来不错” 是一个句子的例子,句子的标记是【“天气”, “看起来”, “不错“】。...段落(Paragraph): 是句子或短语的集合,也可以将句子视为段落的标记。 文档(Documents): 可能是一个句子、一个段落或一组段落。发送给个人的文本消息是文档的一个示例。...它是一个著名的开源 Python 库,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。它处理大量文本数据的能力和训练向量embedding的速度使其有别于其他 NLP 库。...Gensim支持流式训练,并提供了诸如相似度计算,信息检索等一些常用任务的API接口。 安装和使用 可直接使用 pip 安装或 conda 环境安装 Gensim。...调用Gensim提供的API建立语料特征(word)的索引字典,并将文本特征的原始表达转化成词袋模型对应的稀疏向量的表达。可以使用 Gensim 从句子列表和文本文件中生成字典。

    2.6K32

    基于 Python 的自动文本提取:抽象法和生成法的比较

    TextRank的工作原理如下: 预处理文本:删除停止词并补足剩余的单词。 创建把句子作为顶点的图。 通过边缘将每个句子连接到每个其他句子。边缘的重量是两个句子的相似程度。...Gensim的TextRank使用Okapi BM25函数来查看句子的相似程度。它是Barrios等人的一篇论文的改进。...PyTeaser PyTeaser是Scala项目TextTeaser的Python实现,它是一种用于提取文本摘要的启发式方法。 TextTeaser将分数与每个句子相关联。...LexRank LexRank是一种类似于TextRank的无监督图形方法。LexRank使用IDF修改的余弦作为两个句子之间的相似性度量。该相似度用作两个句子之间的图形边缘的权重。...LexRank还采用了智能的后处理步骤,确保为摘要选择的顶级句子彼此不太相似。 更多关于LexRank与TextRank的比较可以在这里找到。

    2K20

    基于gensim的Doc2Vec简析,以及用python 实现简要代码

    学出来的向量可以通过计算距离来找 sentences/paragraphs/documents 之间的相似性, 或者进一步可以给文档打标签。...既然可以将 word 表示成向量形式,那么句子/段落/文档是否也可以只用一个向量表示? 一种方式是可以先得到 word 的向量表示,然后用一个简单的平均来代表文档。...影响模型准确率的因素:语料的大小,文档的数量,越多越高;文档的相似性,越相似越好。...中模型是以单词为单位训练的,所以不管是句子还是文档都分解成单词。...测试集:主要用于测试训练好的模型的分类能力(识别率等) 显然,training set是用来训练模型或确定模型参数的,如ANN中权值等; validation set是用来做模型选择(model selection

    8K40

    机器学习必备:前20名Python人工智能和机器学习开源项目

    图1:Github上的前20名Python人工智能和机器学习项目 上图:雪花大小与贡献者的数量成正比,颜色代表贡献者数量的变化-红色越高,蓝色越低。雪花形状适用于深度学习项目,适用于其他项目。...Gensim是一个免费的Python库,具有可扩展的统计语义,用于分析语义结构的纯文本文档,检索语义相似的文档。 贡献者:262(上升81%),提交:3549,Github网址:Gensim 7....描述统计、统计测试、绘图功能和结果统计的广泛列表适用于不同类型的数据和任意一个估算器。 贡献者:144(上升33%),提交:9729,Github网址:Statsmodels。 10....Annoy(Approximate Nearest Neighbor Oh Yeah)是一个C++库,它使用Python绑定来搜索接近给定查询点的空间点。...它还创建了大量的基于只读文件的数据结构,这些数据结构被映射到内存中,以便许多进程可以共享相同的数据。 贡献者:35(上升46%),提交:527,Github网址:Annoy。 19.

    1K90

    用 Doc2Vec 得到文档/段落/句子的向量表达

    学出来的向量可以通过计算距离来找 sentences/paragraphs/documents 之间的相似性, 或者进一步可以给文档打标签。...---- 既然可以将 word 表示成向量形式,那么句子/段落/文档是否也可以只用一个向量表示? 一种方式是可以先得到 word 的向量表示,然后用一个简单的平均来代表文档。...数据:多个文档,以及它们的标签,可以用标题作为标签。 影响模型准确率的因素:语料的大小,文档的数量,越多越高;文档的相似性,越相似越好。...中模型是以单词为单位训练的,所以不管是句子还是文档都分解成单词。...相关文章: word2vec 模型思想和代码实现 怎样做情感分析

    4.6K100

    【NLP】doc2vec原理及实践

    也常常用于文本分类任务,后面会专门写一篇文章介绍LDA模型和doc2vec的本质不同 2. doc2vec原理 doc2vec是google的两位大牛Quoc Le和Tomas Mikolov在2014...学出来的向量可以通过计算距离来找 sentences/paragraphs/documents 之间的相似性,可以用于文本聚类,对于有标签的数据,还可以用监督学习的方法进行文本分类,例如经典的情感分析问题...例如对于一个句子s: i want to drink water,如果要去预测句子中的单词want,那么不仅可以根据其他单词生成feature, 也可以根据其他单词和句子ss来生成feature进行预测...然后将段落向量和词向量级联或者求平均得到特征,预测句子中的下一个单词。...“标签”,标签和每个句子是一一对应的 count = 0 with open('..

    2.4K40

    ​用 Python 和 Gensim 库进行文本主题识别

    潜在狄利克雷分配 (LDA) 技术是一种常见的主题建模算法,在 Python 的 Gensim 包中有很好的实现(推荐阅读强大的 Gensim 库用于 NLP 文本分析)。...Gensim 用于创建和查询语料库 之前云朵君和大家一起学习了gensim的相关知识,本文将和大家一起动手开发第一个 gensim 词典和语料库!...用于并行化的额外进程的数量是workers数量。默认情况下,使用所有可用的内核。 超参数 alpha 和 eta 分别影响文档-主题 (theta) 和主题-单词 (lambda) 分布的稀疏性。...每个主题的单词分布称为Eta 高eta值: 每个主题包含各种单词(主题看起来彼此相似)。 低eta值: 每个主题包含少量的单词。 因为我们可以使用gensim LDA模型,所以这是相当简单的。...③ 假设数据集包含离散的主题,如果数据集是随机推文的集合,则模型结果可能难以解释。 简单总结 通过结合 LDA 主题概率和句子嵌入,上下文主题识别模型同时利用了词袋和上下文信息。

    2K21

    比赛必备 ︱ 省力搞定三款词向量训练 + OOV词向量问题的可性方案

    ("滋润") # 求词附近的相似词 similarity求两个词之间的相似性;n_similarity为求多个词之间的相似性 其中还可以求词条之间的WMD距离: # !...在ELMo 中,每个单词被赋予一个表示,它是它们所属的整个语料库句子的函数。...(2)博文:《如何将ELMo词向量用于中文》,该教程用glove作为初始化向量,思路如下: 将预训练的词向量读入 修改bilm-tf代码 option部分 添加给embedding weight赋初值...③专业名词和研究领域名称。特定领域的专业名词和新出现的研究领域名称也是造成生词的原因之一,如三聚氰胺、苏丹红、禽流感、堰塞湖等。...笔者说的比较绕口,可以直接看code,该作者写了: 一个一个循环查找; 整个missing_words空间一起查找; 用torch GPU加速查找 比较适合拿来用,供观众参考。

    4K50

    使用FastText(Facebook的NLP库)进行文本分类和word representatio...

    FastText是Facebook研究团队创建的一个库,用于高效学习word representation和句子分类。 ?...类似地,word representation用相似的词倾向于相似的词的表示方式捕获词的抽象属性。主要有两种用于开发词向量的方法 - Skipgram和CBOW。...运行上述命令将创建两个名为model.bin和model.vec的文件。model.bin包含模型参数,字典和超参数,可用于计算词向量。.../fasttext predict model_kaggle.bin test.ft.txt 3 计算句子向量(受监督) 该模型也可用于计算句子向量。让我们看看如何使用以下命令来计算句子向量。...3.与gensim相比,fastText在小数据集上的运行效果更好。 4.在语义性能上,fastText在语法表现和FAIR语言表现都优于gensim。

    4.1K50
    领券