门萨智商测试

我从事商业软件的设计和开发已有30多年的历史,我很高兴地宣布,我的一些软件第一次作为新的开源项目发布。 对于Dell的开源而言,这是一个名为Mensa的Java项目。

Mensa是一个Java类库。 因此,Mensa的主要用户是使用Java的程序员。 但是,我目前正在与一个使用C#中的Mensa(使用IKVM.NET )的团队合作,但这是另一个话题。 如果您对此特别感兴趣,请随时与我联系。

曼萨简而言之

Mensa为一类模式匹配问题提供了强大而有效的解决方案。 具体来说,Mensa可以轻松地在源文本中查找任何或所有出现的任何关键字。 例如,在小说(源文本)中找到对命名字符(关键字)的所有引用。

Mensa的效率很高,因为它将单次快速处理源文本,而不管它是在搜索一个关键字还是一百万个关键字。

Mensa是通用的,它不限于匹配文本数据。 相反,根据定义,源文本是任意长的符号序列。 这些符号的实际数据类型可以是任何东西-字符,字节,数字,象形文字,音符,核苷酸等。

项目历史

多年来,从Quest Software开始,一直到Dell软件(在收购一家公司之后),Mensa的核心贡献者一直致力于开发平台技术,以发现,映射和集成各种企业信息源之间断开连接的数据。 这种解决方案的关键要素之一就是能够准确,高效地找到东西。

最近,我们致力于提供自动数字资产分类技术,例如Dell One Identity Manager数据治理版分类模块所使用的那些技术。

我们一直在使用许可的第三方软件进行基于字典的关键字搜索,但是由于种种原因,我们知道最终将需要更换组件。 大约一年前,我们开始寻找开源替代方案。 但是,没有可用的开源解决方案具有我们一直在寻找的所有要素:泛型,灵活性,模糊匹配,大型词典效率等。

因此,在2014年初,我着手创建了一个新的“ Java Aho-Corasick库”,它将满足所有这些要求。 后来,我们将名称更改为“ Mensa”。

Java中的标准模式匹配

标准Java库支持在字符串中查找特定模式。 有两种基本机制可供选择:

  • 字符串搜索在另一个字符串中找到文字字符串值的实例。 例如,您可以在文本“ Welcome to Ann Arbor”中搜索“ Arbor”一词。 结果将表明在第15位找到了该单词(Java从零开始计数)。
  • 正则表达式匹配在另一个字符串中查找字符串模式的实例。 例如,您可以在“欢迎来到安娜堡”中搜索模式“ A ... r”。 “。” 模式中的意思是“任何字符”,因此也会在位置15找到匹配项。

在许多情况下,这些内置的Java功能可以正常工作,但并非总是如此。 请考虑以下问题情形:

  1. 标准库函数对内存中的字符串进行操作。 它们不适合搜索无法轻易完全存储在内存中的超大文本。
  2. 内置的正则表达式可以识别单词边界,但是比简单的字符串文字匹配需要更多的处理时间。 例如,不考虑单词边界,“ boy”将匹配“ 30天抵制”,这通常不是您想要的。
  3. 标准库功能无法很好地扩展以查找大量关键字。 您可以选择:
    • 对每个关键字执行单独的文字(或正则表达式)搜索操作
    • 创建一个正则表达式,其中包含每个关键字的替代子句。

随着关键字数量的增加,这些方法在性能方面会受到影响。 标准库功能仅限于在字符文本中查找字符关键字。 无法使用内置函数,例如在1000万个整数数组中查找所有“ 317、206、827、1106”序列。

使用Mensa可以轻松分别处理以下每种情况:

  • Mensa使用抽象文本源进行操作。 提供了针对内存中文本流和流式文本源的实现。 另外,很容易为自定义源创建新的文本源实现。 例如,您可以创建一个文本源,该文本源从数据库,版本控制系统,REST API等读取。
  • Mensa有启用或禁用单词边界检查的选项。 启用后,仅当由单词边界符号分隔时才识别关键字。 构成单词边界符号的内容由抽象符号分类器确定。 提供了字符符号的实现,但是您也可以创建自定义符号分类器。 例如,基因搜索应用程序可以将某些核苷酸定义为基因边界。
  • 构造Mensa机器后,其性能仅取决于要搜索的文本的长度,而不取决于关键字的数量。 给定的计算机实例可以被任意次数使用,甚至可以被并发线程使用,以搜索多个文本源。
  • Mensa使用Java泛型实现。 因此,它可以用来匹配Java模板类型S定义的任何类型的符号。这样,可以创建一个机器来匹配字节,字符,整数,基因序列,位序列等。

Mensa用例示例

假设您的公司有一个内部公司门户网站,其中包含成千上万个网页。 您被要求编写一个程序来确定每个员工在该门户中的任何地方被提及的次数。 您可以访问HR数据库,其中包含公司的全名,有时还包括公司中每位员工的昵称,其中大约有25,000。

在很高的层次上,基于Mensa的解决方案看起来像这样:

    1. 创建Mensa关键字集合。
    2. 从HR数据库中读取员工的全名和昵称,然后将它们添加到关键字集合中。
    3. 创建一个Mensa匹配机。
    4. 用关键字集合初始化它。
    5. 对于Web门户中的每个页面,请基于该页面创建一个Mensa文本源,然后针对该源运行匹配的计算机。 结果是该页面的匹配关键字列表(以及雇员姓名或昵称)。

