我需要在PostgreSQL中将两个表合并在公共变量"公司名称"上.不幸的是,许多公司名称并不完全匹配(即一个表中的MICROSOFT,另一个表中的MICROSFT).我尝试从两个列中删除常用词,例如"corporation"或"inc"或"ltd",以便尝试在两个表中标准化名称,但我无法考虑其他策略.有任何想法吗?
谢谢.
另外,如果有必要,我可以在R中这样做.
使用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) 我正在寻找一个可以存储和管理模糊(即不确定)日期/时间的.NET库,也就是说,时间表达式不遵循通常的日,月,年,小时,分钟,秒的精确模式.我需要能够处理表达的日期/时间值的东西,例如:
该库可能实现FuzzyDateTime类型或类似的东西,并允许多种方式从文本和/或常规DateTime值构造它的实例.还需要比较和排序功能.
所以,我的问题是:你知道任何适合这种描述的产品吗?我很高兴考虑各种产品,即商业,开源,免费软件等.
有任何想法吗?非常感谢.
当您键入具有特定模式的3行时,您知道Excel中的功能并将列一直向下拖动Excel尝试为您继续模式.
例如
类型...
Excel将继续使用:
对于某些其他模式(例如日期等)也是如此.
我正在尝试完成类似的事情,但我也想处理更多例外情况,例如:
现在根据这些条目我想说的模式是:
继续[动态]与其他颜色完全是另一笔交易,我现在并不在乎.我最感兴趣的是检测模式中的[DYNAMIC]部分.
我需要从大量的池条目中检测到这一点.假设您有这种模式的10.000个字符串,并且您希望根据相似性对这些字符串进行分组,并检测文本的哪个部分不断变化([动态]).
文档分类在这种情况下很有用,但我不知道从哪里开始.
更新:
我忘了提到它也可能有多个[DYNAMIC]模式.
如:
我认为这不重要,但我打算在.NET中实现这一点,但任何关于使用算法的提示都会非常有用.
每次我向 Django 项目添加一些字符串时,我都会运行“django-admin.py makemessages -all”来为所有语言环境生成 .PO 文件。
问题是即使我只添加了 5 个新闻字符串,makemessages 命令也会将 .PO 文件中的 50 个字符串标记为模糊,这为我们的语言环境维护人员带来了很多额外的工作。
这也使得整个 i18n 在他们手动修改那些模糊字符串之前无法使用。
我有一个带有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)
但是显然,这种方法目前不适用于我。任何帮助表示赞赏。不必是熊猫,这只是我相对熟悉的环境。
我希望我的问题字眼清楚,而且真的很感谢任何意见,
我正在尝试在 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) 我有两个单独收集的同一组学生名单.有很多印刷错误,我一直在使用模糊匹配来链接这两个列表.我和99 +%有agrep
相似之处,但我坚持以下基本问题:如何匹配(例如)名字"Adrian Bruce"和"Bruce Adrian"?Levenshtein编辑距离对于这种特定情况并不好,因为它计算了替换次数.
这一定是一个非常常见的问题,但我找不到任何标准的R包或例程来解决它.我猜我错过了一些明显的东西...... ???
我们一直在使用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个吗?