根据定义将单词映射到数字

2024-01-21

作为较大项目的一部分,我需要阅读文本并将每个单词表示为数字。例如,如果程序读入“每个好孩子都应该得到果实“,然后我会得到一个转换表'every' to '1742', 'good' to '977513', etc.

现在,显然我可以使用哈希算法来获取这些数字。然而,如果具有相似含义的单词的数值彼此接近,则会更有用,因此 'good'变成'6827' and 'great'变成'6835', etc.

作为另一种选择,与其用一个简单的整数表示每个数字,不如使用由多个数字组成的向量,例如 (lexical_category,tense, 分类特定单词),其中词汇类别是名词/动词/形容词/等,tense是未来/过去/现在,分类定义了一组广泛的一般主题,specific_word与上一段中描述的非常相似。

是否存在这样的算法?如果没有,您能给我一些关于如何开始自己开发的建议吗?我用 C++ 编码。


如果你的想法有点天真,那么它很有趣(但不用担心,天真的问题在 NLP 领域很有用)。

抛开其他实际问题不谈(例如解析、词性标记、词干提取,当然还有识别/映射给定单词的问题……此后我会非常简短地讨论它们),有几个困难原则你的建议[采用数字尺度,其中语义上相近的单词以接近的方式编码]:

  • 一词多义(花哨的词表明某些词可以有多个不相关的含义)
  • 语义是多维的。例如,名词“进取心”既传达“能量”的意思,又传达“热情”的意思
  • 有些概念与其他概念完全无关,例如,“茶”和“地毯”属于两组不同的单词,但试图将它们放在线性尺度上会隐含地否定这种尺度上的距离的想法(除了可能非常远)小距离)与语义有任何联系。
  • 表达式:在句子中,特定的概念有时由表达式而不是单个单词来承载。例如“文艺复兴时期的人”或“目录”。
  • 语义有时(经常)来自上下文。例如“老板”通常指某人的主管,也是布鲁斯·斯普林斯汀的昵称。

简而言之
a) 含义(或“定义“,如问题中所称,或”语义“正如语言学家所说的那样)是一件棘手的事情,它不适合映射到一条线,甚至一棵树上。可以使用其他图形,例如网络,但即便如此,当应用超出相对范围时,事情也会变得有点棘手。受限制的域。
and
b) 由于一词多义、表达方式等原因,将单词与含义关联起来也很棘手。

尽管如此,如果您想尝试问题中建议的那种映射,也许在特定领域的上下文中(例如体育评论或机械维修)和/或理解某些单词必须是任意映射,在“深入”之前,您可能想要熟悉以下 NLP(自然语言处理)学科和资源:

  • 词性 (POS) 标记 http://en.wikipedia.org/wiki/Part-of-speech_tagging
  • Stemming http://en.wikipedia.org/wiki/Stemming
  • WordNet http://wordnet.princeton.edu/和其他词汇数据库
  • 斯坦福自然语言处理小组 http://www-nlp.stanford.edu/
    包括他们的注释统计和基于语料库的 NLP 软件资源列表 http://www-nlp.stanford.edu/links/statnlp.html
  • 自然语言工具包 (NLTK) http://www.nltk.org/(基于Python,但非常具有说教性)

关于您使用的兴趣用 C++ 编写的工具,您可能会发现其中的几个,用于不同的目的(并且质量不同!)。您可能还会发现,尽管出于性能原因,它们有时会绑定到用 C/C++ 编写的原语,但许多现代 NLP 框架和工具倾向于使用 Java 甚至 Python 等脚本语言。我没有使用基于 C++ 的 NLP 软件的直接经验。如果您没有找到您需要的东西(在 C++ 中),我强烈建议您尝试自己实现一些东西,至少在您之前广泛回顾了以前的技术并充分理解潜在的困难之前。

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

根据定义将单词映射到数字 的相关文章

  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 根据插入顺序迭代哈希?

    不想对条目进行排序 使用它也不会保留顺序 foreach my val keys hash 默认情况下 Perl 5 中的哈希值是无序的 您可以使用tie http perldoc perl org functions tie html a
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new

