使用 Gensim 提取短语时出错

2023-12-09

我正在尝试使用 Gensim 中的短语来获取句子中的二元组,如下所示。

from gensim.models import Phrases
from gensim.models.phrases import Phraser
documents = ["the mayor of new york was there", "machine learning can be useful sometimes","new york mayor was present"]

sentence_stream = [doc.split(" ") for doc in documents]
#print(sentence_stream)
bigram = Phrases(sentence_stream, min_count=1, threshold=2, delimiter=b' ')
bigram_phraser = Phraser(bigram)

for sent in sentence_stream:
    tokens_ = bigram_phraser[sent]
    print(tokens_)

即使它将“new”、“york”捕获为“new york”,但它不会捕获“machine”,将learning捕获为“机器学习”

然而,在Gensim 网站中显示的示例他们能够将“机器”、“学习”等词理解为“机器学习”。

请让我知道如何在上面的示例中将“机器学习”作为二元模型


gensim使用的技术Phrases纯粹基于共现统计:在公式中单词一起出现的频率与单独出现的频率也受min_count并与threshold value.

只是因为你的训练集中“new”和“york”同时出现了两次,而其他单词(如“machine”和“learning”)只同时出现了一次,“new_york”就变成了一个二元词,并且其他配对则不然。更重要的是,即使您确实找到了以下组合min_count and threshold这会将“machine_learning”提升为二元组,它会also将所有其他出现一次的二元组配对在一起 - 这可能不是您想要的。

实际上,要从这些统计技术中获得良好的结果,您需要大量不同的、真实的数据。 (玩具大小的例子可能会因为表面的玩具大小的原因而表面上成功或失败。)

即使这样,他们也往往会错过人们认为合理的组合,并做出人们不会的组合。为什么?因为我们的大脑有更复杂的方式(包括语法和现实世界知识)来决定何时一堆单词代表一个概念。

因此,即使有更多更好的数据,也要为无意义的 n 元语法做好准备。调整或判断模型是否全面改善您的目标,而不是任何单点或临时检查是否符合您自己的敏感性。

