标签: fuzzy

使用Java进行模糊日期解析

是否有任何Java库允许您解释"昨天","下周一"等日期,......

java fuzzy date-parsing

8
推荐指数
1
解决办法
2319
查看次数

匹配模糊字符串

我需要在PostgreSQL中将两个表合并在公共变量"公司名称"上.不幸的是,许多公司名称并不完全匹配(即一个表中的MICROSOFT,另一个表中的MICROSFT).我尝试从两个列中删除常用词,例如"corporation"或"inc"或"ltd",以便尝试在两个表中标准化名称,但我无法考虑其他策略.有任何想法吗?

谢谢.

另外,如果有必要,我可以在R中这样做.

database string postgresql fuzzy matching

8
推荐指数
1
解决办法
1032
查看次数

通过模糊匹配名称创建唯一ID(通过使用R的agrep)

使用R,我尝试在按年份和城市构建的数据集中匹配人名.由于一些拼写错误,无法进行精确匹配,因此我尝试使用agrep()来模糊匹配名称.

数据集的样本块结构如下:

df <- data.frame(matrix( c("1200013","1200013","1200013","1200013","1200013","1200013","1200013","1200013",                             "1996","1996","1996","1996","2000","2000","2004","2004","AGUSTINHO FORTUNATO FILHO","ANTONIO PEREIRA NETO","FERNANDO JOSE DA COSTA","PAULO CEZAR FERREIRA DE ARAUJO","PAULO CESAR FERREIRA DE ARAUJO","SEBASTIAO BOCALOM RODRIGUES","JOAO DE ALMEIDA","PAULO CESAR FERREIRA DE ARAUJO"), ncol=3,dimnames=list(seq(1:8),c("citycode","year","candidate")) ))
Run Code Online (Sandbox Code Playgroud)

整洁的版本:

  citycode year                      candidate
1  1200013 1996      AGUSTINHO FORTUNATO FILHO
2  1200013 1996           ANTONIO PEREIRA NETO
3  1200013 1996         FERNANDO JOSE DA COSTA
4  1200013 1996 PAULO CEZAR FERREIRA DE ARAUJO
5  1200013 2000 PAULO CESAR FERREIRA DE ARAUJO
6  1200013 2000    SEBASTIAO BOCALOM RODRIGUES
7  1200013 2004 …
Run Code Online (Sandbox Code Playgroud)

r fuzzy string-matching agrep

8
推荐指数
1
解决办法
1788
查看次数

用于.NET的模糊日期/时间管理库

我正在寻找一个可以存储和管理模糊(即不确定)日期/时间的.NET库,也就是说,时间表达式不遵循通常的日,月,年,小时,分钟,秒的精确模式.我需要能够处理表达的日期/时间值的东西,例如:

  • 1985年第二季度
  • 20世纪30年代初
  • 十七世纪的第二个三分之一

该库可能实现FuzzyDateTime类型或类似的东西,并允许多种方式从文本和/或常规DateTime值构造它的实例.还需要比较和排序功能.

所以,我的问题是:你知道任何适合这种描述的产品吗?我很高兴考虑各种产品,即商业,开源,免费软件等.

有任何想法吗?非常感谢.

.net time date fuzzy

7
推荐指数
2
解决办法
690
查看次数

如何发现和分析像Excel这样的类似模式呢?

当您键入具有特定模式的3行时,您知道Excel中的功能并将列一直向下拖动Excel尝试为您继续模式.

例如

类型...

  • 试验-1
  • 试验-2
  • 测试-3-

Excel将继续使用:

  • 测试-4-
  • 测试-5-
  • 测试-N ...

对于某些其他模式(例如日期等)也是如此.

我正在尝试完成类似的事情,但我也想处理更多例外情况,例如:

  • 测试蓝somethingelse
  • 测试 - 黄 - somethingelse
  • 测试 - 红 - somethingelse

现在根据这些条目我想说的模式是:

  • 测试 - [动态] -something

继续[动态]与其他颜色完全是另一笔交易,我现在并不在乎.我最感兴趣的是检测模式中的[DYNAMIC]部分.

我需要从大量的池条目中检测到这一点.假设您有这种模式的10.000个字符串,并且您希望根据相似性对这些字符串进行分组,并检测文本的哪个部分不断变化([动态]).

文档分类在这种情况下很有用,但我不知道从哪里开始.

更新:

我忘了提到它也可能有多个[DYNAMIC]模式.

如:

  • test_ [DYNAMIC] 12 [DYNAMIC2]

我认为这不重要,但我打算在.NET中实现这一点,但任何关于使用算法的提示都会非常有用.

algorithm design-patterns fuzzy similarity

6
推荐指数
1
解决办法
541
查看次数

Django 的 makemessages 创建了很多模糊条目

每次我向 Django 项目添加一些字符串时,我都会运行“django-admin.py makemessages -all”来为所有语言环境生成 .PO 文件。

问题是即使我只添加了 5 个新闻字符串,makemessages 命令也会将 .PO 文件中的 50 个字符串标记为模糊,这为我们的语言环境维护人员带来了很多额外的工作。

这也使得整个 i18n 在他们手动修改那些模糊字符串之前无法使用。

django locale fuzzy internationalization

6
推荐指数
1
解决办法
4851
查看次数

Python模糊字符串匹配作为关联样式表/矩阵

