如何使用模糊容差加密/解密?
我希望能够在InkCanvas上使用Stroke作为加密的关键,但是当再次解密时,用户不必绘制完全相同的符号,只是类似.这可以在.NET C#中完成吗?
---更新(9 sep)---
我理想的是一种加密算法,它可以接受基于某些基本密钥和定义允许差异的函数的特定密钥范围内的任何密钥.
我在本地进行所有加密/解密,所以我不需要安全地通过电线发送任何东西.我不想存储用于加密的密钥,所以我没有什么可比的.我可以想出一些方法为每个相似的笔画生成相同的键,但如果想要接受任何类型的符号(不仅仅是字母),这并不容易.另一种选择是,如果加密密钥可以通过设计以某种方式接受类似的密钥,我不知道它是否可能......?
我有一个带有自由文本字段的数据库,我想将其用于filteradata.frame或tibble。我也许可以通过大量工作创建一个数据中当前出现的搜索词的所有可能拼写错误的列表(请参阅下面一个术语的所有拼写示例),然后我可以像下面的示例代码一样stringr::str_detect使用。然而,当将来可能出现更多拼写错误时,这并不安全。如果我愿意接受一些限制/做出一些假设(例如,拼写错误之间的编辑距离可能有多远,或者就其他一些差异而言,人们不会使用完全不同的术语等),是否有一些做模糊版本的简单解决方案str_detect?
据我所知,明显的软件包似乎stringdist没有直接执行此操作的功能。我想我可以编写自己的函数,将类似stringdist::afind或的东西应用于向量的每个元素,并后处理结果以最终返回或布尔stringdist::amatch值的向量,但我想知道这个函数是否不存在于某处(并且更有效地实现)比我会做的)。TRUEFALSE
这是一个示例,说明了我如何str_detect可能会错过我想要的一行:
library(tidyverse)
search_terms = c("preclinical", "Preclincal", "Preclincial", "Preclinial",
"Precllinical", "Preclilnical", "Preclinica", "Preclnical",
"Peclinical", "Prclinical", "Peeclinical", "Pre clinical",
"Precclinical", "Preclicnial", "Precliical", "Precliinical",
"Preclinal", "Preclincail", "Preclinicgal", "Priclinical")
example_data = tibble(project=c("A111", "A123", "B112", "A224", "C149"),
disease_phase=c("Diabetes, Preclinical", "Lipid lowering, Perlcinical",
"Asthma, Phase I", "Phase II; Hypertension", "Phase 3"),
startdate = c("01DEC2018", "17-OKT-2017", "11/15/2019", "1. Dezember 2004", "2005-11-30"))
# Finds only project …Run Code Online (Sandbox Code Playgroud) r string-matching fuzzy-comparison levenshtein-distance stringr
我正在使用MinHash算法在图像之间找到类似的图像.我遇到过这篇文章,How can I recognize slightly modified images?它指出了MinHash算法.
我在这篇博文中使用了C#实现Set Similarity and Min Hash.
但在尝试使用实现时,我遇到了两个问题.
universe值设置为什么值?HashSet,它只包含不同的字节值; 从而比较1~256的值.universeMinHash的这个是什么?
我该怎么做才能改进C#MinHash实现?
由于HashSet<byte>包含的值高达256,因此相似度值总是为1.
以下是使用C#MinHash实现的源代码Set Similarity and Min Hash:
class Program
{
static void Main(string[] args)
{
var imageSet1 = GetImageByte(@".\Images\01.JPG");
var imageSet2 = GetImageByte(@".\Images\02.TIF");
//var app = new MinHash(256);
var app = new MinHash(Math.Min(imageSet1.Count, imageSet2.Count));
double imageSimilarity = app.Similarity(imageSet1, imageSet2);
Console.WriteLine("similarity = {0}", imageSimilarity);
}
private static HashSet<byte> GetImageByte(string …Run Code Online (Sandbox Code Playgroud) 尝试编写一个代码来比较多个文件并返回多个选项之间的最高模糊比。
问题是我收到一条错误消息:
警告:根:应用处理器将输入查询减少为空字符串,所有比较得分为 0。[查询:'/'] 警告:根:应用处理器将输入查询减少为空字符串,所有比较得分为 0。[查询: '.']
而且导出的文件基本上是空白的。知道为什么会发生这种情况吗?
from fuzzywuzzy import fuzz, process
import csv
def readfile( filen ):
with open(filen,'r') as f:
contents = f.readlines()
return contents
def write_fuzzy( fileo, file1, file2 ):
matches=[]
for item1 in file1:
matches.append(process.extract( str(item1), file2, limit=2 )[0][0])
with open( fileo, 'w' ) as f:
w = csv.writer( f, delimiter = ',' )
w.writerows( matches )
filenames = ['Documents/test_CSV_1.csv',\
'Documents/test_CSV_2.csv']
file_contents = []
for filen in filenames:
file_contents.append( readfile( filen ) )
write_fuzzy( 'out.csv', …Run Code Online (Sandbox Code Playgroud) 我一直在使用Double Metaphone和Caverphone2进行字符串比较,它们在名称,地址等方面做得很好(Caverphone2对我来说效果最好).但是,当您获得数字值时,例如电话号码,IP地址,信用卡号等,它们会产生太多的误报.
所以我看了Luhn和Verhoeff算法,它们基本上描述了我想要的东西,但并不完全.他们似乎擅长验证,但似乎并不是为模糊匹配而构建的.有什么行为像Luhn和Verhoeff,它可以检测到涉及两个相邻数字的单位错误和换位错误,用于编码和比较目的,类似于模糊字符串算法?
我想对一个数字进行编码,然后将其与100,000个其他数字进行比较,以找到完全相同的匹配.因此像7041234这样的东西会与7041324匹配作为可能的转录错误,但像4213704这样的东西不会.
我有两个歌曲标题列表,每个都是纯文本文件,这是许可的歌词文件的文件名 - 我想检查较短的列表标题(针)是否在更长的列表(haystack).脚本/应用程序应返回针头中不在大海捞针中的标题列表.
我更喜欢使用Python或shell脚本(BASH),或者只使用可以处理所需模糊性的可视差异程序.
主要问题是标题需要模糊匹配以解决数据输入错误以及可能还有字排序.
干草堆样本(注意一些重复和接近重复的行,突出显示匹配):
Yearn
Yesterday, Today And Forever
Yesterday, Today, Forever
You
You Alone
You Are Here (The Same Power)
You Are Holy
You Are Holy (Prince Of Peace)
You Are Mighty
You Are Mine
You Are My All In All
You Are My Hiding Place
You Are My King (Amazing Love)
You Are Righteous (Hope)
You Are So Faithful
You Are So Good to Me
You Are Worthy Of My Praise
You Have Been Good
You …Run Code Online (Sandbox Code Playgroud) 我正在尝试在两个数据集之间的R中进行模糊逻辑联接:
config我想使用该name列在两个数据集之间进行联接。但是,该name列在数据集中可能包含其他字符或前导字符,或者在较大的单词内部包含一个单词。因此,例如,如果我们查看这两个数据集,我希望名称OPAL加入OPALAS,而SAUSALITO Y加入SAUSALITO。
Dataset1:
Name Config
ALTO D BB
CONTRA ST
EIGHT A DD
OPALAS BB
SAUSALITO Y AA
SOLANO J ST
Dataset2:
Name Age Rank
ALTO D 50 2
ALTO D 20 6
CONTRA 10 10
CONTRA 15 15
EIGHTH 18 21
OPAL 19 4
SAUSALITO 2 12
SOLANO 34 43
Run Code Online (Sandbox Code Playgroud)
数据集2汇总代码
Data2a <- summaryBy(Age ~ Name,FUN=c(mean), data=Data2,na.rm=TRUE)
Data2b <- summaryBy(Rank ~ Name,FUN=c(sum), data=Data2,na.rm=TRUE)
Data2 <- data.frame(Data2a$Name, Data2a$Age.mean, Data2b$Rank.sum)
Desired Outcome:
Name …Run Code Online (Sandbox Code Playgroud) 在我正在创建的应用程序中,我想添加将新闻故事组合在一起的功能.我想将来自不同来源的同一主题的新闻报道分组到同一组中.例如,来自CNN和MSNBC的关于XYZ的文章将在同一组中.我猜它是某种模糊的逻辑比较.从技术角度来看,我该如何做到这一点?我有什么选择?我们还没有启动应用程序,因此我们不限制我们可以使用的技术.
在此先感谢您的帮助!
我们假设我们有一个人员表(姓名,姓名,地址,SSN等).
我们想要找到与指定人A"非常相似"的所有行.我想实现某种模糊逻辑比较A和表People中的所有行.将有几个模糊推理规则分别在几个列上工作(例如3个名称的模糊规则,2个姓氏规则,5个地址规则)
问题是以下哪两种方法会更好,为什么?
将所有模糊规则实现为存储过程,并使用一个重的SELECT语句返回与A"非常相似"的所有行.此方法可能包括使用soundex,sim metric等.
实现一个或多个更简单的SELECT语句,返回不太准确的结果,"与A非常相似",然后将A与所有返回的行(数据库外部)进行模糊比较,以获得"非常相似"的行.因此,模糊的比较将在我最喜欢的编程语言中实现.
表人们应该有多达500k行,我想每天制作大约500-1000个这样的查询.我使用MySQL(但这还有待考虑).
首先,如果我的格式不好,我很抱歉,这是我第一次发帖,(也是编程和 R 的新手)
我试图在字符串变量上将两个数据框合并在一起。我正在合并大学名称,这可能不完全匹配,所以我希望使用模糊或近似字符串匹配函数进行合并。当我找到 'fuzzyjoin' 包时,我很高兴。
from cranR: stringdist_join: 根据列的模糊字符串匹配连接两个表
stringdist_join(x, y, by = NULL, max_dist = 2, method = c("osa", "lv",
"dl", "hamming", "lcs", "qgram", "cosine", "jaccard", "jw","soundex"), mode = "inner", ignore_case = FALSE, distance_col = NULL, ...)
Run Code Online (Sandbox Code Playgroud)
我的代码:
stringdist_left_join(new, institutions, by = c("tm_9_undergradu" = "Institution.Name"))
Run Code Online (Sandbox Code Playgroud)
错误:
Error in dists[include] <- stringdist::stringdist(v1[include], v2[include], :
NAs are not allowed in subscripted assignments
Run Code Online (Sandbox Code Playgroud)
我知道这些列中有一些 NA,但我不确定如何删除它们,因为我也需要它们。我知道其他连接和合并功能 NA 将被忽略。有没有人知道如何解决此包的此错误或以另一种方式对字符串进行近似连接。感谢您的帮助。
fuzzy-comparison ×10
r ×3
c# ×2
fuzzy-logic ×2
.net ×1
algorithm ×1
comparison ×1
database ×1
dplyr ×1
encryption ×1
fuzzyjoin ×1
fuzzywuzzy ×1
join ×1
list ×1
merge ×1
minhash ×1
mysql ×1
python ×1
python-3.x ×1
recordset ×1
select ×1
sql ×1
stringr ×1