0_Obsidian_简介
Obsidian 简介
#笔记/obsidian
我的困惑
这几年写了不少笔记文章,分布在微博、CSDN、知乎、公众号、有道云笔记、飞书……
随着平台的更替改版,越发改不动了,具体的问题罗列如下:
不同平台文章格式不同
切换平台过程中文章和图片丢失
忘了写在哪里找不到了
重要的文章发多个平台,虽然格式可以复制粘贴,但也很耽误时间
有些笔记发现问题想更新,但因为发布过程太麻烦而搁浅
有些笔记太过琐碎,不适合对外发布
有些笔记有些不想公开
有些笔记在不断改进中
有些笔记无法归入树状图中的某一类,或可归入多类
很多平台不支持仅对自己笔记检索
如果只写给自己看也没什么动力
更深层次的问题是:笔记是给别人看的,还是自己看的?目标不一样,写法也不一样。一个比较新的概念是:"
打造自己 Second Brain & Digital Garden",然后朋友介绍了
Obsidian。
用了 Obsidian
之后,我觉得最舒服的地方是:不用再强迫自己非得记住什么了,只要能快速找到就可以了,也算是一种妥协吧。
作为记忆的扩展,它有以下优点:
随手记下想法、摘录
工作计划和记录
常用工具随手 ...
5_Obsidian_DataView
Obsidian DataView
插件的简单用法
#笔记/obsidian
使用 DrawView 三方插件可生成动态索引
列出当前笔记中的所有标签
1`= this.file.tags`
根据文件生成索引列表
将”目录名“文件夹(含子文件夹)下所有名字包含‘2021’的文件生成索引列表,并按时间排序。
12345\```dataviewlist from "目录名"where contains(file.name,"2021")sort file.ctime\```
根据标签生成索引列表
12list from #标签名
YML 格式
如需使用 dataview 进一步管理和显示笔记相关属性,需要在笔记开头用 YML
格式描述笔记相关属性作为元数据(Metadata),可将 YML
看作是简单的配置文件,笔记文件将开头位置六个横杠之间的内容识别为
YML,形如:
12345---题目: xxx作者: yyytags: \[]---
注意冒号后面的空格
按属性生成索引表
12345\```dataviewlist from "&quo ...
Python正则表达式
Python 的正则表达式
1 基本用法
1.1.1 匹配字符串的开头
1^很
1.1.2 匹配字符串的末尾
1蓝$
1.1.3
匹配除了换行符外的任意字符
指定 re.S(re.DOTALL) 时,可包括换行符
1.
1.1.4 匹配方括号中任意一个字符
1\[Pp\]`,`\[0-9\]
1.1.5: 匹配不在中括号中的字符
1234\[^...]可匹配除了a,b,c之外的字符[^abc]
1.1.6 : 匹配其前面的字符出现 0
次或多次,
12可匹配 helll,hehel*
1.1.7 匹配其前面的字符出现 1
次或多次,如
1234+可匹配 helll,hel,但无法匹配hehel+
1.1.8 匹配其前面的字符出现 0
次或 1 次,
1234?可匹配hel,he,但无法匹配hellhel?
1.1.9 匹配其前面的表达式出现 n
次,
1234{n}可匹配food,但无法匹配powo{2}
1.1.10 匹配其前面的表达式出现 n
次以上,
1234{n,}可匹配food,fooooood,无法匹配pow,`o ...
Python实现PDF内容抽取
1 Python 的 PDF 工具
PyMuPDF: 支持更多高级功能和处理复杂 PDF 文件
pdfplumber:从 PDF 中提取文本、表格或生成简单的 PDF 文档
联合使用两个库是一种常用方法
2 PyMuPDF
最近需要把扫描的 PDF 转换成文本,试用了 pdfminer,pypdf2
等工具,解析图片的效果都不太好,用起来也比较麻烦,后来试用了
PyMuPDF,相对其它工具,它最新版本屏蔽了更多细节,围绕 Page
进行操作,调用非常方便。除了 PDF 它还支持解析 epub 等电子书格式。
目前网上例程大多是只抽取图片,没有同时转换图片和文字,且因为旧版本
API,大多已无法正常运行。本文将示例其用法。
3 安装
1$ pip install pymupdf==1.18.19
如果提取找不到 fiz.h,建议更新 pip 版本
1$ pip3.6 install --upgrade pip
4 例程
123456789101112131415161718192021222324252627282930313233343536373839404142def pars ...
配置BERT运行环境
配置 BERT 运行环境
自然语言处理库 Transformers 包含了
BERT、GPT、GPT-2、Transformer-XL、XLNet、XLM 等模型的实现,近两年
Pytorch 生态日趋成熟。因此,本文中使用 Transformers 的 Pytorch
支持来调用 BERT 模型。
检查 cuda 版本
深度学习模型如果没有 GPU
加持,训练速度几乎是无法忍受的,因此,在使用模型前请先确认 GPU
正常工作;另外,最新版本的 Transformers 需要 Pytorch 1.5.0
及以上版本,而 Pytorch 1.5.0 底层又依赖 CUDA 10.2 以上版本。
使用以下命令查看 CUDA 版本
1$ nvidia-smi
(查看右上角 CUDA Version: xx.x)
如果低于 10.2,可通过以下命令安装
1$ sudo apt-get install cuda-10-2
安装好后请重启系统
安装方法一:通用方法
由于安装依赖库可能干扰主机 Linux 系统中的 Python 环境,建议在 docker
中使用 Transformers 运行环境。 ...
语义相似度模型SBERT——一个挛生网络的优美范例
语义相似度模型
SBERT——一个挛生网络的优美范例
论文地址:https://arxiv.org/abs/1908.10084
论文中文翻译:https://www.cnblogs.com/gczr/p/12874409.html
源码下载:https://github.com/UKPLab/sentence-transformers
相关网站:https://www.sbert.net/
“论文中文翻译”已相当清楚,故本篇不再翻译,只简单介绍 SBERT
的原理,以及训练和使用中文相似度模型的方法和效果。
原理
挛生网络 Siamese network(后简称 SBERT),其中 Siamese
意为“连体人”,即两人共用部分器官。SBERT 模型的子网络都使用 BERT
模型,且两个 BERT 模型共享参数。当对比 A,B
两个句子相似度时,它们分别输入 BERT
网络,输出是两组表征句子的向量,然后计算二者的相似度;利用该原理还可以使用向量聚类,实现无监督学习任务。
挛生网络有很多应用,比如使用图片搜索时,输入照片将其转换成一组向量,和库中的其它图片对比,找到相似度最高(距离 ...
SHAP解释模型
1 简介
近年来,模型的可解释性越来越受到重视,SHAP 是一个 Python
工具包,它可以解析任何模型的输出。本文除了介绍 SHAP
的基本用法之外,还示例了新版本提供的一些高级用法,进一步提升了预测的归因效果以及分组分析。
2 环境配置:
以下实验使用当前最新版本 shap:0.39.0
1$ pip install shap
注意 xgboost 也需要使用对应的较新版本,如:
1$ pip install xgboost==0.82
为使用交互界面,notebook 环境下,加载用于可视化的 JS 代码
12import shapshap.initjs()
3 实验数据
12345678import shapshap.initjs()X,y = shap.datasets.boston()model = xgboost.train({"learning_rate": 0.01}, xgboost.DMatrix(X, label=y), 100)explainer = shap.TreeExplainer(model)shap_valu ...
论文阅读_用深度和宽度网络构建推荐系统
论文阅读 _
用深度和宽度网络构建推荐系统
#论文阅读 #推荐系统
论文地址:https://arxiv.org/pdf/1606.07792.pdf
相关代码:https://github.com/jrzaurin/pytorch-widedeep
《Wide & Deep Learning for Recommender Systems》是 2016 年 Google
发表的一篇使用深线层网络相结合构建推荐系统的论文。
个人认为结合浅度学习和深度学习,是为一种处理表格数据,以及综合数据的好方法。这篇论文涉及:两种网络各自的优势;稀疏特征的组合;以及融合两种网络的具体方法。
使用非线性特征组合(具体方法见后)构造的线性网络(浅层网络)常被用于解决输入是稀疏特征的分类和回归问题,它的优点是高效且具有可解释性,缺点是需要大量特征工程。相对来说深层网络不需要太多特征工程,使用
Embedding
方法可将稀疏特征降维成稠密特征,它能构造在训练集中没见过的特征组合,而其问题在于过于泛化,当数据过于稀疏和高秩(具体见下文)时,它会推荐出一些无关的选项。文中方法结合了浅层网络的记忆力和深 ...
论文阅读_深度森林
论文阅读:深度森林
论文主题:《Deep Forest》
论文地址:https://arxiv.org/pdf/1702.08835.pdf
相关代码:https://github.com/kingfengji/gcForest
相关代码:https://github.com/LAMDA-NJU/Deep-Forest
深度森林是南大周志华老师前两年提出的一种基于随机森林的深度学习模型。
当前的深度学习模型大多基于深度学习神经网络(DNN),其中每一层都是可微的,在训练过程中通过反向传播调参。而本篇介绍的深度森林算法基于不可微的子模型,该算法把多个随机森林串联起来组成了深度学习模型。
作者认为深度模型的优越性主要在于:深度网络多层建构;模型特征变换;模型足够复杂。文中提出基于树模型的
gcForest
也可满足以上三点。相对于深度学习神经网络,它还有如下优势:使用较少的超参数;模型的复杂度可根据数据情况自动调整;使用模型的默认参数往往也能达到不错的学习效果。
DNN 的缺点
DNN 超参数太多,调参难度大,需要大量技巧
DNN
一般在大数据集上训练效果好,在中小数据集上表现较差,标注 ...
使用有向无环图实现分词
使用有向无环图实现分词
#自然语言处理
结巴分词
如果搜索”Python
分词”,跳出来的前五个除了广告基本都包括“结巴分词”(Jieba)。可以说它是
Python
自然语言中使用最广泛的分词工具。它属于基于概率的模型,其原理主要是利用了显性的中文词库(包含常用词及词性和频率)。形如:
同时也支持隐马尔可夫模型从数据中训练出的发射概率,转移概率等不易理解的数据。
简单地说,分词就是识别句中的词组,然后把句子拆分成尽量大的块。但由于上下文语境不同,拆分时也常常出现规则冲突,比如“研究生命的起源”,既可拆成“研究生
命 的 起源”,也可拆成“研究 生命 的
起源”。因此,需要制定一些规则处理这些冲突。
和当前很多基于深度学习的自然语言模型相比,结巴轻量级,使用简单,原理不复杂,效果也不错的分词工具。利用结巴的原理,不仅能实现分词,还能实现切分短语,判断词性,计算短语在句中成份,提取特定成份等一系列的功能。与复杂模型相比,它更容易运用已知的规则,占用更少的资源,避免了大量的文本标注;与自己直接处理相比,它能处理更复杂的情况。尤其在某些语法相对单一的专门领域效果很好。
本文将分析结巴分词 ...