用Lucene构造垂直搜索引擎
用 Lucene 构造垂直搜索引擎
Lucene 是用于全文检索的开源库,Apache 软件基金会提供支持。它由 Java
语言开发,也提供 Python 接口调用。
本文介绍使用开源项目 Lupyne
构建垂直搜索引擎,搜索本地网页中的内容。它使用 Python
语言编写,搜索功能用 Lucene 引擎实现,使用 html2text
从本地网页中提取数据,实现对网页中文本的搜索,前端调用 CherryPy
框架(flask 的 web server 常用作开发测试。而 cherrypy 的 web server
常用于生产环境),提供网页搜索功能。
运行文中实例需要匹配 Java,Python,Lucene
等各个软件版本,环境配置比较复杂,因而基于 Lucene 提供的 docker image
环境构建。
Lucene 元素
使用 Lucene 之前,先来了解一些相关概念。
Directory:指定如何保存构建的索引,测试时常保存在内存中,实际应用中,一般将其保存在文件系统中,本例将索引保存在/tmp/a
目录下。
Analyzer:分析器,用于处理文本,如分词,去停用词等。
I ...
论文阅读_解释黑盒模型方法综述
论文阅读 _
解释黑盒模型方法综述
论文:《A Survey of Methods for Explaining Black Box Models》
论文地址:https://arxiv.org/abs/1802.01933v3
(本文为论文核心内容提炼,并非逐段翻译)
《A Survey of Methods for Explaining Black Box Models》是 2018
年发表在 ACM Computing Surveys 上的一篇综述性论文,正文 37
页,介绍了七十多种模型解释相关论文,参数文献 144
篇。它列出了每种方法的相关论文,作者,发表时间,解释模型,被解释模型,解释何种类型数据,是否提供代码,数据等信息,如下图所示:
论文的前五章介绍了为什么需要使用可解释模型,第六到九章分类别介绍了各种解释方法及相关论文,并对每一种方法进行了简要介绍。
如何评价模型
无论是写论文,还是和客户沟通,描述下列几点都是必不可少的。
• 模型评价指标
一般数据分析时都会使用:敏感性、特异性、F1 score、AUC 曲线等方法。
• 被多少数据支持
训练数据和测试数据的数据 ...
查找论文
#论文阅读
SCI 是什么
美国《科学引文索引》(Science Citation Index, 简称
SCI)是由美国科学信息研究所 1961 年创办出版的引文数据库。相对于 EI
工程索引,SCI 要求论文更规范,系统,完整,创新性更高。
论文分区
SCI 有两个分区规则:JCR 分区和中科院分区。JCR
分区根据某一学科的所有期刊都按照上一年的影响因子降序排列,然后平均 4
等分 (各 25%),分别是
Q1,Q2,Q3,Q4。中科院分区按各类期刊三年平均影响因子排序,前 5%
为一区(国际顶级期刊),前 20% 为二区,前 50% 为三区,剩下的为四区。
影响因子
SCI 期刊的影响因子 IF(Impact
Factor)值是衡量期刊水平的标准,它的计算方法为:前两年文章引用数/前两年文章收录数(一般
IF>1 表示引用率较高)。最低分值是 0~1 分,高的到几十分。
用以下方法查看影响因子:
打开 http://www.letpub.com.cn/
点击 SCI IF(影响因子)查询
输入期刊名搜索(也可以按分类查找)如:输入 JAMA,列出了 JAMA
的多个子刊,从列 ...
分类模型的可解释性
分类模型的可解释性
#机器学习
论文题目:《Why Should I Trust You? Explaining the Predictions of Any
Classifier》
论文地址:[https://chu-data-lab.github.io/CS8803Fall2018/CS8803-Fall2018-DML-
Papers/lime.pdf](https://links.jianshu.com/go?to=https%3A%2F%2Fchu-data-
lab.github.io%2FCS8803Fall2018%2FCS8803-Fall2018-DML-Papers%2Flime.pdf)
模型可解释性论文列表:[
https://github.com/oneTaken/awesome_deep_learning_interpretability
](https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2FoneTaken%2Fawesome_deep_learning_interpretability ...
Notebook左侧开启导航
Notebook 左侧开启导航
Python
有时候使用 Notebook 编写较长代码,或者有很多
Cell,定位某一段代码时需要不断拖动,非常麻烦,使用 Notebook
插件提供的导航功能可以很好地解决这一问题。
首先,安装插件:
方法一
123$ pip install jupyter_nbextensions_configurator jupyter_contrib_nbextensions$ jupyter contrib nbextension install --user$ jupyter nbextensions_configurator enable –user
方法二
123$ pip install jupyter_contrib_nbextensions$ jupyter contrib nbextension install --user$ pip install jupyter_nbextensions_configurator
然后在 Notebook 目录界面打开插件设置标签页
Nbextensions,选中其中的 Table of contents ...
找不到字符集
找不到字符集
#操作系统/Linux #操作系统
终端报错:
123locale: Cannot set LC_CTYPE to default locale: No such file or directorylocale: Cannot set LC_MESSAGES to default locale: No such file or directorylocale: Cannot set LC_ALL to default locale: No such file or directory
Jupyter notebook 报错:
1UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 0
解决方法:
12345apt-get updateapt-get install locateslocale-gendpkg-reconfigure locales按提示选择字符集,一般是zh_CN.UTF-8 (488)
设置环境变量
123export LANG=zh_CN. ...
grub无法正常启动的解决方法
grub 无法正常启动的解决方法
在我第二次安装 ubuntu 18.04 时,出现 grub
提示符,系统无法正常启动。
使用以下方法恢复:
首先,输入 ls 指令, 查看当前状态,以及系统安装在哪个分区:
12lsls (hd0)/
假设 ubuntu 系统安装在第五个分区上,用以下命令启动系统。
1234set root=(hd0,5)set prefix=(hd0,5)/boot/grubinsmod normalnormal
系统正常启动后,安装 boot-repair 工具:
1234sudo susudo add-apt-repository ppa:yannubuntu/boot-repairapt-get updateapt-get install boot-repair
运行 boot-repair,选择 Recommended repair, 并按提示执行命令:
s
Attention注意力机制
Attention 注意力机制
网上的文章总把 Attention 注意力机制和 Transformer
模型结合来讲,看起来非常复杂。实际上 Attention
不仅作用于自然语言处理领域,目前已是很通用的技术。本篇来看看 Attention
的原理,以及在各个领域的典型应用。
原理
越来越多的模型用到注意力机制,它已成为与全连接,卷积,循环网络同等重要的技术。简单地说,当人观察图片时,一般先扫一眼,确定大概信息,然后聚焦在图中的重要区域,这个区域可能是某个物体,某种显著的特点,或者人脸等等。
机器视觉,自然语言模型,跨模态模型都越来越多地使用到注意力技术。其核心是通过当前数据决定更关注哪一部分数据,给数据加权。
那么,同样是给特征加权,注意力和普通的全连接网络到底有何差异?主要差异在于是否与位置相关。全连接网络与位置强相关(比如下图中
W11 描述了 x1 到 y1 的映射关系,如果特征 x1
改变了位置,结果就会不同)。
在使用 Attention
的过程中,我们希望聚焦于图中的动词,不管它出现在句中什么位置,希望聚焦于图中的人脸,而不管脸在图中的位置以及有几张脸……Att ...
模型实现举一反三
模型实现举一反三
在很长一段时间里,大家都对深度学习模型有所误解,认为模型需要非常大量的数据训练,且只能过训练过的模式起作用——用猫的数据训练就只能识别猫,只有在训练数据中多次出现的模式才能被模型学习和应用,稍有变化,模型就无法正常工作。
实际上随着深度学习模型的发展,这些问题都在逐步改善。现在很多模型学习的不仅是解决具体的问题,比如识别图中的猫或者狗,还可以通过训练学习数据间的关系,在更抽象的层面学习,从而实现了举一反三。另外,随着迁移学习的流行,将海量数据中学到的知识用于只包括少量数据的新场景之中也变成了一种趋势。
本篇介绍几种比较巧妙的方法解决训练集中未出现过的问题。
One-shot 问题
One-shot learning
指需要识别的物体在训练样本中很少出现,甚至在只出现一次的情况下,也能训练模型。Zero-shot
与之类似,即使样本在训练数据中完全没出现过,也能正确识别或分类。
图片搜索是一个 One-shot
问题,比如网购平台上有很多衣服,不可能每一件都放入模型训练,图片搜索的目标是找到与之同款的一种或多种同款商品。同一款衣服自然有很多类似特征,比如颜色,质地,样式 ...
在机器学习中应用数学方法
在机器学习中应用数学方法
我们从初中就开始学习指数和对数,但即使是程序员平时也很少用到这些方法。本篇就来看看如何使用它们解决具体问题。
指数
在多分类问题中,一般在最后一步使用
Softmax,将数值转换成属于各个类别的概率,比如根据输入物品图片,通过一系列处理,判别它是衣服、鞋子、帽子各类别的概率。具体公式如下:
[](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy81MzU3ODkzLTE4NTdlMDI0ZDEyOTU5MDAucG5n?x-oss-
process=image/format,png)
其中 i 为某一类别,j 用于遍历所有可能的类别,Si
计算的是某一类别的概率,即某一类别在所有类别中的占比。其中用到了自然指数
e。e 的图型如下:
[](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy81M ...