如何交互可视化 Roam Research 局部笔记网络?
补齐 Roam Research 目前欠缺的「中观」笔记网络可视化功能,助你快速整合关联紧密资料。
前几天,我发了个朋友圈,展示了一下我的 Roam Research Graph 的样子。
看不清吧?给你放大一些。
没错,放大也看不清。
朋友看完,摇头叹息,出主意说:
把库删了吧,重新建。
我听了差点儿晕过去。因为他可是笔记工具的专家啊。
朋友语重心长告诉我说, Roam Research 里面的 Page,不能轻易建立,必须是认真转写成了「长期笔记」(permanent note)再放进去,而且建立笔记之间的链接,也同样不可草率。这样,生成的图才不凌乱,能够看清楚思维节点之间的关联。一股脑把笔记内容灌进去,就只能追悔莫及了。
言毕,给我展示了他的 Roam Research Graph Overview图,确实脉络清晰,精益求精。
鉴于隐私保护因素,我这里就不展示他的图了。
这个事儿,引发了我的思考。
如果 Roam Research 是这样用的,那我还不如不用。
我用 Roam Research ,是因为它可以帮助我降低成本。包括记录成本、联想成本、输出成本等。如果说以前我面临的问题,是「不知道该记什么」和「不知道该怎么记」;现在却变成了「想记又不敢记录」,每放入一条笔记,都要战战兢兢,那这个活儿我干不了。
可是想想,这种记笔记的「原则」真的对吗?
Roam Research 的显示面积再大,节点超过一定的数量,链接丰富的话,就必然会面临看不清的问题。尼古拉斯卢曼的长期笔记有好几万条,如果都放进去,恐怕也看不清了。
这种看不清,因为链接过多的关系,即便放大,也是很难有效果的。要么是可视区域里面显示不了有关联的节点;要么是连线显示全了,节点却小到看不清标题了。
所以,试图减少输入笔记的数量,长期来看是很难奏效的。
况且, Roam Research 真的只是用来记录「长期笔记」的吗?
当然不是。
否则,移动设备上 Roam Research 的 Capture (快速摘录)功能是干什么用的?难道不是为了不断采集和迭代吗?这也意味着, Roam Research 并不排斥初步笔记。
一旦这些初步笔记作为页面被放进了 Roam Research ,它们同样也会成为笔记网络可视化图中的一个个节点。
所以你看,加入笔记时候那么慎重,真的是使用 Roam Research 的正确方法吗?
在《Roam Research 到底好在哪儿?》一文中,我跟你提过。Roam Research 的一大优点,就是可以不必设置「正确的笔记方法」。只有降低门槛,才会有更多用户可以快速上手,并且从 Roam Research 的应用中受益。
回到我遭遇到的这个问题,笔记图看不清是什么原因呢?
其实, Roam Research 除了可以给我们兢兢业业绘制出「宏观」的连接图,还可以轻松制作每一个节点的「微观」连接图(即展示与之直接相连的那些节点)。
但这些够了吗?
不够。
因为在「宏观」和「微观」中间,还有一个「中观」。而 Roam Research 目前欠缺的,就是这个「中观笔记网络链接图」的绘制功能。
这是个什么东西呢?
宏观的连接图展现的是全局,是你全部的思考,它们可能包括你生活的各种方面,工作的、娱乐的、学习的、人际交往的……有人坚持认为,应该为其中的每一个方面单独设置一个 Graph,这样才能井水不犯河水,并行不悖。
但是我不那么看。因为人为把它们割裂,就可能放弃很多宝贵的「信息偶遇」机会。要想构造出足够复杂的思维系统,游刃有余地应对生活中的各种挑战,你就需要数量充足的知识节点作为支撑,并且在其上建立有效链接。
但是,在一个网络里,必然有些内容,是更加紧密连接的。如果你做科研或者写文章,一定会有一些紧密关联的素材,是构成你最终成果的有效组成部分。这些素材,通过链接的方式联系在一起。但是如果这些链接混入了宏观连接图的汪洋大海中,你可能就找不到它们了。
而只体现直接链接关系的微观连接图,在这个事儿上没法给你提供有效的帮助。因为你可以采用游走的方式尝试遍历。可一旦随着链接走下去,就很可能就会走到岔路上,反而距离你要找寻的内容越来越远。
在生活中,你用过导航吧?你如果想到一个 10 公里左右的目的地,导航会给你展示什么样的信息呢?世界地图?还是周围 5 米的区域?
都不是,应该先是一个从当前位置到目的地的概况图,之后给你展示清楚道路、红绿灯之类的动态视域。这就是合适的中观图。
你卡片足够多时, Roam Research 却偏偏还只给你展示全局链接图,这便本文开头我遇到的困境。
其实这个功能,并不难实现。在网络科学里面,这只是一个常见的「社区发现」(Community Detection)问题。
解决的算法,可以有很多。
我今天尝试了一下,用了最为应用广泛的 Louvain 方式,就可以立即把某个笔记节点所在的「社区」单独拿出来进行绘制。
一开始,我使用 Python 自带的可视化工具绘制这个「中观」社区网络。但很快发现,效果并不好。因为你虽然可以看清节点名称,还能拖拽,但是点击是没有用的,它只是一张图而已。
旋即,我想起了,有现成的工具可用啊!我马上把这个社区网络对应节点的 Markdown 文件,全都弄进了 Obsidian ,问题立即迎刃而解。
Obsidian 可以把我们选择出来的社区网络,当成一个全局网络来进行绘制。
这个网络不但可以交互显示,还支持点击直达具体的节点。而且因为一来本地操作,二来节点数量少了许多,图形处理的速度非常快捷。
而且,我们有了一个非常棒的临时工作空间。你可以在这里整合相关的卡片,进行项目级输出。然后把输出的结果反灌回 Roam Research ,作为当前上下文情境下的长期笔记。
我把上述功能对应的代码,开源托管在了 Github 。你可以在我的公众号「玉树芝兰」后台输入"louvain"获得代码。如果需要运行的话,你需要修改一下其中的 Roam Research 导出的 JSON,Markdown备份路径,Obsidian文件夹地址,以及你的种子笔记页面名称(qery_term
)。
如果你熟悉前端,并且对这个功能比较感兴趣,欢迎进一步做个二次开发,让更多用户可以拿来即用。之前有不少小伙伴儿这么做了。例如最近,吕立青就把我之前做的 Roam Research 图片增量备份工具,集成到了 Roam to git 脚本里面,使得你可以完全用 Github 自动备份文字和图片内容,大伙儿用起来更加方便了。
立青修改的 workflow 地址,可以在我公众号后台回复"roampicgit"获取。
感觉有用的话,请点“在看”,并且把它转发给你身边有需要的朋友。
我的视频号已经上线,发布了教程和经验分享视频,欢迎关注。
订阅我的微信公众号“玉树芝兰”,第一时间免费收到文章更新。别忘了加星标,以免错过新推送提示。
如果你希望能与其他热爱学习的小伙伴一起讨论切磋,答疑解惑,欢迎加入知识星球。
延伸阅读
你可能也会对以下话题感兴趣。点击链接就可以查看。