使用哈希字典的词形还原函数不适用于 R 中的 tm 包

2024-01-14

我想使用大型外部词典(格式如下面的 txt 变量所示)对波兰语文本进行词形还原。我并不幸运,无法使用流行的文本挖掘包来选择波兰语。答案https://stackoverflow.com/a/45790325/3480717 https://stackoverflow.com/a/45790325/3480717作者:@DmitriySelivanov 可以很好地处理简单的文本向量。 (我还从字典和语料库中删除了波兰语变音符号。)该函数适用于文本向量。

不幸的是,它不适用于 tm 生成的语料库格式。让我粘贴 Dmitriy 的代码:

library(hashmap)
library(data.table)
txt = 
  "Abadan  Abadanem
  Abadan  Abadanie
  Abadan  Abadanowi
  Abadan  Abadanu
  abadańczyk  abadańczycy
  abadańczyk  abadańczykach
  abadańczyk  abadańczykami
  "
dt = fread(txt, header = F, col.names = c("lemma", "word"))
lemma_hm = hashmap(dt$word, dt$lemma)

lemma_hm[["Abadanu"]]
#"Abadan"


lemma_tokenizer = function(x, lemma_hashmap, 
                           tokenizer = text2vec::word_tokenizer) {
  tokens_list = tokenizer(x)
  for(i in seq_along(tokens_list)) {
    tokens = tokens_list[[i]]
    replacements = lemma_hashmap[[tokens]]
    ind = !is.na(replacements)
    tokens_list[[i]][ind] = replacements[ind]
  }
  tokens_list
}
texts = c("Abadanowi abadańczykach OutOfVocabulary", 
          "abadańczyk Abadan OutOfVocabulary")
lemma_tokenizer(texts, lemma_hm)

#[[1]]
#[1] "Abadan"          "abadańczyk"      "OutOfVocabulary"
#[[2]]
#[1] "abadańczyk"      "Abadan"          "OutOfVocabulary"

现在我想将其应用于 tm 语料库“docs”这是我将在 tm 生成的语料库上与 tm 包一起使用的示例语法。

docs <- tm_map(docs, function(x) lemma_tokenizer(x, lemma_hashmap="lemma_hm"))

我尝试过的另一种语法:

LemmaTokenizer <- function(x) lemma_tokenizer(x, lemma_hashmap="lemma_hm")

docsTDM <-
  DocumentTermMatrix(docs, control = list(wordLengths = c(4, 25), tokenize=LemmaTokenizer))

它向我抛出一个错误:

 Error in lemma_hashmap[[tokens]] : 
  attempt to select more than one element in vectorIndex 

该函数适用于文本向量,但不适用于 tm 语料库。提前感谢您的建议(如果不能与 tm 一起使用,甚至可以将此功能与其他文本挖掘包一起使用)。


我在这里看到两个问题。 1)您的自定义函数返回一个列表,而它应该返回一个字符串向量; 2)您传递了错误的 lemma_hashmap 参数。

解决第一个问题的快速解决方法是在返回函数结果之前使用 Paste() 和 sapply()。

lemma_tokenizer = function(x, lemma_hashmap, 
                           tokenizer = text2vec::word_tokenizer) {
  tokens_list = tokenizer(x)
  for(i in seq_along(tokens_list)) {
    tokens = tokens_list[[i]]
    replacements = lemma_hashmap[[tokens]]
    ind = !is.na(replacements)
    tokens_list[[i]][ind] = replacements[ind]
  }

  # paste together, return a vector
  sapply(tokens_list, (function(i){paste(i, collapse = " ")}))
}

我们可以运行您的帖子的相同示例。

texts = c("Abadanowi abadańczykach OutOfVocabulary", 
          "abadańczyk Abadan OutOfVocabulary")
lemma_tokenizer(texts, lemma_hm)
[1] "Abadan abadańczyk OutOfVocabulary" "abadańczyk Abadan OutOfVocabulary"

现在,我们可以使用 tm_map。只需确保使用 lemma_hm (即变量)而不是“lemma_hm”(字符串)作为参数。

