V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
探索世界的好奇心万岁
sillydaddy
V2EX  ›  分享发现

用实际案例来说明,笔记的标签结构如何自生长,标签结构对搜索的强大支持——关于笔记工具的思考(中篇)

  •  
  •   sillydaddy · 190 天前 · 1633 次点击
    这是一个创建于 190 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前情提要

    上一篇在这里: 笔记软件最重要的功能是搜索——关于笔记工具的思考

    这篇的主题

    上篇是这篇的理论基础,有点长篇大论。这篇则是以图为主,用真实而具体的例子,讲清楚「局部多标签」的笔记方法。

    所举的例子,来自于我最近在 logseq 中所记的笔记,从中选取了一部分,以「日程笔记流水」的形式展示在这里,以产生一种笔记不断生长的效果。这里所说的生长,主要指附加在笔记上的「标签系统的生长」。

    例子的主旨,是关于将心脏支架的价格从 1.3 万元降到 700 元的「心脏支架集中采购政策」。

    后文有很多图,这里先放一张看下效果。 p7.png

    笔记的生长过程

    第 1 天的笔记

    • 笔记内容

    a1.png

    • 笔记包含的「标签」
    心脏支架->心脏支架降价事件;
    降价->心脏支架降价事件;
    带量采购->心脏支架降价事件;
    
    • 加入「标签」后,生成的图谱

    p13.png

    第 2 天的笔记

    • 笔记

    a2.png

    • 标签
    医疗回扣->医疗回扣案例;
    医疗回扣案例->"心脏支架医疗回扣案例,回扣比例 10%";
    心脏支架->"心脏支架医疗回扣案例,回扣比例 10%";
    
    • 图谱

    p12.png

    第 3 天的笔记

    • 笔记

    a5.png

    • 标签
    行政干预药品价格->长支架消失;
    药品短缺->长支架消失;
    药品->心脏支架->长支架消失->长支架消失的原因;
    
    • 图谱

    p14.png

    第 4 天的笔记

    • 笔记

    a6.png

    • 标签
    药物球囊->对心脏支架的集采导致药物球囊使用增加;
    心脏支架->对心脏支架的集采导致药物球囊使用增加;
    集采->对心脏支架的集采导致药物球囊使用增加;
    
    • 图谱

    p15.png

    第 N 天的笔记

    • ……
    • ……
    • ……

    整理笔记中的标签关联

    • 上例中,还有很多标签之间可以建立关联,例如
    支架->心脏支架;
    药品->支架;
    药品->药品短缺;
    支架->长支架->长支架消失;
    集采->带量采购;
    药品->药品价格->行政干预药品价格->集采;
    行政干预->行政干预药品价格;
    回扣->医疗回扣;
    药品->球囊->药物球囊;
    降价->药品降价;
    药品价格->药品降价;
    
    
    • 添加新建关联后的新图谱(红色为新添加的标签、关联关系;绿色的后文有说明)

    p2.png

    • 对比添加这些关联之前的图谱

    p3.png

    • 最终的图谱(其中绿色的标签节点,可以理解为是一些完整的「语句」,而不仅仅是一个词)

    p4.png

    基于标签结构的搜索

    好了,标签关联起来了,标签结构已经有了,但有什么用呢?可以基于这种标签结构,优化搜索功能!搜索很重要, 这在上篇( /t/818822 )中已经提到。后面会看到,logseq 等软件提供很多重要功能,实质就是搜索。

    一种搜索效果的示意图

    给定某个搜索关键词,下面的例子展示了搜索的结果:标签与关键词的关联关系越近,标签颜色越暖;反之亦然。例 如红色标签与关键词关系最近,淡蓝色的最远。

    • 搜索「心脏支架」

    p7.png

    • 搜索「药品」

    p8.png

    对于搜索结果的这种展示方式,只是一个我想到的示例。应该有很多方法可以比它更加简洁。比如对于标签与被搜索标签的关系远近,可以使用多层同心圆的布局来表达,或者可以使用节点与字体的大小来表达等等。

    但重要的是,这种展示方式,不仅可以「表达各标签与被搜索标签的关系远近」,而且可以「利用有层次的标签结构,并在不破坏这个结构的基础上,展示搜索结果」。那么这个「有层次的标签结构」到底代表什么?又为什么要充分利用呢?

    充分利用标签的结构来搜索

    观察上述的标签结构,它是有结构层次的。这种层次体现在,上层的标签要比下层的更精炼:要么上层标签是下层标签的抽象,要么上层标签是下层标签的子元素。比如,

    • 药品-球囊,「药品」是「球囊」的抽象
    • 药品-支架
    • 药品-药品价格,「药品」是「药品价格」的子元素
    • 长支架消失-长支架消失的原因

    所以从集合论角度看的话,上层标签代表的集合要比下层的大。这种上层涵盖下层的标签结构,可以在搜索时提供巨大的便利。

    • 模糊搜索。比如,搜索时只记得某个词的一部分,例如「支架」,那么搜这个标签的话,标签结构会给到你提示线索如「长支架」、「心脏支架」等等,甚至可以间接联想到「球囊」。
    • 抽象搜索。比如,多标签组合搜索的话,使用上层的抽象标签,会简化搜索过程。例如搜索「球囊 /长支架 /心脏支架 /药物支架」+「价格」的组合,可以换成搜索「心脏介入器械」+「价格」的组合。因为「心脏介入器械」标签是对「球囊 /长支架 /心脏支架 /药物支架」所有这些标签的抽象。

    标签结构的进化

    从「笔记生长的过程」一节可以知道,标签的结构是随着记笔记的过程不断生长的,不仅标签的规模越来越大,并且标签的结构也应该在不断完善。这里的「完善」,包含下面几点,

    • 同义词合并
    • 近义词抽象
    • 标签充分关联
    • 标签充分拆解
    • 标签充分抽象
    • 针对块(局部信息)的标签越来越丰富、准确。

    而如果标签结构本身具有结构的话,会反过来让标签结构的改进更容易。因为你可以利用这种结构,更快速找到诸如同义词、近义词、未关联的标签、未抽象的标签、未拆解的标签,等等。反之想象一下,如果所有的标签以平铺或列表的组织形式,你又怎么去改进这些标签呢?

    具有结构的标签系统,为自我改进提供很大便利。那么改进所需的时间和精力成本,就可以分散在记笔记的过程中:当添加了新的标签,或建立了新的关联后,或搜索某个标签后,发现了标签结构中的某些地方需要改进,顺手就改掉了。不需要专门抽时间特意为之。而已经改善过的那些标签,大概率是可以稳定地沉淀下来,而只需对新进来的标签作调整。

    与目前 logseq 的功能对照着看

    上述的多层次的标签结构,以及建立在其上的搜索功能,在目前的双向链接笔记软件中,实现的程度最大,但也并不是完全实现了(毕竟只是我的一个构思)。这里以 logseq 软件为例,看看有哪些部分已经实现,还有哪些部分未支持。

    logseq 支持块,天然支持局部多标签。

    每个块都可以打多个标签。这些标签可以关联起来。参考上面「笔记的生长过程」中,标签是可以打在块上的。

    不过在 logseq 中,打在同一块上的多个标签,并不是通过块本身关联起来的,二是通过笔记的标题关联起来的。这样,就无法实现本文中所述的标签结构。

    logseq 支持对标签搜索。有点像上述基于标签的搜索。

    如下图,以列表形式显示匹配关键字的标签。优先显示匹配的标签结果,然后才是匹配的 block 和全文。

    s2.png

    不过,这种搜索是以列表的形式,并且精确匹配关键字,也没有利用标签本身的结构。

    logseq 的图谱。不利于标签结构发挥应有的作用,有很多改进空间。

    • 单个页面的图谱。很有限。

    g2.png

    • 全局的图谱。很乱。

    g1.png

    • 匹配某个关键词的图谱。太死板。

    (图略)。图谱中只显示包含该关键词的节点。

    总的来说,logseq 没有体现出标签的结构。

    logseq 建立标签之间的关联的方法。可以在页面内打标签,方便程度还可以。

    a7.png

    比如上图,在「长支架消失」页面中,打上「心脏支架」的标签,可以把 2 者关联起来。

    logseq 的标签筛选功能。

    例如在「心脏支架」这个页面下,可以用来筛选的反向链接(标签)有:

    s3.png

    可以筛选「与某个 tag 关联的其他 tag 」,在我看来,这相当于「多标签搜索」功能。

    总结

    标签结构很重要

    • 多级标签,就像地图的多级定位一样,可以很灵活地调整搜索范围,并且建立一个搜索-反馈-搜索的循环过程: 搜索标签->初步的标签结果->结合初步结果+标签结构->再次筛选增删标签->更近一步的搜索结果->再次筛选标签->...->最终的搜索结果。

    • 这里的标签,并不是普通意义上的单个词或者词组,它甚至可以是一句话,例如本篇中的「对心脏支架的集采导致药物球囊使用增加」,它是对一段话的抽象概括。定位到这句话,就定位到了这段话。

    • 形容多级标签结构,最合适的词是「提纲挈领」、「纲举目张」、「以点带线、以线带面」。

    • 标签结构可以支持它自己的进化

    并不是只有多级标签,更重要的是网状的关联

    观察上面「笔记生长过程」中所给出的例子,如下图,

    a1.png

    可以看到,「心脏支架」、「降价」、「带量采购」这 3 个标签,应该可以通过「心脏支架降价事件」这个段落,关联在一起。

    目前的双链软件与这种标签系统还有些距离

    以 logseq 为例,笔记的「标题」被赋予了太高的重要性。在我看来笔记标题不应该特殊化。

    • 比如 logseq 中,所有块中的标签,都会与笔记的标题建立关联。这明显是不合适的。某个块的标签不一定与笔记标题有关联,是否关联要看关系强弱,强行关联只会使原本很弱的联系变得很强,导致标签结构失真。

    • 标题就一定得成为标签吗?如果是的话,它在标签结构中,处于哪一层呢?

    以 logseq 为例,关系图谱(也即本篇所指的标签结构),没有被很好地发掘利用。

    • 某个标签的反向链接列表,本质上是对这个标签先搜索再列表展示。
    • 在反向链接页中,对标签再次进行筛选,本质上是一种多标签的搜索,这个过程不需要人工介入。
    • 在搜索栏中,键入关键字,先展示命中的标签再展示命中的全文,本质上也是对标签的搜索。
    • 而关系图谱恰恰是搜索功能的大辅助。所以为何不把这些搜索功能与关系图谱结合起来呢,而仅仅是摆一个样子呢?
    • 当然,这里讨论的只是搜索相关。除开本质上是搜索的反向链接,双链软件的块状结构有很多好的特性,比如展示很方便,引用很方便。

    这篇文章,介绍了使用局部多标签形成分层的标签结构,怎样利用这种标签结构。但关于标签还有很多问题:

    • 标签之间的关联关系,都是同质的吗?比如 “药品-球囊”、“药品-药品价格” 这两种关联,是一个性质吗?
    • 这些性质的差异,会怎样影响搜索呢?是否能通过建立不同的关联关系,优化搜索呢?
    • 对于大纲式的笔记,在上下层级的块上分别打的标签,它们之间是否应该建立关联呢?

    这些留到下篇再谈吧。我自己也还有很多疑问。

    欢迎大家讨论质疑。

    14 条回复    2022-05-25 10:43:41 +08:00
    advancejar
        1
    advancejar  
       189 天前
    写的很用心,但是我觉得没看懂,字都认识
    kingsley777
        2
    kingsley777  
       189 天前
    感谢楼主分享!
    我原先手工整理笔记标签,把每个描述拆成词做标签,结果工作量太大,而且拆的太碎效果反而不好就放弃了。
    最后还是简单粗暴的多关键词搜索
    sillydaddy
        3
    sillydaddy  
    OP
       189 天前
    @advancejar
    前面的图应该可以看懂吧😅?可能还是有些地方没表达出来,我有点当局者迷了。


    @kingsley777 > “把每个描述拆成词做标签,结果工作量太大,而且拆的太碎效果反而不好。。”
    「拆的太碎效果不好」是不是就是因为没有结构呢?我非常能想象出一大堆破碎的标签是什么效果。
    但假设标签之间有结构,那么你搜一个很小很细碎的标签,它也会给到你与之直接关联、间接关联的其他标签,进而是相关的笔记片段。

    工作量的话,假如工具重点针对标签功能发力,应该会方便很多。
    zhuangjia
        4
    zhuangjia  
       188 天前
    @advancejar “写的很用心,但是我觉得没看懂,字都认识” +1
    我都是往笔记里面一扔,当然结果就是很多时候搜不到想要的
    sillydaddy
        5
    sillydaddy  
    OP
       188 天前
    @zhuangjia
    @advancejar
    可以问一下,具体是哪里没看懂吗?希望在下一篇中,补足一下。

    自我感觉[上篇]( https://www.v2ex.com/t/818822)的整体表达比较清晰;
    对于这篇,后面的文字部分表达地确实不那么通顺,有些背景概念可能只有自己知道,但我真希望能把自己脑袋里的「水印」给到大家。

    本来想由浅入深表达出自己的想法,看来还是失败了。
    advancejar
        6
    advancejar  
       188 天前
    @sillydaddy 做成视频吧
    zhuangjia
        7
    zhuangjia  
       184 天前
    @sillydaddy
    也不是哪个地方没看懂,文章其实写的挺明白了:相对于上篇多了很多图篇帮助理解。
    但我没有这方面需求,暂时也不打算去实践,所以停留在了解就可以了。
    我复制一楼的这句话,更多的是调侃:这个太复杂了,我肯定做不到。
    yibie
        8
    yibie  
       172 天前
    并不是只有多级标签,更重要的是网状的关联——非常认同。

    从个人的实践来说,和你的感受一致,最终概念与概念之间形成正确的联系之后,才能构成知识。

    所以我一直到现在也没有去采用双向链接这种方式。但我之前看了 B 站上的阿婆主 [影视飓风] 关于工作流程的分享,意外的发现也许飞书的网状结构会更好。但我自己并没有在飞书上构建自己知识库的打算。

    我个人还是喜欢原始的 zettelkastan 的方式。我个人觉得,不是所有的事情,都值得这样子去整理知识网,但如果自己真的努力去寻找概念和概念的联系,最终还是在心里形成了知识网。让自己在思考某个问题的时候,会迅速关联到相关的概念中去。

    完全将知识网可视化可能是一个费力而不讨好的事情。

    ---

    PS:你是用 graphviz 来生成概念图的吗?
    sillydaddy
        9
    sillydaddy  
    OP
       166 天前
    @yibie 对,是用 graphviz 生成的。

    > “。。最终概念与概念之间形成正确的联系之后,才能构成知识。。”
    这点是没错。不过,我在帖子里提到的关联,主要是用来实现「搜索」功能的。应该跟你说的「。。努力去寻找概念和概念的联系,最终还是在心里形成了知识网。。」不是一个意思。
    duanguyuan
        10
    duanguyuan  
       165 天前
    赞一个,很用心了
    Jay54520
        11
    Jay54520  
       44 天前
    Google 搜索已经实现了你说的大部分功能,比如近义词甚至 typo 、图像识别、关联视频、给网页打标签,但它是自动化的。即使需要人工的,也可以人工标记后被机器学习。那么是否存在可以本地运行的搜索引擎,能实现上述功能?

    目前笔记软件的搜索只能搜索关键词,而不能实现近义词搜索,更不能理解文章的语义,自动打上标签。
    sillydaddy
        12
    sillydaddy  
    OP
       44 天前
    @Jay54520 >「 Google 搜索已经实现了你说的大部分功能,比如近义词甚至 typo 」

    我也相信随着 AI 的发展,这些自动化搜索都会出现。不过目前 Google 还没有那么智能吧?

    比如我在上篇里提到的例子:「今天见了好友老张,在大排档吃了顿烤串,很高兴」,隐含了「社交活动」、「饮食」、「心情」这三个抽象的标签。目前的自动标签系统还不能打吧?
    Jay54520
        13
    Jay54520  
       44 天前
    @sillydaddy
    “「今天见了好友老张,在大排档吃了顿烤串,很高兴」,隐含了「社交活动」、「饮食」、「心情」这三个抽象的标签。”
    这个当前就可以做到,比如你用 Google 搜索一张你拍摄的树的照片,Google 能识别这个是树,而它之所以能识别,是因为通过大量普通人标记的树的照片而学习到的。
    语义理解同理,如果大量人标记“烤串”为“饮食”,那它自然也能学习到,并且还会打更多普通人想到的而你没想到的标签,比如关联的“鸡肉”、“五花肉”、“孜然”等等。

    对于一些独特的标签,比如你打这些标签的逻辑和大部分普通人的逻辑不一样,才需要你手工去打。

    即使不完美,能做大部分,也能很大减少你手动组织的负担。

    所以你可以去搜索以下有没有相关的搜索引擎服务。https://photoprism.app/features 是可以本地运行的、通过机器学习识别图片的,文本的搜索引擎我还没有找到。
    sillydaddy
        14
    sillydaddy  
    OP
       43 天前
    @Jay54520
    嗯,其实搜索引擎能够做到概念的抽象,比如把一段话抽象成简单一句话,应该就可以做到。但能达到这种程度的话,应该算是有语义理解能力了吧,如果只是单纯靠标记数据去学习,恐怕很难做到。回头我去找找看有没有这种。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2875 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:55 · PVG 20:55 · LAX 05:55 · JFK 08:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.