【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

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

相关推荐
夏天测3 分钟前
微信小程序自动化漏洞挖掘流水线:从缓存提取到密钥验证全流程实战
python·网络安全·微信小程序·漏洞挖掘
Godspeed Zhao8 分钟前
Level 4自动驾驶系统设计1——功能与场景1
人工智能·机器学习·自动驾驶
ACP广源盛1392462567312 分钟前
IX6012 PCIe 交换芯片@ACP#RTX Spark 入门级 12 口存储外设扩展方案(对比 ASM1812)
大数据·人工智能·分布式·嵌入式硬件·gpt·spark·电脑
源图客14 分钟前
境外电商 - 龙虾智能体-综合选品推荐报告
开发语言·javascript·ecmascript
丨白色风车丨14 分钟前
OpenCV 实战入门:轮廓检测、模板匹配与命令行参数解析
人工智能·opencv·计算机视觉
zhangfeng113316 分钟前
workbuddy 结合deepseekv4-flash 安装打印机 hp laster jet 3050
人工智能·workbuddy
是苏浙17 分钟前
Java实现链表1
java·开发语言
爱看科技20 分钟前
三星提速开启AI转型,英伟达/WIMI微美全息推进AI算力建设需求持续旺盛
人工智能
dog25022 分钟前
信号权重和流分类的对数规律
人工智能·分类·数据挖掘
道一云黑板报24 分钟前
告别提示词工程:为什么“循环工程”才是 AI 编程的未来?
人工智能·驱动开发·软件工程·ai编程