设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3573|回复: 14
打印 上一主题 下一主题

[模块/函数] 【Access小品】有个数学叫模糊---字符串相似性比对示例

[复制链接]
跳转到指定楼层
1#
发表于 2012-2-24 19:34:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  数学中有一个分支叫做模糊数学,这个名称很奇怪,原因在于数学是严谨的与模糊似乎无关。可是还就是有这么个叫做模糊数学的东西存在,萨特同志说:存在就是合理,因此模糊数学也是合理的。关于什么是模糊数学,它包含些什么内容在此不论,给同志们举个例子就都明白了。

  你可能喜欢美女,比如她是张柏芝或者范冰冰,于是你喜欢看她们的电影、演唱会。不过这里有一个问题,你怎么就能知道你看见银幕上或者演唱会上的那个人就是张柏芝或者就是范冰冰呢?你会说:“这算什么问题?我认识她们呀。”这看来确实不能成其为一个问题。不成其为一个问题,是因为你的大脑习惯了通过眼睛耳朵或者其他器官收集到的信息,做出迅速而准确的模糊判断。可是你要通过计算机来完成这个判断就困难很多,即使困难,还是有好事者研究开发出来了人脸识别系统,并在很多方面得到了应用。诸如此类的系统的一个基础就是模糊数学。

  说简单一些,模糊数学就是在统计分析的基础上人为设定一套相似率的指标系统,然后依据这个指标系统对事物进行分析判断。模糊数学你不必刻意的去学它,因为类似的这种判断你天天在进行着。你只需要知道按照生活的常识去解决问题就可以了。

  绕的圈子有点大了,其实今天想与同志们探讨的是一个极小的问题,只是这个问题略微涉及到模糊数学而已。昨天看到有版友问,各个用户独立输入的诸如单位名称之类的字段,造成重码怎么解决的问题。比如张三输入了一个“上海吊车厂”,李四输入了一个“上海市吊车总厂”,实际上是一家企业,如何能将其甄别出来呢?这个问题可以简化为两个字符串的相似性判断问题。

  要解决这个问题,首先需要建立相似率判断的标准,这个标准是人为设计的。所谓人为设计是说标准可能存在多种,标准的合理与否与实际问题相关。于是乎,我将标准这样设计:两个字符串的相似率为两个字符串共有词组长度与两字符串长度的加权平均值。

  这个标准设定后,解决此问题的核心就是找到两个字符串所共有的所有词组了。怎么去找共有词组,办法当然很多,思路一定不少。不过要简洁明快的解决也非易事,不信同志们可以试试。我在此例中用了一些小的技巧,这些小技巧在处理类似字符串处理时有很好的效果,同志们有兴趣可以参考。

  很多年前姜昆说过一个相声,大体意思是一个展览会上,主持人点名时都简称单位名称。比如鞍山钢铁厂叫鞍钢,洛阳轴承厂叫洛轴。在点到上海吊车厂和怀化运输公司时就闹笑话了,叫了半天“上吊”和“怀运”都没人答应。所以同志们要记住,当用户输入“上吊”和“怀运”的情况下,系统也是没法比对的,这个时候,处理只有一种办法,就是把用户拖到室外狠揍一顿。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖1 订阅订阅

点击这里给我发消息

2#
发表于 2012-2-25 13:31:28 | 只看该作者
谢谢实例分享!
3#
发表于 2012-2-25 14:53:34 | 只看该作者
开阔眼界了,谢谢斑竹
4#
发表于 2012-2-25 16:43:13 | 只看该作者
高难度的问题 谢谢分享了!
5#
发表于 2012-2-25 23:05:44 | 只看该作者
我在想,老汉说的这个例子,让我心里生出许多疑惑。
一。“上海吊车厂”和“上海市吊车总厂”,出现这种情况,难道没有建立类似供应商,购货单位之类的唯一值的表吗。
二。就算出现“上海吊车厂”和“上海市吊车总厂”,在统计报表时,直接搜索替换不就行了呀。
三。如果数据量庞大时,比如说,对于上海吊车总厂,其实你也不知道录入员会怎么输,他有可能输成上海吊车厂,也可能输入上海吊车公司,或者新上海吊车有限责任公司等,这时采用模糊筛选,比如上海吊车,然后按正确的厂名替换输入即可。
在这里用老汉的字符串相似性比较,似乎不如直接采用模糊筛选来得快速方便呢。
6#
发表于 2012-2-26 15:06:34 | 只看该作者
拜读!

点击这里给我发消息

7#
发表于 2012-2-26 09:28:52 | 只看该作者
本帖最后由 wang1950317 于 2012-2-26 09:29 编辑

不知在何情况下可以用到?
8#
发表于 2012-2-26 11:07:02 | 只看该作者
老汉见多识广!
9#
 楼主| 发表于 2012-2-26 17:45:40 | 只看该作者
简 发表于 2012-2-25 23:05
我在想,老汉说的这个例子,让我心里生出许多疑惑。
一。“上海吊车厂”和“上海市吊车总厂”,出现这种情 ...

简及Wang1950317二同志:

  此例不在于仅仅解决两个字符串的比对问题。而是要解决这样一个问题:某些情况下,你可能需要对来自几个部门或者几个人员的Excel表进行预先整理后,再导入数据库。由于是若干人员在非控制状况下输入的数据,因此就难免出现同一单位若干表述。这个时候就需要用到这个示例中的方法解决问题了。

  由于没有实际的大量数据,因此就没继续做遍历的过程,所以同志们可能没看明白用途。
10#
发表于 2012-2-26 17:48:59 | 只看该作者
模糊在sql里说白了不就是like吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-6 18:59 , Processed in 0.097575 second(s), 37 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表