当前位置: 首页 > 面试题库 >

将相似词归为一组的好策略是什么?

姜杜吟
2023-03-14
问题内容

假设我有一个电影名称清单,其中包含拼写错误和类似这样的小变化-

 "Pirates of the Caribbean: The Curse of the Black Pearl"
 "Pirates of the carribean"
 "Pirates of the Caribbean: Dead Man's Chest"
 "Pirates of the Caribbean trilogy"
 "Pirates of the Caribbean"
 "Pirates Of The Carribean"

如何最好使用python和/或redis分组或查找此类单词?


问题答案:

看看“模糊匹配”。下面的线程中的一些很棒的工具可以计算字符串之间的相似度。

我特别喜欢difflib模块

>>> get_close_matches('appel', ['ape', 'apple', 'peach', 'puppy'])
['apple', 'ape']
>>> import keyword
>>> get_close_matches('wheel', keyword.kwlist)
['while']
>>> get_close_matches('apple', keyword.kwlist)
[]
>>> get_close_matches('accept', keyword.kwlist)
['except']

https://stackoverflow.com/questions/682367/good-python-modules-for-fuzzy-
string-comparison



 类似资料:
  • 问题内容: 在过去的几个小时中,我一直在查看SO上的nlp标签,并且我有信心没有任何遗漏,但是如果我错过了,请指出我的问题。 在此同时,我将描述我要做什么。我在许多帖子中观察到的一个常见概念是语义相似性很困难。例如,从这篇文章中,接受的解决方案建议以下内容: 我的高级要求是利用k- means聚类并基于语义相似性对文本进行分类,因此我所需要知道的是它们是否是近似匹配。例如,在上面的示例中,我可以将

  • 本文向大家介绍什么是安全策略?相关面试题,主要包含被问及什么是安全策略?时的应答技巧和注意事项,需要的朋友参考一下 回答:安全策略是一个正式且简短的计划,其中包含组织的目标,目的和信息安全程序。简而言之,它定义了确切地需要保护免受威胁的条件以及在威胁发生时如何处理情况。

  • 策略模式 一、策略模式的定义 二、策略模式的实际应用 三、策略模式中的设计原则 策略模式 策略模式的定义 策略模式,顾名思义就是指对象具有某个行为,但是在不同的业务场景下,这个行为应该有不同的表现形式,也就是有了不同的策略。让对象能再不同的场景下对同一行为有不同的实现,这就是策略模式。 下面是策略模式的类图: 首先定义一个策略接口: public interface Strategy { pub

  • 问题内容: Prevayler保证所有写入(通过其事务)都是同步的。但是读呢? 如果不使用显式同步(在用户代码中),可以进行脏读吗? 如果将业务对象读取为: ? 如果是这样,哪种同步策略对用户代码有利? (考虑业务对象A包含业务对象Bs的集合), 使用同步集合(A中B的集合),例如从java.util.concurrent包中? 同步外部事务的集合读取与内部事务的集合写入,例如在读写之间使用“ s

  • 这是的定义: 策略-定义了一系列算法,封装了每一个,并使它们可以互换。策略允许算法独立于使用它的客户端而变化。 所以,策略将功能分为两部分:一部分不会更改,另一部分在将来某个时间可以更改。 在MVC中,他们说: 控制器是视图的策略 这意味着控制器是变化的,视图将来可能不会改变。 我还不太明白。我认为他们两个将来都可以改变。 请给我解释一下人们为什么这么说。

  • 假设我有超级碗是弹性搜索中文档属性的值。术语查询超级碗如何与超级碗匹配? 我读过字母标记器和单词定界符,但它们似乎都不能解决我的问题。基本上,我希望能够将一个大词的组合转换为有意义的词的组合。 https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-word-delimiter-tokenfilter.htm

  • 从ANTLR4开始。发现lexer规则可以是递归的https://github.com/antlr/antlr4/blob/master/doc/lexer-rules.md#recursive-莱克瑟规则。使用递归词法规则而不是递归解析器规则的用例是什么?在使用lexer递归规则时,你不会丢失所有信息吗?

  • 问题内容: 我有这样一个浮点数组: 现在,我想像这样对数组进行分区: // [200]由于集群支持较少,将被视为异常值 我必须为多个数组找到这种段,但我不知道分区大小应该是多少。我试图通过使用层次聚类(聚集)来做到这一点 ,它为我提供了令人满意的结果。但是,问题是,建议我不要对一维问题使用聚类算法,因为这样做没有任何理论上的依据(因为它们是针对多维数据的)。 我发现了另一个建议,而不是聚类,即自然