Mensa提供了将任意数据(称为用户数据)与每个关键字相关联的功能。 此附加信息包含在任何匹配结果中。 对于此应用程序,使用此功能存储每个关键字的员工身份将很有用。

这对昵称尤为重要-例如,公司中很容易有多个“安迪”。 这样,每次匹配机器报告匹配项时,您不仅会知道匹配项的文本,而且还会知道所提及的特定员工。

学到更多

如果这激发了您的模式匹配需求,请跳至Mensa项目站点 ,您可以在其中浏览Mensa Wiki并查看Mensa源代码示例 。 然后,下载最新版本并构建一些很棒的东西!

翻译自: https://opensource.com/business/15/2/building-better-matching-solution-mensa

门萨智商测试

门萨智商测试_与Mensa建立更好的匹配解决方案相关推荐

  1. \t\t门萨智商测试 有些面试的公司喜欢玩这个

    门萨(MENSA)是世界顶级智商俱乐部的名称,于1946年成立于英国牛津,创始人是律师贝里尔和科学家韦尔.他们有意为聪明者建立一个社团,通过充满挑战性的社团活动而使参加者的高智商获得承认.肯定和不断提 ...

  2. html的国际标准智商测试,iq测试题国际标准30道 国际标准IQ测试多少分合格

    说到国际标准IQ测试多少分合格,想必大家都有一定了解,有人问国际标准智力测试题及答案,另外,还有人想问国际标准智商测试题,这到底是怎么回事?其实国际标准智商测试的答案全部,下面就一起来了解下iq测试题 ...

  3. 用户体验改善案例_用户体验案例研究:建立更好的体验(重新设计“和平航空”网站)...

    用户体验改善案例 by Peace Ojemeh (Perrie) 由Peace Ojemeh(Perrie) 用户体验案例研究:建立更好的体验(重新设计"和平航空"网站) (A ...

  4. 准备学python用什么电脑_超准《IQ测试》,在线《智商测试》

    1.选出不同类的一项:A.蛇 B.大树 C.老虎 2.在下列分数中,选出不同类的一项:A.3/5 B.3/7C.3/9 3.男孩对男子,正如女孩对______. A.青年B.孩子C.夫人 D.姑娘E. ...

  5. 视觉测试_视觉设计流行测验

    视觉测试 重点 (Top highlight) I often discuss the topic of improving visual design skills with junior and ...

  6. 现代人的压力和焦虑_设计师如何建立减少焦虑和压力的体验

    现代人的压力和焦虑 From my Brooklyn apartment in New York City, I watch Gov. Andrew Cuomo share the daily Cov ...

  7. 用户体验与可用性测试_可用性作为用户体验的原则

    用户体验与可用性测试 Every UX Designer has his views and best practices. We all have a guide book created thro ...

  8. 大数据ab 测试_在真实数据上进行AB测试应用程序

    大数据ab 测试 Hello Everyone! 大家好! I am back with another article about Data Science. In this article, I ...

  9. 型人格 disc测试_(在线测试)表演型人格障碍 在线筛查测试表演性人格障碍...

    (在线测试)表演型人格障碍,在线筛查人格障碍测试,表演型人格障碍,又称寻求注意型人格障碍或癔症型人格障碍,女性较多见. 下面是专业级的,人格障碍筛查测试,也叫人格障碍测试量表,PDQ-4+ (严肃的. ...

最新文章

  1. python字符串操作_浅谈Python 字符串特有的操作方法
  2. as3分页——页数多了后自动居中类似谷歌分页
  3. 用100行python代码发现语音识别文本错误词,并将结果和正确词一一对应
  4. 正则过滤符号_多角度理解正则项
  5. 帆软JS鼠标悬停列标题高亮显示/改变选中行行高
  6. C 风格字符串,C++string类,MFC,CString类的区别。
  7. paip.调试js 查看元素事件以及事件断点
  8. java长按底栏_java - 如何在导航抽屉物品中添加长按功能? - SO中文参考 - www.soinside.com...
  9. 工业互联网发展行动计划(2018-2020年)
  10. 11 wifi6速率_使用高端的WIFI6路由器是什么体验?Orbi RBK752
  11. html制作晚安,晚安计划.html
  12. 显卡不装驱动也能使用的原因
  13. 搜狗收录怎么增加-搜狗站长推送工具
  14. 如何在G502中实现anywhere滚轮左右长移效果
  15. android锁死横竖屏,Android 锁定横竖屏
  16. 中国各阶级收入统计表,看看你在哪个阶级
  17. 深度学习的几何观点:1流形分布定律、2学习能力的上限。附顾险峰教授简历(长文慎入,公号回复“深度学习流形分布”可下载PDF资料)
  18. C语言初阶第三篇:换我心,为你心,始知C语言 从C语言选择语句到循环语句保姆教学来喽
  19. 曾有一个人,爱我如生命(2)
  20. 【upload导入、导出】

热门文章

  1. 开发整理笔记Markdown基本使用
  2. MyEclipse 启动之 java.lang.RuntimeException: No application id has been
  3. excel表转换成txt导入
  4. 转easyui datagrid 前台分页的实现
  5. Archlive新年第一棒: 基于2.6.37稳定内核的archlive20110107
  6. 屏幕取色工具ColorCat
  7. Ubuntu14.04 indigo ROS的一些使用指令
  8. php的事务没有结束,PHP PDO – 没有活动事务
  9. Spring框架的快速入门
  10. centos 7 lvm用法