- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有什么方法可以使用 stringdist
包或其他字符串距离包对特定单词进行加权?
通常我有共享一个公共(public)词的字符串,例如“city”或“university”,结果得到相对接近的字符串距离匹配,但非常不同(即:“University of Utah”和“University of Ohio” ,或“XYZ 城市”和“ABC 城市”)。
我知道可以根据算法对操作(删除、插入、替换)进行不同的加权,但我还没有看到一种方法来包含与权重配对的单词列表。有什么想法吗?
当然,一种选择是在匹配之前str_remove
那些常用词,但是这有一个问题,即“XYZ County”和“XYZ City”看起来是一样的。
例子:
“犹他大学”和“俄亥俄大学”
stringdist("University of Utah", "University of Ohio") / max(nchar("University of Utah"), nchar("University of Ohio"))
归一化字符串距离为 0.22222。这是相对较低的。但实际上,“Utah”和“Ohio”之间的归一化 OSA 字符串距离为 1:
4/18 = 0.222222
但是,事先删除“University of”和其他常见字符串(如“State”)会导致“University of Ohio”和“Ohio State”之间的匹配。
对像“University of”这样的字符串进行加权,例如归一化分母中使用的实际字符数的 0.25 将减少这些公共(public)子字符串的影响,即:
4/(18 * 0.25) = 0.888888。
当我们考虑对国家与大学的例子做同样的事情时,这里就变得模糊了:
stringdist("University of Ohio", "Ohio State")
yield 为 16。但取分母的 .25:
16/(18 * .25) = 3.55555。
也许更好的选择是使用 LCS,但降低与常见字符串列表匹配的子字符串的权重。因此,即使“University of Utah”和“University of Ohio”有一个 14 个字符的公共(public)子字符串,如果“University of”出现在这个列表中,它的 LCS 值也会降低。
编辑:另一个想法
我有另一个想法 - 使用 tidytext
包和 unnest_tokens
,可以生成所有匹配字符串中最常见单词的列表。考虑相对于它们在数据集中的共性来降低这些词的权重可能会很有趣,因为它们越常见,它们的区分能力就越小......
最佳答案
也许一个想法是在计算字符串距离之前重新组合相似的术语,以避免完全比较“俄亥俄州立大学”和“俄亥俄大学”。
# Strings
v1 <- c("University of Ohio", "University of Utah", "Ohio State", "Utah State",
"University Of North Alabama", "University of South Alabama", "Alabama State",
"Arizona State University Polytechnic", "Arizona State University Tempe",
"Arizona State", "Metropolitan State University of Denver",
"Metropolitan University Of The State Of Denver", "University Of Colorado",
"Western State Colorado University", "The Dalton College", "The Colorado State",
"The Dalton State College", "Columbus State University", "Dalton College")
# Remove stop words
v2 <- strsplit(v1, " ") %>%
map_chr(~ paste(.x[!tolower(.x) %in% tm::stopwords()], collapse = " "))
# Define groups
groups <- c(Group1 = "state",
Group2 = "university",
Group3 = "college",
# Groups 4-5 must contain BOTH terms
Group4 = ".*(state.*university|university.*state).*",
Group5 = ".*(state.*college|college.*state).*")
# Iterate over the list and assign groups
dat <- list(words = v2, pattern = groups)
lst <- dat$pattern %>% map(~ grepl(.x, dat$words, ignore.case = TRUE))
lst %>%
# Make sure groups 1 to 3 and 4-5 are mutually exclusive
# i.e: if a string contains "state" AND "university" (Group4), it must not be in Group1
modify_at(c("Group1", "Group2", "Group3"),
~ ifelse(lst$Group4 & .x | lst$Group5 & .x, !.x, .x)) %>%
# Return matches from strings
map(~ v2[.x]) %>%
# Compute the stringdistance for each group
map(~ stringdistmatrix(.x, .x)) ## Maybe using method = "jw" ?
关于R - 带加权词的字符串距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50516228/
我有一个包含三个字段的表:ID、值、计数 ID和Value构成PK。 给定一个 ID,我想选择一个按计数加权的值,然后将计数减一。 如果我有 1 A 2 1 B 3 我应该有 2/5 的机会获
我有一个数据集,其中开始日期和日期没有特定的顺序。我想创建一组新的几个月列和数据的加权平均值。 del 代表否。日期范围内的天数 d 是该时间段的平均值 from datetime import da
我正在开发的一个软件应用程序需要能够根据用户当前拥有的任务数量将任务分配给一组用户,其中任务最少的用户最有可能获得下一个任务。然而,当前的任务负载应该被视为一个权重,而不是一个绝对的顺序定义。 IOW
我正在尝试用字典创建一个光学字符识别系统。 事实上,我还没有实现字典=) 我听说有一些基于 Levenstein 距离的简单指标,这些指标考虑了不同符号之间的不同距离。例如。 'N' 和 'H' 彼此
三个AI新手问题: 为什么 A* 可以采用启发式算法来找到最佳路径? 如果障碍物挡住了道路,系带制动技术有什么用? 什么算法适合在有障碍物的网格上找到路径? (像吃 bean 一样) 第一个问题让我们
我有一个 2396x34 double matrix命名 y其中每一行 (2396) 代表一个单独的情况,由 34 个连续的时间段组成。 我也有 numeric[34]命名 x这代表了 34 个连续时
我有一个如下所示的多维数组,我想做一些奇特的排序,但我不知道如何处理它。我想首先按第 5 个元素对数组元素进行排序,然后是第 4 个元素,然后是第 3 个元素,然后是第 2 个元素,然后是第 1 个元
我想对具有三个变量(列)的数据集(即 Sample_Data)进行 Kmeans 聚类,如下所示: A B C 1 12 10 1 2 8 11 2 3 14 10
我环顾四周,发现了一些与我类似的问题,但它们缺乏解释。 我正在尝试搜索包含多列的表格。我希望匹配列数最多的行位于顶部,匹配列数最少的行位于底部。我见过几种方法。我目前的糟糕方式是使用大量 MySQL
我必须大量使用加权概率分布,并且想使用 violinplots 进行一些可视化。但是,我找不到在任何常见嫌疑人(matplotlib、seaborn、bokeh 等)中使用加权数据创建这些数据的方法。
我会尽量做到彻底: 我有 11 个小组。 我有很多人需要在这些组之间进行划分 每个人都有一个加权偏好列表。通常在该列表上有 3 个有序的组,但一些异常值会有更多或更少的组。 IE:人 1 有进入 A
我有 100 个顶点和一个计算顶点 x 和顶点 y 之间边的权重的函数 f(x,y)。 f 不是特别昂贵,因此如果需要,我可以生成带权重的索引邻接列表。 有哪些有效、易处理的方法可以通过最小化或最大化
谁能给我指出一个关于如何构建(乘法和/或加法)加权 voronoi 图的引用实现,该图最好基于 Fortune 的 voronoi 算法? 我的目标:给定一组点(每个点都有一个权重)和一组边界边(通常
有没有一种方法可以使用标准库进行漂亮而优雅的加权洗牌?有 std::discrete_distribution。我想要的是这样的: std::vector data { N elements }; s
其实不是RANDBETWEEN()。我正在尝试创建一个 UDF 来返回数组中数字的索引,其中数字越大,被选择的可能性就越大。 我知道如何将概率分配给工作表中的随机数(即对概率之和使用 MATCH()
canvas 占据了整个屏幕,从绿色可以看出。canvasFrame 有两行,其中第二行是滚动文本小部件。第二行也被加权但是它没有填满屏幕,因为绿色区域应该是黄色的。如何让第二行填充空白并让滚动的文本
我正在研究 HITS 算法实现的加权版本。 这是 Hits 算法的公式(非加权版本): 其中HITS A为权威评分,HITS H为hub评分,维基百科算法伪代码: G := set of pages
我不确定如何实现这个,但这里是描述: 取一个 0-10 之间的数字作为输入(0 总是返回 false,10 总是返回 true) 将接收到的参数作为输入,并传递给一个函数,在运行时确定所需的 bool
所以我在 Pandas DataFrame 中有两个值列和两个权重列,我想生成第三列,它是这两列的分组依据、加权平均值。 因此: df = pd.DataFrame({'category':['a',
我正在尝试使用 ggridges 包(基于 ggplot2)创建一个 joyplot。一般的想法是 joyplot 创建很好缩放的堆叠密度图。但是,我似乎无法使用加权密度生成其中之一。在创建 joyp
我是一名优秀的程序员,十分优秀!