如何使用 Python NLTK 计算 WordNet 中两个形容词之间的最短路径(测地线)距离?

2023-12-11

使用几个内置的相似性度量可以轻松计算 WordNet 中两个同义词集之间的语义相似性,例如:

synset1.path_similarity(synset2)

synset1.lch_similarity(synset2), Leacock-Chodorow 相似度

synset1.wup_similarity(synset2), 吴-帕尔默相似度

(如此处所示)

然而,所有这些都利用了 WordNet 的分类关系,即名词和动词的关系。形容词和副词通过同义词、反义词和所属词相关。如何测量两个形容词之间的距离(跳跃数)?

I tried path_similarity(),但正如预期的那样,它返回'None':

from nltk.corpus import wordnet as wn
x = wn.synset('good.a.01')
y = wn.synset('bad.a.01')


print(wn.path_similarity(x,y))

如果有任何方法可以计算一个形容词与另一个形容词之间的距离,指出它将不胜感激。


没有简单的方法来获得非名词/动词的单词之间的相似性。

如前所述,名词/动词的相似性很容易从

>>> from nltk.corpus import wordnet as wn
>>> dog = wn.synset('dog.n.1')
>>> cat = wn.synset('cat.n.1')
>>> car = wn.synset('car.n.1')
>>> wn.path_similarity(dog, cat)
0.2
>>> wn.path_similarity(dog, car)
0.07692307692307693
>>> wn.wup_similarity(dog, cat)
0.8571428571428571
>>> wn.wup_similarity(dog, car)
0.4
>>> wn.lch_similarity(dog, car)
1.072636802264849
>>> wn.lch_similarity(dog, cat)
2.0281482472922856

对于形容词来说这很难,所以你需要构建自己的文本相似性设备。最简单的方法是使用向量空间模型,基本上,所有单词都由多个浮点数表示,例如

>>> import numpy as np
>>> blue = np.array([0.2, 0.2, 0.3])
>>> red = np.array([0.1, 0.2, 0.3])
>>> pink = np.array([0.1001, 0.221, 0.321])
>>> car = np.array([0.6, 0.9, 0.5])
>>> def cosine(x,y):
...     return np.dot(x,y) / (np.linalg.norm(x) * np.linalg.norm(y))
... 
>>> cosine(pink, red)
0.99971271929384864
>>> cosine(pink, blue)
0.96756147991512709
>>> cosine(blue, red)
0.97230558532824662
>>> cosine(blue, car)
0.91589118863996888
>>> cosine(red, car)
0.87469454283170045
>>> cosine(pink, car)
0.87482313596223782

训练一堆向量来完成类似的事情pink = np.array([0.1001, 0.221, 0.321]),你应该尝试谷歌

  • 潜在语义索引/潜在语义分析
  • 词袋
  • 向量空间模型语义
  • Word2Vec、Doc2Vec、Wiki2Vec
  • 神经网络
  • 余弦相似度自然语言语义

您还可以尝试一些现成的软件/库,例如:

  • Gensim https://radimrehurek.com/gensim/

除了向量空间模型之外,您还可以尝试一些图形模型,将单词放入图表中,并使用诸如 pagerank 之类的东西来遍历图表,以提供一些相似性度量。