随机推荐

  • 我怎样才能用承诺重写这个?

    我正在为 T 恤网站构建内容抓取器 目标是仅通过一个硬编码的 url 进入网站 http shirts4mike com 然后 我将找到每件 T 恤的所有产品页面 然后创建一个包含其详细信息的对象 然后将其添加到数组中 当数组填满 T 恤时
  • 关于图形工具中嵌套块模型的基本问题

    非常简短地提出两到三个基本问题minimize nested blockmodel dl https graph tool skewed de static doc inference html graph tool inference m
  • C# 的跨平台嵌入式数据库/键值存储 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一种快速 可嵌入的键 值存储 其具有键集合上的游标语义 或简单的可嵌入数据库 可以在 NET
  • 小端和大端

    我必须编写一个例程来在两种表示形式之间进行转换 但我有点困惑 如果我有一个内存为 32 位字的架构 我必须存储字 0xA15D23B1 使用 Big endian 时 内存在 23 之后的 5D 之后变为 A1 最后变为 B1 使用 Lit
  • bootstrap.yml 未加载 Spring Boot 2

    我遇到了与此类似的问题thread https stackoverflow com questions 48300174 my application does not read bootstrap yml why is that 尚未解决
  • 递归泛型

    有没有办法使此方法适当通用并消除警告 p Sort a collection by a certain value in its entries This value is retrieved using the given code va
  • Angular 5 路由:空路径内的空路径

    我正在使用 Angular 5 尝试将空路径子路由加载到空路径父布局路由中 FullLayoutComponent 始终会加载 而 WhyUsComponent 组件会在我访问 localhost 4200 why us 时加载 但是当我访
  • 从移动应用程序向 Android Wear 发送数据延迟 [重复]

    这个问题在这里已经有答案了 我正在尝试在设置应用程序和表盘之间同步数据 但运气不佳 我尝试使用 googleApiClient 与侦听器 onDataChanged 和 DataMaps 但穿戴设备接收数据有很大的延迟 我说的是从手机发送到
  • 如何在常量正确性下实现 strtol ?

    根据http www cplusplus com reference cstdlib strtol http www cplusplus com reference cstdlib strtol 该函数的签名为long int strtol
  • 如何根据角色获取用户?

    如何从 MembershipUserCollection 中检索 客户 角色的用户 Roles GetUsersInRole返回一个string 角色中的用户名 如果你真的想要MembershipUser对象 您可以使用 var list
  • R plm 与 Fixst 包 - 结果不同?

    我试图理解为什么 R 包 plm and fixest 当我使用异方差稳健标准误差 HC1 和状态固定效应估计面板模型时 给我不同的标准误差 有人给我提示吗 这是代码 library AER For the Fatality Dataset
  • setup.cfg Python 项目的单源包版本

    对于具有以下功能的传统 Python 项目setup py 有多种方法可以确保版本字符串不必在整个代码库中重复 看PyPA 的 单一来源包版本 指南 https packaging python org guides single sour
  • “in”关键字有什么用?

    在 Haskell 中 为什么不在 do 块内使用 in 和 let 而必须以其他方式使用 例如 在下面有些人为的示例中 afunc Int gt Int afunc a let x 9 in a x amfunc IO Int gt IO
  • 如何从左向右推送具有滑动效果的ViewController?动画名称必填

    EDIT 下面这个 gif 的动画名称是什么 从右到左 下面这个gif 从左到右 的补充动画的动画名称是什么 NOTE 我不想继续下去 我想用该动画推送视图 EDIT 2 当我谈论动画名称时 有些人会感到困惑 然而 这里是一个有效的动画名称
  • 流定义

    我正在阅读 Java I O 流 但我对与它们相关的正确定义感到困惑 有人说流是一种传输数据的传送带 其他人说流是流或 数据序列 其他人说流是 连接到输入或输出 来源 那么正确的定义是什么 流是一个概念 但没有那么严格 只有一个描述是正确的
  • Bookdown 按照 _bookdown.yml 中指定的章节顺序停止

    Bookdown 将按字母顺序对章节进行排序 除非之后指定订单rmd files in the bookdown yml file https bookdown org yihui bookdown usage html 这在过去对我来说效
  • Z3/SMT:我什么时候应该选择推送/弹出来重置?

    我使用 Z3 来解决符号执行器产生的路径条件 该执行器以深度优先顺序探索状态空间 与 CUTE DART 或 可能 SAGE 非常相似 我们正在尝试使用 Z3 的不同方式 在一种极端情况下 我们将每个查询发送到 Z3 并在之后立即 重置 它
  • java.io.IOException:连接上的流意外结束? [复制]

    这个问题在这里已经有答案了 调用我们的内部网络服务之一似乎会出现以下错误 java io IOException unexpected end of stream on Connection webservicessandbox xxx c
  • 将 async/await 转换为 Task.ContinueWith

    这个问题是由评论引发的this one https stackoverflow com a 21326957 1768303 如何反向移植非线性async await NET 4 0 代码无需Microsoft Bcl Async 在链接的
  • 根据定义将单词映射到数字

    作为较大项目的一部分 我需要阅读文本并将每个单词表示为数字 例如 如果程序读入 每个好孩子都应该得到果实 然后我会得到一个转换表 every to 1742 good to 977513 etc 现在 显然我可以使用哈希算法来获取这些数字