【Python机器学习】NLP词频背后的含义——距离和相似度

我们可以使用相似度评分(和距离),根据两篇文档的表示向量间的相似度(或距离)来判断文档间有多相似。

我们可以使用相似度评分(和举例)来查看LSA主题模型与高维TF-IDF模型之间的一致性。在去掉了包含在高维词袋中的大量信息之后,LSI模型在保持这些距离方面十分出色。我们可以检查主题向量之间的距离,以及这个距离是否较好地表示文档主题之间的距离。我们想要检查意义相近的文档在新主题向量空间中彼此相近。

LSA能够保持较大的距离,但它并不总能保持小的距离(文档之间关系的精细结构)。LSA底层的SVD算法的重点是使新主题向量空间中所有文档之间的方差最大化。

特征向量(词向量、主题向量、文档上下文向量)之间的距离驱动着NLP流水线或者任何机器学习流水线的性能。这些距离的类别如下,不同的NLP问题,可能会在其中选择较好的类别:

  • 欧几里得距离或笛卡尔距离,或均方根误差(RMSE):2范数或
  • 平方欧几里得距离、距离平方和(SSD):
  • 余弦、夹角或投影距离:归一化点积;
  • 闵可夫斯基:p范数或
  • 分级距离,分级范数:p范数或为0<p<1;
  • 城市街区距离、曼哈顿距离或出租车距离,绝对距离之和(SAD):1范数或
  • 杰卡德距离,逆集合相似性;
  • 马哈拉诺比斯距离;
  • 莱文斯坦距离或编辑距离。

计算距离的各种方法都说明了它的重要性。除了在scikit-learn中成对距离的实现,还有许多其他的实现用于数学专业,如拓扑学、统计学、工程学等。为了便于参考,可以在下面的模块中找到举例方法:

python 复制代码
import sklearn.metrics.pairwise
print(sklearn.metrics.pairwise._VALID_METRICS)

距离通常由相似度(分数)计算,反之亦然,因此距离与相似度得分成反比。相似度得分涉及为0到1之间。典型的距离与相似度之间的换算公式如下:

python 复制代码
similarity=1.0/(1.0+distance)
distance=(1.0/similarity)-1.0

但是,对于0到1之间(像概率一样)的距离和相似度得分,更常用的公式如下:

python 复制代码
similarity=1.0-distance
distance=1.0-similarity

余弦距离对于取值范围由自己的约定。两个向量之间的夹角距离通常被计算为两个向量之间最大可能的角间距(180°或pi弧度)的一个分数表示。

因此,余弦相似度与余弦距离互为倒数:

python 复制代码
import math
angular_distance=math.acos(cosine_similarity)/math.pi
distance=1.0/similarity-1.0
similarity=1.0-distance

术语"距离"和"长度"经常与术语"度量指标"混淆,因为许多距离和长度都是有效和有用的度量指标。但不幸的是,并非所有的距离都可以称为度量指标。但是,在正式的数学和集合论文 中,度量指标有时也被称为"距离函数"或"举例度量指标"中。

相关推荐
qq_4176950515 小时前
C++中的解释器模式
开发语言·c++·算法
星爷AG I15 小时前
15-5 身体感觉:疼觉和温觉(AGI基础理论)
人工智能·agi
云和数据.ChenGuang15 小时前
鸿蒙餐饮系统:全场景智慧餐饮新范式
人工智能·机器学习·华为·数据挖掘·harmonyos·鸿蒙·鸿蒙系统
苍何15 小时前
个人微信正式支持接入龙虾,附一键接入教程!
人工智能
Swift社区15 小时前
AI 驱动 UI:鸿蒙 ArkUI 的新可能
人工智能·ui·harmonyos
pingan878715 小时前
试试 docx.js 一键生成 Word 文档,效果很不错
开发语言·前端·javascript·ecmascript·word
Lab_AI15 小时前
科学智能AI4S应用:人工智能加速加速抗生素发现(AIDD助力药物研发)
人工智能·神经网络·机器学习·ai4s·药物研发·aidd
big_rabbit050215 小时前
java面试题整理
java·开发语言
暮冬-  Gentle°15 小时前
Python内存管理机制:垃圾回收与引用计数
jvm·数据库·python
用户27042728381215 小时前
OpenClaw,Token费用控制
人工智能