也可以看看:

  • 使用 NLTK 比较术语/表达式的相似度?
  • 检查两个单词是否彼此相关
  • 如何确定使用 NLTK 时的语义层次/关系?
  • 有没有一种算法可以告诉两个短语的语义相似度
  • 语义相关性算法 - python
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Python NLTK 计算 WordNet 中两个形容词之间的最短路径(测地线)距离? 的相关文章

  • 翠儿。让流永远运行

    我对 tweepy python 库比较陌生 我想确保我的流 python 脚本始终在远程服务器上运行 因此 如果有人能够分享如何实现这一目标的最佳实践 那就太好了 现在我正在这样做 if name main while True try
  • 在Python3.6中调用C#代码

    由于完全不了解 C 编码 我希望在我的 python 代码中调用 C 函数 我知道有很多关于同一问题的问答 但由于一些奇怪的原因 我无法从示例 python 模块导入简单的 c 类库 以下是我所做的事情 C 类库设置 我使用的是 VS 20
  • Python 3 __getattribute__ 与点访问行为

    我读了一些关于 python 的对象属性查找的内容 这里 https blog ionelmc ro 2015 02 09 understanding python metaclasses object attribute lookup h
  • 可以在 TensorFlow 中使用排名相关作为成本函数吗?

    我正在处理偶尔充满异常值的极其嘈杂的数据 因此我主要依靠相关性来衡量我的神经网络的准确性 是否可以明确使用诸如等级相关性 斯皮尔曼相关系数 之类的东西作为我的成本函数 到目前为止 我主要依赖 MSE 作为相关性的代理 我现在面临三个主要障碍
  • Paramiko - 使用私钥连接 - 不是有效的 OPENSSH 私钥/公钥文件

    我正在尝试找到解决方案 但无法理解我做错了什么 在我的 Linux 服务器上 我运行了以下命令 ssh keygen t rsa 这产生了一个id rsa and id rsa pub file 然后我将它们复制到本地并尝试运行以下代码 s
  • 带图像的简单 GUI [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我试图在简单的 GUI 上显示一些卡
  • Python Kivy - 在本机网络浏览器中打开 url 的应用程序

    我尝试制作一个简单的应用程序 在单击 Screen One 上的按钮后 在 Kivy 中打开一个网页 我使用了这个主题 Python 在应用程序中直接显示网络浏览器 iframe https stackoverflow com questi
  • 无法打开 Python。错误 0xc000007b

    我最近一直在学习 Python 3 我在我的上网本 32 位 Windows 7 上创建简单的小程序没有任何问题 当我将它安装在我的上网本上时 我没有遇到任何问题 但现在我已经开始使用它了 我想将它安装在我的台式机上 并且我有一个 我的桌面
  • Python:计算数据帧列中所有行中特定字符的实例数

    我有一个包含列 toaddress ccaddress body 的数据框 df 我想迭代数据帧的索引 以获取 toaddress 和 ccaddress 字段中电子邮件地址的最小 最大和平均数量 这是通过计算这两列中每个字段中的 和 的实
  • 为什么我用 beautifulSoup 刮的时候有桌子,但没有 pandas

    尝试抓取条目页面转换为制表符分隔格式 主要拉出序列和 UniProt 登录号 当我跑步时 url www signalpeptide de index php sess m listspdb bacteria s details id 10
  • select() 可以在 Windows 下使用 Python 中的文件吗?

    我正在尝试在 Windows 下运行以下 python 服务器 An echo server that uses select to handle multiple clients at a time Entering any line o
  • 将一个列表的元素除以另一个列表的元素

    我有两个清单 比如说 a 10 20 30 40 50 60 b 30 70 110 正如你所看到的 列表 b 由一个列表的元素总和组成 其中 window 2 b 0 a 0 a 1 10 20 30 etc 如何获得另一个列表 该列表由
  • Airflow Python 单元测试?

    我想为我们的 DAG 添加一些单元测试 但找不到任何单元测试 有 DAG 单元测试框架吗 有一个端到端的测试框架存在 但我猜它已经死了 https issues apache org jira browse AIRFLOW 79 https
  • 导入错误:没有名为 google.auth 的模块

    当我尝试导入时firebase admin in python 2 7我收到错误 导入错误 没有名为 google auth 的模块 这是Docker文件 https github com ammaratef45 Attendance bl
  • 如何在与应用程序初始化文件不同的文件中迭代 api 路由

    我有一个 apiroutes py 文件 其中定义了许多路由 例如 api route api read methods GET api route api write methods POST 其中 api 是导入 from import
  • Flask WTForms 使用变量自动填充 StringField

    我有一个表格 我想用上一页收到的信息自动填充一些字段 但如果他们想调整它 它需要是可更改的 我正在为我的 SelectField 使用动态创建的列表 但添加 StringField 并不成功 请参阅下面的我的代码 forms py clas
  • Scipy 稀疏 Cumsum

    假设我有一个scipy sparse csr matrix代表下面的值 0 0 1 2 0 3 0 4 1 0 0 2 0 3 4 0 我想就地计算非零值的累积和 这会将数组更改为 0 0 1 3 0 6 0 10 1 0 0 3 0 6
  • 张量流:注册 numpy bfloat16 扩展

    正如我所见 tensorflow 中有 bfloat16 的 numpy 扩展 https github com tensorflow tensorflow blob 24ffe9f729160a095a5cab8f592392018280
  • 如何禁止 celery 中的 pickle 序列化

    Celery 默认使用 pickle 作为任务的序列化方法 如中所述FAQ http ask github com celery faq html isn t using pickle a security concern 这代表一个安全漏
  • 在 Python 模块中使用 InstaLoader

    我正在尝试使用 Instaloader 下载与主题标签相关的照片以进行图像分析 我在GitHub存储库中找到了一个全面的方法 如何在终端中执行它 但是 我需要将脚本集成到Python笔记本中 这是脚本 instaloader no vide

随机推荐

  • D3 带边界框的力定向布局

    我是 D3 新手 在设置力导向布局的边界时遇到困难 我已经设法 从示例中 拼凑出我想要的内容 但我需要包含图表 在刻度函数中 变换 翻译将正确显示我的图形 但是当我将 cx 和 cy 与 Math max min 一起使用时 请参阅注释代码
  • 犰狳中的 Rcpp 糖命令

    我正在尝试使用ifelse Rcpp 糖的命令arma vec 代码失败并出现错误 ifelse was not declared in this scope 我找不到解决方案 下面是一个简单的示例代码 导致错误 include
  • 安装 Visual Studio 2015 RTM 后未加载包

    问题 我安装了 Visual Studio 2015 RC 并在其上安装了 Visual Studio 2015 RTM 我在互联网上找不到任何表明您不能这样做的内容 我不知道这是否与问题相关 不幸的是 当我重新启动后第一次启动 Visua
  • 我需要知道用户单击按钮时是否按下(按下)某个键

    在 Flutter 桌面应用程序中 我想知道当用户用鼠标单击按钮时 他们是否也按住了某个键 如 Shift Control Alt 等 如何才能做到这一点 EDIT 我最初的问题不够清楚 我有一个动态复选框列表 我想使用 SHIFT 单击来
  • 我应该使用哪种数据结构从 CSV 中搜索字符串?

    我有一个 csv 文件 其中包含近 200000 行 其中包含两列 姓名和工作 然后 用户输入一个名称 例如 user name 我必须搜索整个 csv 以查找包含模式 user name 的名称 最后将输出打印到屏幕 我在 Java 中使
  • C#:如何将文本附加到类中表单上的文本框?

    我有一个名为 Form1 cs 的表单 它调用一个我们将称为 Class1 cs 的类 以及另一个名为 Form2 cs 的表单 如果 Form2 打开 Class1 中的子例程需要更新 Form2 中的文本框 文本需要在附加到文本框中的当
  • 使用 libvlc 播放 mp3 的简单 C 程序

    我是一名普通的 C C 程序员 最近 我接手了一个项目 制作一个带有智能播放列表的媒体播放器 其工作方式类似于 Zune 的 SmartDj 我决定使用libvlc来玩 我以前从未编写过开源软件 所以我对 git 等一无所知 你能帮我至少写
  • Java:我需要以编程方式解析、修改和写回 Java 源文件

    我需要解析 修改和写回Java源文件 我研究了一些选择 但似乎我没有抓住重点 解析后的 AST 输出在写回文件时总是会使用标准格式而不是原始格式来搞乱格式 基本上我想要一些可以做的事情 content write parse sourceF
  • docker 未经授权:需要身份验证 - 成功登录后推送

    从主机推送 docker 映像 成功登录后 时 我收到 未经授权 需要身份验证 详细信息如下 bash 4 2 docker login username asamba email protected WARNING login crede
  • Mysql 中 LIKE 子句的替代方案

    我的数据库表中有一个存储类别的文件 我以以下格式存储类别 1 12 15 现在 当我尝试从类别 1 中搜索产品时 我用LIKE我的查询中的子句 例如 where prod catg LIKE 1 or prod catg LIKE 1 or
  • 没有尾部斜杠的 django url 不会重定向

    我有两个应用程序位于两台不同的计算机上 在计算机 A 上 在urls py文件我有一行如下所示 r cast mySite simulate views cast 该网址对两者都适用mySite com cast and mySite co
  • 如何使用 Highcharts 创建单系列条形图

    我正在尝试创建一个简单的 Highcharts 条形图 其中包含单个系列和图例中的多个标签 这是怎么做到的 这是一个例子 container highcharts chart type bar legend enabled true lay
  • 使用 php 从文件夹中读取最新更新的 csv 文件

    只是徘徊 是否有可能使系统始终读取最新更新的csv文件与php 示例 我有一个文件夹 报告 当报告准备好时 用户可以随时将新的 csv 文件 具有差异文件名 放入此文件夹中 有什么方法可以在 php 中进行编码 使其只读取 Report 文
  • PHP 警告:第 0 行的未知模块已加载

    在 Mac OSX Mavericks 上使用 homebrew php55 每当我运行 php 命令时 我都会收到以下错误消息 一切运行正常 只是很烦人 PHP Warning Module intl already loaded in
  • SQL Server 奇怪的 Ceiling() 行为

    谁能解释一下 SQL Server 中的以下结果 我很困惑 declare mynum float 8 31 select ceiling mynum 100 结果是831 declare mynum float 8 21 select c
  • Git 远程/共享预提交挂钩

    将一个官方存储库作为远程存储库 并从其克隆多个本地存储库 是否可以在该主存储库上编写预提交挂钩脚本并在其所有克隆上强制执行 我不这么认为 因为钩子不是克隆的 可能是如果该挂钩脚本本身是版本化的 然后链接到克隆服务器中的 符号链接 前提是它们
  • 如何终止子活动并将活动置于堆栈顶部

    我的活动 A 启动活动 B 活动 B 启动活动 C A gt B gt C 当用户单击活动 C 中的按钮时 我想将 A 带到堆栈顶部并将 B 和 C 完全从堆栈中取出 有没有办法做到这一点 您可以使用FLAG ACTIVITY CLEAR
  • 为什么我的 SVG 贝塞尔曲线在 Firefox 中损坏?

    我今天遇到一个问题 我创建的图表在通过创建时无法在 Firefox 中工作getPointAtLength 这是显示问题的小提琴 http jsfiddle net xfpDA 9 请注意 javascript 顶部的注释 SVG 路径的相
  • python 中的闭包?

    当我运行此代码时 我得到以下结果 15 15 我期望输出应该是 15 17 但事实并非如此 问题是 为什么 def make adder and setter x def setter n x n return lambda y x y s
  • 如何使用 Python NLTK 计算 WordNet 中两个形容词之间的最短路径(测地线)距离?

    使用几个内置的相似性度量可以轻松计算 WordNet 中两个同义词集之间的语义相似性 例如 synset1 path similarity synset2 synset1 lch similarity synset2 Leacock Cho