docs <- SimpleCorpus(VectorSource(texts))
out <- tm_map(docs, (function(x) {lemma_tokenizer(x, lemma_hashmap=lemma_hm)}))
out[[1]]$content
[1] "Abadan abadańczyk OutOfVocabulary"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用哈希字典的词形还原函数不适用于 R 中的 tm 包 的相关文章

  • R 中 if-else 中的逻辑运算符

    我有一个名为 mat 的下表 5 列和 3 行 AC CA RES 1 0 2 2 1 3 0 0 0 1 正在执行的操作是mat 1 mat 1 mat 2 我正在测试以下内容 1 如果一行的两列都为零 则结果应为 NA 2 如果一行中只
  • 将数据框分成相等的部分

    我有一个示例数据框 df lt data frame x 1 112 y runif 112 有没有办法打印数据框列表 其中列表的第一部分包含行1 10 第二11 20等等 直到最后 111 112 你可以使用split with rep
  • R markdown PDF:为测验者暂时隐藏剧透代码

    我正在使用 R markdown 创建 PDF R 课程 我想插入一个如下所示的测验 output pdf document What is the class of the following R object 1 pi r class
  • 在构建分数多项式函数时避免 eval(parse())

    我的目标是在 R 中编写一个函数 它接受 a 的系数分数多项式 http www stata com manuals13 rfp pdf rfpRemarksandexamples FP 并返回一个向量化函数 该函数针对给定的输入数字计算指
  • 用plotly创建丝带

    我需要在散点图上绘制加速度与英里 加仑的两个斜率 轻型汽车一处斜坡 重型汽车一处斜坡 我创建了这个 cars light lt cars log cars log log weight lt log mean cars weight car
  • 为什么“str_extract”只捕获其中一些值?

    我有一个表 其中有一个 会员类型 列 其中包括我们多年来使用的无数不同的会员级别 example lt data frame membership c Legacy Payment ID 3564 Payment Record 0 Peri
  • R:行数不相等的列绑定

    我有两个数据集 它们每个都有变量 ID Block 和 RT 反应时间 我想合并 列绑定这两个集合 以便我拥有一个包含变量的数据集 ID 块 RT1 RT2 问题是两个集合中的行数不相等 此外 ID 和块号匹配也很重要 缺失值应替换为 NA
  • 在闪亮应用程序的 DT::datatable 中添加、删除和编辑行

    我有下面闪亮的应用程序 我可以通过按添加新行Add基于闪亮的小部件选择 我可以通过按选择并删除一行Delete我想将它们与单击一行的功能结合起来 然后在按Edit 例如 如果我单击第二行 然后更改Security Type小部件来自Stoc
  • 如何强制在较新版本的 R 上安装较旧的软件包?

    我无法安装proj4string进入我当前版本的 R 2 15 1 Warning message package proj4string is not available for R version 2 15 1 我认为这是因为 2 15
  • 计算不包括当前值的平均值

    我有下表 a b avg 1 1 7 3 2 1 0 3 3 1 2 3 4 2 1 2 5 2 3 2 其中 a 和 b 是数据 avg 计算按 a 分组的 b 的平均值 现在我想计算按 a 分组的 b 的平均值 avg2 不包括当前值
  • 在 R 中,为什么 sum 与其他方法(例如 cumsum)相比如此慢?

    我正在尝试实现一个需要非常快的函数 主要是因为它一遍又一遍地处理巨大的数据帧 R 总是让我感到困惑 为什么它有时有点慢 而有时又慢得离谱 不幸的是 它从来都不快 不管怎样 我一直认为 如果可能的话 当以某种方式推入 apply sapply
  • 如何在 R 中解析堆叠多个 JSON 的文件?

    我在 R 中有以下 堆叠 JSON 对象 example1 json ID 12345 Timestamp 20140101 Usefulness Yes Code event1 A result 1 ID 1A35B Timestamp
  • 收集四列,其中两个键中包含值

    已经提出了类似的问题 但它们都涉及在一个关键列中收集多个列 我需要两个键中的多个列 这是我的数据框 ID measure A 1 measure A 2 measure B 1 measure B 2 1 8 25 23 5 4 5 2 8
  • tidyverse 干扰 ggplot2 吗?无法访问map_data

    在控制台中运行这些命令 输出为 gt cty0 ggplot2 map data county gt library tidyverse Loading tidyverse ggplot2 Loading tidyverse tibble
  • 关于子组的新列和另一列中的百分比范围

    我有一个如下所示的示例 df df test lt data frame Group Name c Group1 Group2 Group1 Group2 Group2 Group2 Group1 Sub group name c A A
  • 距数据帧中最近的非 NA 值的距离

    我有以下数据帧 df 我想添加一列 其中包含与每行最接近的非 NA 值的距离 df lt data frame x 1 20 df c 1 3 4 5 11 14 15 16 x lt NA 换句话说 我正在寻找以下值 df distanc
  • 配置 fix() 和 edit() 以从 R/RStudio 在 Notepad++ 中打开

    当我在 RStudio 或 RGUI 中执行此操作时 fix SomeFunction 或使用edit 我可以在记事本中看到该函数的代码 有什么方法可以更改此设置 以便代码预览在 Notepad 中打开 而不是在普通的旧记事本中打开 同样
  • data.table 的包装函数

    我有一个已经使用 data frame 上下文编写的项目 为了缩短计算时间 我尝试利用 data table 的速度 我的方法是构造包装函数 读取帧 将它们转换为表 进行计算 然后转换回帧 这是一个简单的例子 FastAgg lt func
  • 跨类别和列自动化卡方

    我有一个调查数据框 其中包含几个问题 列 编码为 1 同意 0 不同意 受访者 行 根据 年龄 年轻 中年 老年 地区 东 中 西 等指标进行分类 大约有30个类别总共 3个年龄 3个地区 2个性别 11个职业等 在每个指标中 类别不重叠且
  • 使用faceting()时如何连接geom_point()和geom_line?

    我有一个问题 但我在互联网上没有找到任何相关信息 我很高兴得到一些提示 我有一个数据集 其中 x 轴是离散的 但我想将这些点相互连接 我可以做到 我的问题是当我添加分面选项时 我无法再将这些点相互链接起来 我找到了一个替代方案 但看起来不太

