问题标签 [stringdist]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1864 浏览

r - 如何在 R 中创建发音相似的名称组?

我想根据名称选择的相似程度创建一个组变量。我已经开始使用 stringdist 包来生成距离度量。但我不确定如何使用该输出信息按变量生成组。我看过 hclust 但似乎使用聚类函数你需要知道你最终想要多少个组,我不知道。我开始的代码如下:

我想看到一个包含两列的数据框,看起来像

根据我使用的距离度量(我在上面建议了两个),这些组可能会略有不同,但我可能会选择其中一个来运行。

基本上,如何在不知道我想要的集群数量的情况下从距离矩阵到组变量?

0 投票
1 回答
74 浏览

r - 比嵌套 for 循环更有效的填充矩阵的方法

有没有更有效的方法来实现以下目标?

注意:compare_strings为了暗示我正在尝试执行的操作类型,是伪代码。根据下面的评论,问题的先前形式存在一些混淆,因为 stringdist 带有 function stringdistmatrix。我的场景涉及一个没有该选项的函数,因此该问题已被修改以反映下面的评论。

0 投票
1 回答
894 浏览

r - 在 stringdist 中使用 stringsim

我正在使用包 stringdist 来比较一些字符串向量,但是当我尝试测试包时,我得到的答案与我认为的不同。

我想做这个:

到数据框中的 2 列

但我得到这个错误:

我需要能够做到这一点,因为理想情况下,我会用 i 替换行号并在循环中运行它。这甚至可能吗?我尝试寻找类似的错误,但其他问题不是很有帮助。

0 投票
1 回答
1956 浏览

regex - r stringdist 或 levenshtein.distance 替换字符串

我有一个包含约一百万个观察值的大型数据集,并以定义的观察类型为键。在数据集中,有大约 900,000 个观测类型错误的观测值,其中 50 种可接受的观测值类型有大约 850 个(不正确)变体。

使用 gsub 类似于用手铲挖地下室,而在我自己的情况下,是一把破碎的铲子,因为我对 r 和复杂的正则表达式非常陌生。简单的回退(对我而言)是为每种接受的观察类型编写一个 gsub 语句,但这似乎不必要地费力,因为它需要 50 条语句。

我想使用levenshtein.distancestringdist用最短距离字符串替换有问题的条目。运行z <- for (i in length(y)) { z[i] = levenshtein.distance(y[i], x)}不起作用,因为它试图将 (length(x)) 结果传递给每个 y[i]。

如何以最小距离返回结果?我已经看到function(x) x[2]返回系列中的第二个结果,但是如何获得最低的结果?

0 投票
2 回答
595 浏览

regex - R 在完整字符串中查找缩写

我正在 R 中寻找一种有效的方法来判断一个字符串是否可能是另一个字符串的缩写。我采用的基本方法是查看较短字符串中的字母在较长字符串中是否以相同的顺序出现。例如,如果较短的字符串是“abv”,较长的字符串是“abbreviation”,我想要一个肯定的结果,而如果我的较短的字符串是“avb”,我想要一个否定的结果。我有一个我已经组合在一起的函数,但它似乎是一个非常不雅的解决方案,我想我可能会错过一些正则表达式的魔法。我还查看了 R 的 'stringdist' 函数,但我还没有发现任何看起来特别像它的东西。这是我的功能:

谢谢你的帮助!

0 投票
3 回答
821 浏览

r - 在 R 中使用 stringdist

假设我有以下几句话:

几乎很清楚,这三个词指的是同一个人。具有以下代码:

很明显,在这个例子中qgram效果更好。但这只是这种情况。我的问题是如何结合这两种方法?

jw给出了更好的结果,但不能“抓住”颠倒的单词(在我的例子中,姓氏与姓氏)。有什么建议吗?

0 投票
3 回答
1042 浏览

r - 按标准的字符串距离矩阵

我编写了一个脚本来对公司名称进行一些模糊匹配。我将一些并非总是完全正确的公司名称(即可能存在小的拼写错误或“inc.”后缀丢失)与“正确”公司名称和 ID 的语料库进行匹配。显然,关键是将 ID 正确附加到并非总是正确的公司名称上。

这是我正在匹配的数据集的一些非常简化的版本(我还没有使用 zip 部分,但稍后会回到它):

然后我使用以下代码创建字符串距离矩阵

然后我继续匹配最小距离对。通常,我想将 4000 家公司与 4,5 mio 的语料库进行匹配。公司,至少可以说需要一些计算能力。我的想法是,不是计算所有可能对之间的字符串距离,而是只为共享邮政编码的人计算它。正如我所看到的,与我在这里用简化数据说明的情况相比,对于更复杂的情况,结果将是更少的计算量和更高的模糊匹配精度。

简而言之,我想要的结果矩阵是这样的:

我似乎无法找到一种方法来做到这一点。有任何想法吗?

0 投票
0 回答
271 浏览

r - 如何模糊匹配列中的文本,然后用 R 中的共识替换

我有一个数据框如下

J BergmanJacques Bergmann.Jacques BurgmanJacques Bergmann前五个条目是同一个人,但不是第六个或最后一个。我想尝试对两列中的名称进行模糊匹配,然后用共识替换它们(或者我猜模糊匹配中最常见的是替代方法),以便输出的数据框应该是:

我尝试过使用stringdist(),但我真正遇到的问题是a)获得共识匹配和b)然后用共识替换匹配

0 投票
1 回答
159 浏览

r - 基于部分匹配文本(包 stringdist)重塑和总结 data.frame

我处理旧列表名称。人名的写法不同,但实际上,这些人是同一个人。我使用 stringdist 包来计算字符串之间的距离,以找到可能相同的名称。

我的数据的一个小例子:

它给出了什么:

我尝试了什么:使用 stringdist 包

距离<5:准等弦

重塑

它给出了什么:

只保留好的线条:

最终但没有我的第 3 栏!

怎么能做到这一点?(总结我的原始 data.frame column2 值)

0 投票
1 回答
609 浏览

json - 推文之间的 Jaccard 距离

我目前正在尝试测量数据集中推文之间的 Jaccard 距离

这是数据集所在的位置

http://www3.nd.edu/~dwang5/courses/spring15/assignments/A2/Tweets.json

我尝试了一些方法来测量距离

这是我到目前为止所拥有的

我将链接的数据集保存到一个名为 Tweets.json 的文件中

然后我将 json_alldata 转换为 tweet.features 并去掉了 geo 列

这些是前两条推文的样子

我尝试的第一件事是使用stringdiststringdist 库下的方法

当我运行它时,我得到

[1] 0.1621622

不过,我不确定这是否正确。A 交叉点 B = 23,A 联合 B = 25。Jaccard 距离是 A 交叉点 B/A 联合 B - 对吧?那么根据我的计算,Jaccard 距离应该是 0.92?

所以我想我可以按组来做。只需计算交集和并集并除以

这是我尝试过的

当我尝试做交集时,我得到了这个:输出只是 list()

当我尝试联合时,我得到了这个:

工会(A1,A2)

这似乎没有将单词组合成一个集合。

我想我可以通过联合来划分交叉点。但我想我需要程序来计算每组中的数字或单词,然后进行计算。

不用说,我有点卡住了,我不确定我是否走在正确的轨道上。

任何帮助,将不胜感激。谢谢你。