我有一个带有x个字符串名称及其相关ID的文件。本质上是两列数据。

我想要的是一个关联样式表,其格式为x乘x(将有问题的数据同时作为x轴和y轴),但是我希望使用Fuzzywuzzy库的函数fuzz.ratio(x ,y)作为输出,使用字符串名称作为输入。本质上是针对每个条目运行每个条目。

这就是我的想法。只是为了表明我的意图:

import pandas as pd
from fuzzywuzzy import fuzz

df = pd.read_csv('random_data_file.csv')

df = df[['ID','String']]
df['String_Dup'] = df['String'] #creating duplicate of data in question
df = df.set_index('ID')

df = df.groupby('ID')[['String','String_Dup']].apply(fuzz.ratio())
Run Code Online (Sandbox Code Playgroud)

但是显然,这种方法目前不适用于我。任何帮助表示赞赏。不必是熊猫,这只是我相对熟悉的环境。

我希望我的问题字眼清楚,而且真的很感谢任何意见,

python fuzzy matrix pandas

6
推荐指数
1
解决办法
425
查看次数

如何限制模糊连接只返回一场比赛

我正在尝试在 R 中创建一个程序,用三位数机场代码替换城市名称或机场名称。我想要进行模糊匹配以提供更大的灵活性,因为我试图替换的城市/机场名称的数据来自许多不同的来源。我的问题是,通过模糊匹配左连接,我似乎无法找到一种方法来仅从右表(代码)返回与左表(名称)最接近的匹配。

例如:将城市奥古斯塔 (Augusta, GA) 与奥古斯塔 (Augusta, GA) 和奥古斯塔 (Augusta, ME) 进行匹配并复制数据。我不想限制最大距离,因为我仍然想允许灵活性,但我不能让我的数据重复。我想找到一种方法来进行部分字符串匹配,但只返回最接近的结果。

我尝试过使用 fuzzyjoin 包,但从我所见,没有办法限制只有一场比赛或只有最佳比赛。我知道在 pmatch 中有一个禁止重复的调用,但我找不到使 pmatch 作为连接工作的方法。

data <- stringdist_left_join(data, orig, ignore_case = TRUE)
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的代码,stringdist 是 R 中 fuzzyjoin 包的函数。数据集“data”包含城市名称、航班数量和其他乘客信息。“orig”数据集有一列城市/机场名称和机场代码

SAMPLE INPUT
**data table:**
City Name       Passenger Name    Fare Paid
Augusta, GA         Jon            $100
Dallas, TX          Jane           $200
Spokane, WA         Chris          $300

**orig table:**
City Name      Code
Augusta, GA    JCL
Dallas, TX     DAL
Denver, CO     DEN
Seattle, WA    SEA
Spokane, WA    GEG
Austin, TX     AUS
Augusta, ME …
Run Code Online (Sandbox Code Playgroud)

r fuzzy one-to-one string-matching fuzzyjoin

6
推荐指数
1
解决办法
1409
查看次数

R中"名字姓氏"/"姓氏名字"的顺序无关模糊匹配?

我有两个单独收集的同一组学生名单.有很多印刷错误,我一直在使用模糊匹配来链接这两个列表.我和99 +%有agrep相似之处,但我坚持以下基本问题:如何匹配(例如)名字"Adrian Bruce"和"Bruce Adrian"?Levenshtein编辑距离对于这种特定情况并不好,因为它计算了替换次数.

这一定是一个非常常见的问题,但我找不到任何标准的R包或例程来解决它.我猜我错过了一些明显的东西...... ???

r fuzzy pattern-matching string-matching

5
推荐指数
1
解决办法
699
查看次数

Apache Jaro Winkler实现中的潜在错误?

我们一直在使用Apache Commons文本中的Jaro Winkler模糊匹配算法实现,并且在研究代码时发现了潜在的缺陷。

似乎此实现是基于有关Jaro-Winkler的非常容易理解的Wikipedia文章:

https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance

Jaro Winkler使用公式来计算两个字符串的接近度。输出通常是0.0到1.0的两倍。Jar-Winkler的内部公式使用匹配项换位符和公共前缀的数量长度作为输入。

在研究Apache Commons Jaro Winkler实现(请参阅https://commons.apache.org/sandbox/commons-text/jacoco/org.apache.commons.text.similarity/JaroWinklerDistance.java.html)时,我们看到了此代码的前缀长度提取:

int prefix = 0;
for (int mi = 0; mi < min.length(); mi++) {
    if (first.charAt(mi) == second.charAt(mi)) {
        prefix++;
    } else {
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码看起来正确,但是以某种方式与Wikipedia文章中有关前缀长度提取的规范不匹配:

l是字符串开头的公共前缀长度,最多四个字符

根据我的理解,前缀匹配大小不得超过4。

Apache Commons Text实现确实可以提高带有长公共前缀的字符串的得分。例如:

"john.fernandez@onepointltd.com" - "john.fernandez@onepointlt.co"
Run Code Online (Sandbox Code Playgroud)

如果由Apache Commons文本实现评估,则将返回1.0,这意味着我们完全匹配。这感觉不对。

我对社区的问题是:Apache实现不应将前缀长度限制为最多4个吗?

java apache fuzzy

5
推荐指数
0
解决办法
309
查看次数