随机推荐

  • 停止页面加载时自动运行 ASP 脚本

    我这里遇到问题了 我创建了一个用于将记录添加到数据库中的页面 它工作正常 但是每次加载页面时都会运行 asp 脚本 每次加载页面时都会向数据库输入一条空白记录 这非常烦人 因为它与我有其他脚本 我觉得我很愚蠢 但我所需要的只是让脚本仅在单击
  • php 是否在“html body”之前加载?

    很难解释这个问题 但我目前正在将 php 页面中的变量传递给一些 html 隐藏输入 我使用 JavaScript 函数从隐藏输入中获取这些值 该函数的调用方式如下 它现在可以在我的系统上运行 但是从 php 传递的值是否有可能无法通过 因
  • 忽略第一维的二维 JavaScript 数组问题

    简而言之 我根据当前月份和日期填充一个数组 我不会在这里复制代码来获取当前月份和日期 因为它工作正常 它适当地返回变量 月 和 日 我的数组列表包含一年中每一天的项目 该数组以 开始 new var content 然后数组是这样列出的 删
  • 即使代码未编译,GroovyClassLoader 对 parseClass 的调用也会成功

    我试图将 Groovy 脚本作为类动态加载 但即使脚本的代码未编译 也会创建类对象 例如 我加载 Groovy 脚本的 Groovy 代码的简化版本如下 GroovyCodeSource src new GroovyCodeSource b
  • Grails clean 不起作用

    我正在使用 Grails 2 0 1 当尝试运行应用程序时 我发现 NoClassDefFoundError 错误 2012 10 16 15 24 25 301 http bio 8080 exec 9 错误错误 GrailsExcept
  • 无法将 LINQ to SQL 类添加到 VS2010 中的项目

    我刚刚在 Visual Studio 2010 RC 中遇到了一些以前没有发生过的事情 比如昨天 这里没有软件变化 但我昨天在编译时确实遇到了一些麻烦 需要重新启动 我无法通过添加对话框将 LINQ to SQL 类添加到任何项目 我创建了
  • 如何减少 x 轴上两个离散值之间的间距?

    首先 我想在没有 ggplot 的情况下完成此操作 我有一个箱线图脚本 data lt data frame u c 0 522 0 488 0 474 0 443 0 510 0 443 0 420 0 554 0 333 0 414 0
  • 无需 DNS 的通用本地网络名称解析方法?

    我正在为启用 DHCP 的网络设备编写 TCP IP 代码 该设备是否有一种通用的方式可以在野外宣布其主机名 几乎所有网络浏览器 在 osx linux win 上 都可以通过名称访问它 例如 http mydevice index htm
  • PHP 下载 excel 文件损坏

    我有一个 Excel 文件 我希望用户能够从我的服务器下载该文件 我在这里查看了很多问题 但我找不到正确下载文件而不会损坏的方法 我假设它是标题 但我还没有将它们组合起来 这就是我现在所拥有的 在我收到的损坏文件中 我可以看到我想要的电子表
  • 在 JOptionPane 上设置 DocumentFilter

    我在用着 String s JOptionPane showInputDialog 从用户那里得到对问题的答复 该对话框设置为显示响应的文本字段 我想将响应中允许的字符限制为仅字母数字和 是否可以在文本字段上安装 DocumentFilte
  • javascript 文件附加非法字符

    我认为我的 apache 网络服务器有问题 我无法参考jquery js 我收到以下错误 带镀铬 Uncaught SyntaxError Unexpected token ILLEGAL 使用火狐浏览器 Error illegal cha
  • docker重启时数据库丢失

    我在 Windows 10 的 Docker 上运行 influxdb 和 grafana 每次关闭 Docker 时 我都会丢失数据库 这是我所知道的 我尝试过调整保留策略 但对 结果 我可以关闭并重新启动容器 docker compos
  • Spotfire 交叉表中的总计问题

    当我使用FIRST CG1 在 单元格值 中 总计不是求和而是显示结果中的值之一FIRST CG1 请告知我们是否必须始终使用sum XXX 得到总计 简短的回答 是的 如果你想要的话Grand Total是您的数据的总和 将总计应用于不同
  • 如何在 Perl 中压缩多个文件?

    如何 tar 多个目录并附加具有某种模式 如 txt 的文件 并排除某些目录并将某些模式 如 exe 全部排除到单个 tar 文件中 要点是目录数量未知 动态 所以我猜我需要循环遍历 I d use 存档 焦油 http search cp
  • 如何在 Grails 中的控制器中声明 inList 约束?

    谁能告诉我如何声明inListGrails 控制器中的约束 假设我有这门课 class A List hello 我怎样才能添加inList的约束条件为hello List从控制器内部 定义一个约束 其中List属性是否具有针对列表列表进行
  • d3.js 家庭树配偶亮点

    代码链接 http jsfiddle net mj58659094 yKUsQ http jsfiddle net mj58659094 yKUsQ 当单击一个人 节点 时 它也会选择配偶 我只想选择 突出显示 我点击的人 丈夫或妻子或孩子
  • 将 SQL 源文件与 bigquery cli 结合使用

    是否可以在 bigquery CLI 中使用输入文件 bq query lt my query sql 如果您使用的是 unix 或者在 windows 上安装了 cygwin 则可以使用 xargs xargs a my query sq
  • Delphi HelpInsight 以及实施中的总结

    我正在寻找有关带有摘要标签的 Help Insight 的解决方案 帮助 我正在使用 Delphi Tokyo 10 2 Update 2 1 HelpInsight 可以工作并且该函数确实有附加信息 interface type TMyC
  • setTimeout 在 forEach 中不起作用

    我有一个调用函数的 forEach 每次调用之间需要有一个延迟 我已将其放在 forEach 内的 setTimeout 内 它不尊重第一次等待后的超时 相反 它等待一次 然后立即运行 我已将超时设置为 5 秒 并使用控制台进行确认 等待
  • 使用哈希字典的词形还原函数不适用于 R 中的 tm 包

    我想使用大型外部词典 格式如下面的 txt 变量所示 对波兰语文本进行词形还原 我并不幸运 无法使用流行的文本挖掘包来选择波兰语 答案https stackoverflow com a 45790325 3480717 https stac