精华内容
下载资源
问答
  • 模糊匹配

    2017-05-24 11:34:38
    1、字符串数组模糊匹配  class FuzzyMatching  {  public string Name;  //获取next  public int[] GetKmpNext(string pattern)  {  int[] next = new int[pattern.Lengt

    1、字符串数组模糊匹配

        class FuzzyMatching
        {
            public string Name;
            //获取next  
            public int[] GetKmpNext(string pattern)
            {
                int[] next = new int[pattern.Length];
                next[0] = -1;
                if (pattern.Length < 2) return next;
                next[1] = 0;
                int i = 2, j = 0;
                while (i < pattern.Length)
                {
                    if (pattern[i - 1] == pattern[j])
                    {
                        next[i++] = ++j;
                    }
                    else
                    {
                        j = next[j];
                        if (j == -1)
                        {
                            next[i++] = ++j;
                        }
                    }
                }
                return next;
            }
            /// <summary>  
            /// 查询关键字方法  
            /// </summary>  
            /// <param name="source">原字符串</param>  
            /// <param name="keywords">关键字列表用|分开</param>  
            /// <returns>如果存在关键字返回true,反之返回false。</returns>  
            public bool SearchKeywords(string source, string[] keywords)
            {
                int wordCount = keywords.Length;
                int[][] nexts = new int[wordCount][];
                int i = 0;
                for (i = 0; i < wordCount; i++)
                {
                    nexts[i] = GetKmpNext(keywords[i]);
                }
                i = 0;
                int[] j = new int[nexts.Length];
                while (i < source.Length)
                {
                    for (int k = 0; k < wordCount; k++)
                    {
                        if (source[i] == keywords[k][j[k]])
                        {
                            j[k]++;
                        }
                        else
                        {
                            j[k] = nexts[k][j[k]];
                            if (j[k] == -1)
                            {
                                j[k]++;
                            }
                        }
                        if (j[k] >= keywords[k].Length)
                        {
                            return true;
                        }
                    }
                    i++;
                }
                return false;
            }  
        }

    2、字符串模糊匹配

                        int k = 0;
                        bool ret = false;
                        while(k < typeNd.Count)
                        {
                            
                            Regex r = new Regex(typeNd[k].TypeName);//构造表达式
                            Match m = r.Match(uC_Graph.Layers[j].Name);//匹配源文本


                            if (m.Success || uC_Graph.Layers[j].TypeId == typeNd[k++].TypeId)  //匹配成功
                            {
                                ret = true;
                                break;
                            }
                        }

    展开全文
  • 拼音模糊匹配

    2018-10-30 17:42:37
    拼音模糊匹配js
  • 01 之前发过两篇关于模糊匹配工具的说明,《解决文字模糊匹配的小工具》和《快速模糊匹配——速度提升几千倍!!!》,解决以下这类场景:北京通州匹配北通、北京市通州区、北京通州区或北京市通州 只要两组数据实际...

    01

           之前发过两篇关于模糊匹配工具的说明,《解决文字模糊匹配的小工具》和《快速模糊匹配——速度提升几千倍!!!》,解决以下这类场景:

    北京通州   匹配   北通、北京市通州区、北京通州区或北京市通州

           只要两组数据实际上存在匹配的可能性(即表1里某个名称A在表2中确实有另一个类似的名称存在),都能匹配出来。举例展示这个工具的效果:

    例子1:

    2k*2k行,总耗时3秒(快的低至1秒)。作为对比,在Power Query里使用合并的方式进行模糊匹配2k*2k行,时间预计5分钟左右

    cbeeb0af747e402263ad31d78d1c6857.png

    例子2:

    31万*100万行,总耗时3401秒(<1个小时,测试电脑配置i5 4460, 8G内存)。作为对比,使用以C++为底层加速的python库,rapidfuzz,2天2夜还没计算完。

    9533ec1334d3bbe2d4552b75f7062fa1.png

    02

           领取工具的读者不少,但给出反馈的寥寥无几。本以为业务、运营和财务工作人士的需求比较强烈,而实际主动找我反馈问题则是在读研究生居多。本次升级,主要包括修改了以下几个部分。

    参数录入方式

           部分用户会因为初始参数输错而没运行成功。原先版本的6个初始化参数要求每录入1个参数按1次回车,容易出错,而且输错了要全部从头再来。如下图所示:

    1fd44405ed0a01c1a675bb205bfbd373.png

    改版后,6个参数一次性输入,每个参数之间用中文逗号隔开。那么大家就可以先在word或记事本里把参数整理好,然后一次性复制粘贴过去。标准示例如下:

    G:\Project\匹配表1.xlsx,电视表,频道节目1,G:\Project\匹配表2.xlsxSheet1,频道节目2

    dict.txt文件不存在

           有读者反馈程序运行后出现类似这样的提示,即缺少了dict.txt文件。

    No such file or directory: 'c:xxxx\jieba\dict.txt’

    于是本次升级中直接加入了这个文件。如下图所示。为确保程序正常运行,勿删该文件。

    0b295cdd264e2ecf9f8771aa9a5a363e.png

    03

           升级版的工具可以在本公众号后台回复【模糊匹配】四个字获取。也欢迎大家在后台留言反馈问题和分享使用心得。

    展开全文
  • 对此,我们可以通过Power Query中的合并查询,或者在Power Pivot中建立关系而轻易实现,但是前提是匹配列的数据是能对应得上的,如果是模糊匹配,那用以上的方法便会匹配不上。那么在Power Query中怎么进行模糊匹配...
    01b2bf4762f242025594842503efe74f.gif

    在数据分析中,我们经常会需要数据匹配,比如将事实表与维度表进行匹配来获取维度表中的信息。对此,我们可以通过Power Query中的合并查询,或者在Power Pivot中建立关系而轻易实现,但是前提是匹配列的数据是能对应得上的,如果是模糊匹配,那用以上的方法便会匹配不上。

    那么在Power Query中怎么进行模糊匹配呢?

    5aad061ccd47aae0c71876d5be3b04e6.png

    比如,我们需要给下列左图中的产品匹配上价格:

    3925cb5d2acf20249401bc6b8bbf3247.png

    在Power Query中并没有菜单操作可以实现模糊匹配,需要自定义函数来解决此问题,那我们来看下比较简单的能实现此功能的自定义函数是怎样的吧:

    d70f65749d3c224c4ed9bf342d79226c.png

    首先,我们先把两张表导进同一个查询,分别命名为“产品”和“颜色价格”:

    7b50fa433183f222a966353f48dd39f7.png

    然后自定义模糊匹配函数:

    Fx = (x) => Table.SelectRows(颜色价格, each Text.Contains(x,[颜色])){0}[价格]

    其中Fx为函数的名称;

    (x)为参数名称,即函数作用于的对象;

    Table.SelectRows(颜色价格, each Text.Contains(x,[颜色]))

    表示筛选颜色价格表中,[颜色]字段被x包含的行,即此函数得到的是一张经过筛选的表,后面加上{0}[价格]表示取这张表第一行[价格]列的数据。

    函数定义好后就可以调用这个函数了:

    价格 = Table.AddColumn(产品,"价格
    展开全文
  • excel模糊匹配

    2017-10-13 11:41:48
    excel模糊匹配方法,可用于加强对excell的学习,可以测出两个文本的相似度
  • 之前在《使用Power Query进行模糊匹配》一文中我们讨论了如何在Power Query中进行模糊匹配,今天我们来讨论下在Power Pivot中的模糊匹配。还是之前的案例,图1为产品表,图2为颜色价格匹配表,需要根据颜色将颜色...

    4e52cf4a6f1839b2514a57b739bfdfa3.png

    9a01545be5d4271259efdf69160ce2ad.gif


    之前在《使用Power Query进行模糊匹配》一文中我们讨论了如何在Power Query中进行模糊匹配,今天我们来讨论下在Power Pivot中的模糊匹配。

    f7216a33784e5e55336cb4bad82dd7a2.png


    还是之前的案例,图1为产品表,图2为颜色价格匹配表,需要根据颜色将颜色价格表中的价格匹配到产品表中,因为产品表中没有能与匹配表中的【颜色】字段直接匹配的列,所以我们需要用【产品】字段中的颜色进行模糊匹配。
    我们先将两张表加载进Power BI中,分别命名为“产品”和“颜色价格”。

    7a7844cab50ed13bc745aadead2260fc.png


    我们的思路是先在产品表中新建列【颜色】,获取到产品表中准确的颜色,然后再根据该字段去和颜色价格表中的颜色做关联,进而获取价格信息。
    那么,怎么生成产品表中的【颜色】字段呢?有大神写出了如下公式:

    颜色 = 
    FIRSTNONBLANK(FILTER(VALUES('颜色价格'[颜色]),SEARCH('颜色价格'[颜色],'产品'[产品],1,0)),1)

    现在我们来理解下这个公式。
    其中Filter为筛选函数,筛选VALUES('颜色价格'[颜色])这张表。而VALUES('颜色价格'[颜色])返回的是颜色价格表中非重复的【颜色】列表,即Filter函数筛选的是下表,我们将其命名为颜色表。

    56c04525e6f85ab0b6a0075899a64947.png


    那么Filter对颜色表的筛选条件是什么呢?
    筛选条件是:

    SEARCH('颜色价格'[颜色],'产品'[产品],1,0)


    Search的用法如下:

    SEARCH(<find_text>,<within_text>, [start_num])

    9a1c01a13716e2c285020557c5ce8073.png

    32b740b8a79b889590d70fd5c277b41e.png


    以产品表中的第一行“ASD23809宝石红S码“来举例,公式即为:

    FILTER(‘颜色’, SEARCH(‘颜色’[颜色], “ASD23809宝石红S码”,1,0))


    即颜色表中的每一行都会遍历一遍,返回当前行的颜色在“ASD23809宝石红S码”这个字符串中的位置。
    当返回的位置是0以上的数字时,代表“ASD23809宝石红S码”中含有这个颜色,该颜色就会被筛选出来;当返回的位置为0时,代表“ASD23809宝石红S码”中不包含这个颜色,便不会被筛选出来。
    同理,产品表中的每二行、第三行…都会走一遍这个流程。
    哎?有人可能会问,为什么不为0时就会被筛选出来,而为0时就不会被筛选出来呢?

    关于这个问题,大家可以做个小测试,filter(表,0)返回一张空表,而filter(表,任意非零数字)则会返回整张表。所以,当上文提到的遍历‘颜色’表中的每一个颜色时,若search函数返回的是非0值,则这个颜色就会被筛选出来,否则不会被筛选出来。

    外面嵌套的FIRSTNONBLANK函数返回当前上下文筛选列中的第一个不为空的值,即当”ASD23809宝石红S码“中包含两个颜色时,只取被筛选出来的第一个颜色。
    因此,用此公式我们就可以在产品表中生成如下【颜色】字段。

    41bdc3caa84740512cfc8ded5b84754d.png


    但是……当我们想用此列与颜色价格表建立关系获取价格时,却被告有循环依赖关系。

    9dce221d503a24f176c95aaffd0ec7ab.png


    其实这也比较好理解,毕竟我们是通过‘颜色价格’【颜色】得到的‘产品’【颜色】,现在再用这两列建关系,产生循环依赖也就不奇怪。那怎么办呢?

    要解决这一问题,可以在查询编辑器中引用‘颜色价格’表,生成一个与之相同的辅助表,在生成‘产品’【颜色】字段时,利用这个辅助表生成,而建立关系时则选择‘颜色价格’这张表。


    好啦,今天的分享就到这儿,有什么疑问或者建议文下留言呦~

    500142a6119982b45be30497b5f67aa9.png

    * PowerPivot工坊原创文章,转载请注明出处!


    延伸阅读:使用Power Query进行模糊匹配

    组合产品销售模型分析(下篇)

    组合产品销售模型分析(上篇)——新维度表的构建

    Power BI 也能做这样的组合图?

    在Power BI报表中创建超链接

    柱形图根据数值自动改变颜色



    如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。

    29072e10bc8bb3a74c01537bb6900136.png


    长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~

    1bdead7f11086f31b1d0a960bd7f7a7d.gif
    展开全文
  • 前端的匹配方式有很多这里简单提供模糊匹配方式:使用 RegExp 函数 正则表达式来进行匹配 正则表达式 var list = ['nai','43q','5xn'] var keyWord = 'n' var arr = [] var reg = new RegExp(keyWord) for(var i ...
  • Mysql 模糊匹配查询MySQL提供标准的SQL模式匹配,以及一种基于像Unix实用程序,如:vi、grep和sed的扩展正则表达式模式匹配的格式SQL 模式SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符...
  • 对此,我们可以通过Power Query中的合并查询,或者在Power Pivot中建立关系而轻易实现,但是前提是匹配列的数据是能对应得上的,如果是模糊匹配,那用以上的方法便会匹配不上。那么在Power Query中怎么进行模糊匹配...
  • 在计算机科学中,字符串模糊匹配(fuzzy string matching)是一种近似地(而不是精确地)查找与模式匹配的字符串的技术。换句话说,字符串模糊匹配是一种搜索,即使用户拼错单词或只输入部分单词进行搜索,也能够找到...
  • ETL模糊匹配

    2014-09-30 09:35:14
    从以上模糊匹配的结果看,Jaro Winkler和Pair letters Similarity的结果比较合适, 如果在实际工作中,大数据量的模糊匹配应该如何从中选择合适的算法?
  • Mysql 模糊匹配查询MySQL提供标准的SQL模式匹配,以及一种基于像Unix实用程序,如:vi、grep和sed的扩展正则表达式模式匹配的格式SQL 模式SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符...
  • Mysql 模糊匹配查询MySQL提供标准的SQL模式匹配,以及一种基于像Unix实用程序,如:vi、grep和sed的扩展正则表达式模式匹配的格式SQL 模式SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符...
  • MySQL 关键字模糊匹配,并按照匹配度排序。方式一、按照关键字搜索,然后根据关键字所占比例排序SELECTdrug_name,pinyinFROMtbl_drugWHEREpinyin LIKE '%AM%'ORDER BYLENGTH(pinyin);效果如下 方式二、将关键字开头...
  • Python实现模糊匹配

    2018-10-17 22:41:45
    Python实现字符串的模糊匹配,‘?’代表一个字符, ‘*’代表任意多个字符。给一段明确字符比如avdjnd 以及模糊字符比如*dj?dji?ejj,判断二者是否匹配。若能匹配输出”Yes”, 否则输出“No”
  • 终端模糊匹配

    2020-11-02 17:17:52
    终端模糊匹配 find -name * lo *
  • 我正在尝试模糊匹配两个csv文件,每个文件包含一列相似但不相同的名称.我的代码到目前为止如下:import pandas as pdfrom pandas import DataFramefrom fuzzywuzzy import processimport csvsave_file = open('fuzzy_...
  • MySQL 关键字模糊匹配,并按照匹配度排序。方式一、按照关键字搜索,然后根据关键字所占比例排序SELECTdrug_name,pinyinFROMtbl_drugWHEREpinyin LIKE '%AM%'ORDER BYLENGTH(pinyin);效果如下 方式二、将关键字开头...
  • 模糊匹配搜索

    2013-04-15 19:08:18
    输入框输入内容模糊匹配搜索
  • 小编典典我最终没有使用模糊匹配来解决我的问题,而是使用了ngram。/*** Map - Create a new index with property mapping*/public function map(){$params['index'] = self::INDEX;$params['body']['settings'] = ...
  • 这篇文章主要介绍了PHP实现多字段模糊匹配查询的方法,结合实例形式分析了PHP进行模糊匹配查询的相关模型操作与sql语句,需要的朋友可以参考下引言:有时候查询要匹配多个字段。比如查询地址,地址是由多个字段组成的...
  • 我最终没有使用模糊匹配来解决我的问题,而是使用了ngram的./*** Map - Create a new index with property mapping*/public function map(){$params['index'] = self::INDEX;$params['body']['settings'] = array('...
  • python 模糊匹配

    千次阅读 2017-09-25 16:21:55
    python 模糊匹配
  • 各位打杂小弟在初次使用BI的时候对于一些模糊匹配的应用是比较依赖的,因为我们在Excel当中也是经常用到模糊匹配一类的东西(就那个包含匹配的那个),特别是在处理URL的时候对这个特别依赖,如果要用合并查询进行...
  • 我试图模糊匹配两个csv文件,每个文件包含一列名称,它们相似但不相同。到目前为止,我的代码如下:import pandas as pdfrom pandas import DataFramefrom fuzzywuzzy import processimport csvsave_file = open('...
  • js实现模糊匹配功能

    2020-10-20 10:08:14
    主要为大家详细介绍了js实现模糊匹配功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,555
精华内容 4,222
热门标签
关键字:

模糊匹配