(关于引用的 gensim 文档评论,我很确定如果您尝试Phrases仅在其中列出的两个句子中,它不会找到任何所需的短语 - 不是“new_york”或“machine_learning”。作为一个形象的例子,省略号...意味着训练集更大,结果表明额外的未显示文本很重要。只是因为您添加到代码中的第三句话才检测到“new_york”。如果您添加了类似的示例以使“machine_learning”看起来更像是统计上的异常配对,那么您的代码也可以促进“machine_learning”。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Gensim 提取短语时出错 的相关文章

随机推荐

  • 正则表达式对非捕获组的帮助

    肯定是重复的 但我找不到它 我正在使用一个组来匹配重复的子字符串 然而 我不希望这群人被抓获 这似乎是一个矛盾 明确地说 假设我想找到跟随全大写子集字符串的 3 个精确副本的任何字符 为了 s hjgABABABfgfBBdqCCCugDD
  • 递归清空多个文件的命令

    我想递归地清除给定目录的许多日志文件的内容 而不删除每个文件 用一个简单的命令就可以实现吗 我知道我能做到 gt logs logfile log一份一份的 但是该文件夹中有很多日志 这并不简单 顺便说一句 我正在使用 macOS Sier
  • super() 在构造函数中意味着什么? [复制]

    这个问题在这里已经有答案了 代码是做什么的 super 在构造函数内部做什么 例如 这是我的类的构造函数 public abstract class Rectangle extends AbstractShape private doubl
  • 在Python中查找函数的参数

    我希望能够询问班级的 init 方法的参数是什么 简单的方法如下 cls init func code co varnames code co argcount 但是 如果类有任何装饰器 那么这将不起作用 它将给出装饰器返回的函数的参数列表
  • 检查 xslt 中的条件

    下面是输入 XML 小大 对于较大的输入 XML 以及输出 xml 表示抱歉
  • 访问 Ansible playbook 中的清单主机变量

    在 Ansible 2 1 中 我有一个角色被需要访问主机文件变量的剧本调用 关于如何访问它有什么想法吗 我正在尝试访问ansible ssh host in the test1以下清单的部分host file test1 test 1 a
  • 全栈 NestJS 应用程序中的 OAuth2 流程

    另一个 OAuth2 问题在其他地方没有完全涵盖 我使用 NestJS 后端 React 前端 Passport 和我自己的数据库进行身份验证 尝试添加一个 OAuth2 身份提供商 Google 我将 NestJS 应用程序配置为 OAu
  • Grails:更改 hibernate 方言时 SQL 语法错误

    我正在将 Grails 与 mySQL 数据库一起使用 并且尝试更改数据库引擎 据我研究 这可以最好地做到 dialect org hibernate dialect MyDialect 在 DataSource groovy 配置中 但是
  • 在 Regex/Javascript 中将一个字符交换为另一个字符

    我想做类似的事情 var a This is an A B pattern ABABA a replace A B a replace B A 并让它返回 gt 这是 B A 模式 BABAB 代替 gt 这是一个 A A 模式 AAAAA
  • ElasticSearch:我们可以在索引期间同时应用 n-gram 和语言分析器吗

    非常感谢 Random 我已将映射修改如下 为了进行测试 我使用 电影 作为索引类型 注意 我还添加了 search analyzer 如果没有这个 我就无法得到正确的结果 但是我对使用 search analyzer 有以下疑问 1 我们
  • Tapestry:字符编码问题

    我有一个 Tapestry 应用程序 它从表单中检索数据 将其写入数据库 然后显示结果 只要不使用特殊字符 一切都可以正常工作 例如 文本 Test 将导致 Test 我猜这个问题与错误的字符编码设置有关 Tapestry java 类 C
  • 删除多个实体上的表行拆分时出错

    我想删除拆分为两个实体的表行 如果我尝试删除主要实体 如果之前我没有使用以下命令加载相关的其他实体 则会收到错误消息context Entry Reference 当我要删除整行时 之前检索相关实体是不是有点愚蠢 如果我继续评论 我会收到以
  • 折叠表达式:替换特定类型但转发所有其他类型:如何实现这一点?

    我试图替换折叠表达式中的特定类型 同时简单地转发所有其他类型 但失败了 As std forward需要显式模板专门化我尝试提供另一组模板化重载 但是这些尚未考虑重载解决方案如果这有效的话 无论如何都会导致不明确的函数调用 第二次尝试是专门
  • 在 Python 3 中调用命令行参数

    我正在用 Python 3 编写一个程序 该程序将从 csv 文件中获取数据 对其进行调整并将新数据写入由用户命名的 csv 文件 我只是想了解命令行部分 我希望它能够以这种格式正确执行 program py input csv outpu
  • 如何在聚合物组件内部使用react?

    似乎可以在聚合物网络组件中使用 React 但我找不到工作示例 只能this 但似乎已经过时了 HTML
  • java 哪个布局管理器适合这个任务?

    我有一个 JPanel 父级 里面有 3 个 JPanel 子级 它们目前都使用 GridLayout 并共同表示一个 UML 类 问题是 当我添加新属性或方法时 所有 3 个 JPanel 都会增长到相同的大小 欲望行为是 无论何时添加方
  • 固定与绝对

    因此 我检查了该网站 发现一些问题与我正在寻找的内容很接近 但并不完全相同 我试图弄清楚如何定位元素 以便在滚动 向上 向下 时位置是固定的 但是当浏览器调整大小 向左 向右 时 位置是绝对或相对的 本质上 我想将一个元素放置在距浏览器窗口
  • C#,如何让图片背景透明?

    我有一个图片框 里面有一个png 然而 即使我将背景色设置为透明 它也不是透明的 有什么想法可能是错的吗 Thanks 我也遇到过有关透明图片的问题 你必须通过代码来绘制它 看我的问题图片框问题 EDIT In 绘画事件 包含背景图像的控件
  • 使用迭代器删除对象时出现 IllegalStateException

    我已经被这个错误困扰了一段时间 但我不知道问题出在哪里 我的代码是这样的 ArrayList
  • 使用 Gensim 提取短语时出错

    我正在尝试使用 Gensim 中的短语来获取句子中的二元组 如下所示 from gensim models import Phrases from gensim models phrases import Phraser documents