问题标签 [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 投票
0 回答
46 浏览

r - 使用模式匹配将数据附加到具有相似名称的列

我有五个 excel 文件,每个文件 2 张。

-file_2015:a,b

-file_2016:a,b

-file_2017:a,b

-file_2018:a,b

随着时间的推移,表格 a 和 b 都提供相同的数据。 它们的列数不同,因为新的指标被添​​加到较旧的文件中不存在的较新文件中。

列名略有变化,我想通过将这些数据附加在一起来合并这些数据。

类似的变量名称示例:

-指标评级 - 单位级别,第三年获得 5 分的百分比

- 公制评级 - 第 3 年 5 学分 - 单位级别

我遇到的其他问题是来自不同文件的相同指标已用相应年份命名。例如:

- 2016 年的目标 - 毕业率,6 年

- 2017 年目标 - 6 年毕业率

尽管它们是相同的数据指示器,但在附加数据时会生成两列。

目前,我正在使用此功能读取所有 excel 文件并将每个工作表数据附加在一起作为一个数据框。

有什么方法可以使用模式匹配将相似的列名匹配在一起并将数据附加在一起?

0 投票
0 回答
39 浏览

r - 如何使用 NLP / 字符串操作来重新编码多列州/城市/外国位置

非常感谢帮助!!!

我有一些非常脏的数据要清理。在 R 中寻找一个优雅的解决方案,可以正确识别是否有国外旅行(TRUE = 国外旅行,FALSE = 国内/美国旅行)。

数据存在几个问题,包括: - 州都是缩写格式和非缩写格式 - 拼写错误 - 不同的格式(即只有州、城市逗号州、城市斜线州等) - 州/国家下的数据可能包含城市而不是一个州/国家,反之亦然,用于城市列。

在外国旅行列下,解决方案应该覆盖这样,如果州/国家或城市列指示外国旅行,它将被编码为 TRUE,否则为 FALSE。

现在我有一些非常不整洁的代码,它查看每一列,如果找到它,给出一个真/假,如果它为至少 1 列的真(找到一个国内项目)它由外国 t/f 列重新编码为假(没有外国旅行):

0 投票
1 回答
944 浏览

r - 计算R中两个向量/字符串之间的相似度

在这个论坛上可能会提出类似的问题,但我觉得我的要求很特殊。我有一个数据框 df1,其中包含具有 40,000 个观察值的变量“WrittenTerms”,我有另一个具有 17,000 个观察值的变量“SuggestedTerms”的数据名 df2

我需要计算“书面术语”和“建议术语”之间的相似度

df1$WrittenTerms

头疼

肺癌

腹痛

df2$建议条款

心脏病发作

乳腺癌

腹部疼痛

头痛

肺癌

我需要得到如下输出

df1$WrittenTerms df2$suggestedterms Similarity_percentage

头痛 头痛 50%

肺癌 肺癌 100%

腹痛 腹痛 80%

我正在编写以下代码以满足要求,但它需要更多时间,因为它涉及 for 循环,并且有什么方法可以使用 TF IDF 或任何其他需要更少时间的方法找到相似性

0 投票
0 回答
172 浏览

r - 如何在 R 中使用 TF IDF 计算 2 个字符串列之间的相似度

在这个论坛上可能会问类似的问题,但我觉得我的要求很特殊。

我有一个数据框 df1,其中包含具有 40,000 个观察值的变量“WrittenTerms”,我有另一个具有 17,000 个观察值的变量“SuggestedTerms”的数据名 df2

我需要计算“书面术语”和“建议术语”之间的相似性,我使用的是 Stringdist 包,但这种方法需要相当长的时间,因为我们有更多的观察。

df1$WrittenTerms

头疼

肺癌

腹痛

df2$建议条款

心脏病发作

乳腺癌

腹部疼痛

头痛

肺癌

我需要得到如下输出

df1$WrittenTerms df2$suggestedterms Similarity_percentage

头痛 头痛 50%

肺癌 肺癌 100%

腹痛 腹痛 80%

我正在编写下面的代码来满足要求,但它需要更多时间,因为它涉及 for 循环,有没有什么方法可以使用 TF IDF 或任何其他需要更少时间的方法找到相似性

0 投票
1 回答
43 浏览

python - 在 python 函数中使用字符串时接受“接近匹配”?

我正在尝试使用最短路径函数来查找图中字符串之间的距离。问题是有时我想计算一些接近的比赛。例如,我希望“通信”算作“通信”或“网络设备”算作“网络设备”。有没有办法在python中做到这一点?(例如,提取单词的根,或计算字符串距离,或者可能是已经具有诸如复数/动名词/拼写错误/等单词形式关系的 python 库)我现在的问题是我的过程仅在存在与我的数据库中的每个项目完全匹配,这很难保持清洁。

例如:

关于简单或快速的方法来做到这一点的任何想法?或者,也许是一种不同的方式来考虑接受紧密匹配的强项......或者当字符串不匹配时可能只是更好的错误处理?

0 投票
1 回答
361 浏览

r - 两个字符串的最佳相似距离度量

我有一堆公司名称要匹配,例如我要匹配这个字符串:A&A PRECISION

A&A PRECISION ENGINEERING

但是,我使用的几乎所有相似性度量:例如 Hamming 距离、Levenshtein 距离、Restricted Damerau-Levenshtein 距离、Full Damerau-Levenshtein 距离、最长公共子串距离、Q-gram 距离、余弦距离、Jaccard 距离 Jaro 和 Jaro-Winkler 距离

匹配:B&B PRECISION相反。

任何想法哪个度量会更加强调子字符串的精确性及其匹配的序列并且不太关心字符串的长度?我认为正是由于字符串的长度,指标总是会错误地选择。

0 投票
1 回答
54 浏览

r - 如何在R中聚类相似的文本

我知道在这个/不同的论坛中可能会提出类似的问题,但我觉得我的要求不同。我有 2 列数据框,如下所示:

逐字 最低级术语

急性支气管炎 急性支气管炎

急性上颌窦炎 急性上颌窦炎

嗜酸性粒细胞增加 嗜酸性粒细胞计数增加

急性支气管炎 急性支气管炎

急性上颌窦炎 急性上颌窦炎

嗜酸性粒细胞增加 嗜酸性粒细胞计数增加

嗜酸性粒细胞增多

我正在尝试使用我的代码获得以下输出,但我没有找到任何运气

Verbatim LowestlevelTerm 集群 id

急性支气管炎 急性支气管炎 1

急性支气管炎 急性支气管炎 1

急性上颌窦炎 急性上颌窦炎 2

急性上颌窦炎 急性上颌窦炎 2

嗜酸性粒细胞增加 嗜酸性粒细胞计数增加 3

嗜酸性粒细胞增加 嗜酸性粒细胞计数增加 3

嗜酸性粒细胞增多 嗜酸性粒细胞增多 3

我用来满足我的要求的代码

您能否让我知道是否有任何简单的方法可以使用任何其他功能对这些术语进行聚类?

0 投票
0 回答
305 浏览

r - 标准化 R 中的字符串

我有一个包含一些品牌名称的数据集。通过预处理(例如小写、删除停用词、修剪空格、字符串拆分等),我从一开始的 320 个不同的案例增加到 114 个。但是,仍有一些改进的空间。

如您所见,案例 3 与案例 4 类似,案例 1 与案例 5 类似。案例 6 没有等价物。有没有办法通过替换相似的字符串来连续标准化字符串?

一个想法是使用tidystringdist/stringdist包。在这里,我可以计算字符串的距离度量(例如 Levenstein 距离)。从这里我可以统一那些具有低距离措施的人(例如 osa < 3)。

例如,根据结果,我可以去掉“chec24”和“check42”,将其替换为“check24”。所以我可以进一步减少名字的数量。目标不是获得“真实”的姓名匹配(因为我没有真实姓名的列表)。它更多是关于替换非常相似的名称以减少不同名称的总数。但是,我不知道该由谁来做……也许是一个 while 循环。

这是类似名称的小数据:

0 投票
1 回答
306 浏览

r - R在向量中查找相互匹配的元素

我有一个地址列表。这些地址是由不同的用户输入的,因此写入相同地址的方式有很多差异。例如,

上述向量有 6 个地址。而且几乎所有的都是一样的。我正在尝试找到这些地址之间的匹配项,以便我可以将它们组合在一起并重新编码。

我试过使用agrep和 stringdist 包。使用 agrep 我不确定我是否应该将每个地址作为一个模式并将其与其余地址匹配。从 stringdist 包我做了以下事情:

以上给了我错误:

不确定我是否应该从字符向量中删除这些元素或将它们转换为其他格式。

用 agrep 我试过:

字符向量的长度约为 25000,它会继续运行并使机器停止运行。

如何有效地为每个地址找到最接近的匹配项。

0 投票
0 回答
125 浏览

r - 距离/模糊匹配 2 列与 R 中的另外 2 列

在我的简化示例中,我有一个包含四个不同列的数据框。我希望能够将 main_name 和 main_dob 与 secondary_name 和 secondary_dob 一起匹配。行的实际顺序无关紧要,所以如果第 3 行和第 4 行有匹配,我希望它们返回相同的值并显示那里有匹配。

以下是我的示例数据。

我希望输出显示 Arthur Lee 最接近的匹配项是 David Lee,以及两者之间的距离,以及他们生日之间的距离。接下来,我想看看 Robert Frost 的匹配是否存在,但距离有点偏,因为 second_name 包含他的中间名,但生日帮助我验证它是同一个人。接下来,没有 Sarah Doe,所以我会显示最近距离匹配和最近生日距离。最后,我会让 Elizabeth Smith 与 Elizabeth Smith 匹配,即使它们位于两个数据中的不同行上。

我正在考虑使用 jaro-winkler (jw) 包进行距离,但我愿意接受任何想法和帮助。