问题标签 [metaphone]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2697 浏览

python - 使用 Soundex、python 替换单词

我有一个句子列表,基本上我的目标是用正确的拼写“opposite,near,above,behind”等替换所有不同的介词“opp,nr,off,abv,behnd”。单词的 soundex 代码是相同的,所以我需要构建一个表达式来逐字迭代这个列表,如果 soundex 相同,则用正确的拼写替换它。

一个例子 - ['杰克站在树旁',
'他们完全按照他的计划',
'站在柜台前',
'去加油站']

所以我需要用正确的完整形式替换单词 nr、abv、opp 和 twrds。forward 和 twrds 的 soundex 代码是一样的,所以应该替换它。
我需要遍历这个列表。
这是 soundex 算法:

我是新手,所以如果您有其他方法可以建议,将不胜感激..谢谢。

0 投票
0 回答
230 浏览

java - 编辑距离还是变音位?

我正在研究充满“互联网术语”的在线评论数据。我想对单词进行一些词典分析。长话短说,我想要一个可以考虑互联网使用的语言的拼写检查器。经过一番研究,我发现了两种方法:

  1. Text Brew 是编辑距离的修改版本。
  2. Metaphone,它使用基于声音的方法。

PS。我将解析数据以清除一些网络术语,如“lol”、“lmao”等。我唯一担心的是单词拼写错误,我正在研究 Java。

0 投票
0 回答
92 浏览

java - 是否有可能为那些非英语字符获得变音器?

在java中是否可以将非英文字符转换为英文字符。

例如,我想要:

很快..

当我尝试以下方法时

或者

结果他们都给了Krz?ka?a?

我可以在 oracle sql 中简单地说:

从双;

并得到克扎卡拉。

我认为在java中它也必须如此简单???

0 投票
1 回答
1003 浏览

java - Metaphone 算法的意外结果

我正在对 Java 中的不同单词使用语音匹配。我使用了 Soundex,但它太粗糙了。我切换到 Metaphone 并意识到它更好。但是,当我严格测试它时。我发现了奇怪的行为。我想问一下变音器是这样工作的,还是我用错了。在以下示例中,它的工作正常:-

这将打印

现在“板球”听起来确实像“板球”,但“板球”和“板球比赛”怎么会是一样的。如果有人会解释这一点。这会有很大帮助。

0 投票
4 回答
2916 浏览

r - MetaPhone Functions(如 SoundEx)功能并在 R 中使用?

我想使用MetaPhoneDouble MetaphoneCaverphone、 MetaPhone3 、 SoundEx ,如果有人在“R”中使用过NameX函数,我可以对类似的值进行分类和总结,以在分析之前最大限度地减少数据清理操作。

我完全意识到每种算法都有自己的长处和短处,并且非常希望不使用 SoundEx,但如果我找不到替代方案,它仍然可以工作;正如这篇文章中提到的那样, Harper将与 SoundEx 下的任何不相关名称列表匹配,但不应在 Metaphone 中匹配以获得更好的结果匹配。

虽然我不确定哪个最能满足我的目的,同时仍然保留一些灵活性,所以这就是我想对其中几个进行尝试的原因,并且在查看值之前生成如下表。

在此处输入图像描述

表源链接

姓氏不是我最初分析的主题,但认为这是一个很好的例子,因为我想有效地考虑所有像“听起来”的词被视为相同的值,这实际上是我想要做的,在评估值时简单地调用某事.

我已经看过一些东西:

  • 我知道可以使用RCpp编写和调用 C 包,甚至在 SE 上也有 SoundEx 的 C 解决方案,但我之前没有编写过 R 包,如果有更简单的方法可以避免重新发明轮子直接在 R 中执行还是存在具有该功能的包?
  • 我知道RecordLinkage和现在的stringdist包有一个 SoundEx 函数,但没有任何形式的 MetaPhone 函数。

所以我特别寻找答案是如何在 R 中使用 MetaPhone / Caverphone 并知道“值”,以便我可以按它们对数据值进行分组?

额外的警告是我仍然认为我对 R 很陌生,因为我不是它的日常用户。

0 投票
1 回答
350 浏览

sphinx - 带有变音位和通配符搜索的 Sphinx

我们是一个解剖平台,使用 sphinx 进行搜索。我们想让我们的搜索更加模糊,并开始使用变音位来纠正拼写错误。例如phalanges,即使搜索词是,它也会找到falanges

这很好,但我们想要更多。我们希望用户可以输入,falange甚至falang我们仍然可以找到phalanges. 任何想法如何做到这一点?

如果您有兴趣,可以在此处查看我们的 sphinx 配置文件。

谢谢!

0 投票
1 回答
473 浏览

elasticsearch - 如何增加弹性搜索变音位语音过滤器的最大代码长度?

我正在为弹性搜索使用语音插件过滤器。https://github.com/elastic/elasticsearch-analysis-phonetic

当我创建索引时,我正在使用以下设置创建自定义过滤器。

这工作正常,但正在创建最大长度为 4 个字符的变音标记,这给我的搜索结果增加了太多噪音。例如,我获得了用于避孕和控制的 KNTR(它是医疗数据)。

根据Metaphone 算法的意外结果,底层 Java API 包含一个 setMaxCodeLen 值。在elasticsearch中配置时如何设置?

我想做类似的事情:

但到目前为止,我一直无法确定是否可以配置编码器以增加编码令牌的最大长度。可以这样配置吗?如果是这样,怎么做?

0 投票
1 回答
976 浏览

mysql - 模糊自动完成

在我的应用程序中,我有一个用户表,其中包含first_namelast_name。我目前有第三列full_name(自动生成),如下所示:first_name + last_name + first_name(没有特殊字符)。

现在,我有一个简单的算法来自动完成用户输入(删除了特殊字符):

此查询返回 Etienne,输入Crécy Etienne为 , Etienne De, Cré, Cre,Etienne

我想在这个查询中添加一些模糊,以允许用户拼写错误。当用户编写时,这个新算法应该能够返回 Etienne:

  • Etiene(类似于名字)
  • Etienne Crecy(与全名相似,不加分词)
  • Crecy Etienne(类似全名,不加分词,其他方向)
  • De Cressi(听起来像姓氏)
  • Cressi(听起来像姓氏,没有分词)

我做了很多搜索,最相关的想法是使用SOUNDEX方法(或Metaphone程序),或levenstein程序。我不能像它一样使用它,因为:

  • Soundex 基于第一个字母,thenSOUNDEX(Cressy)与 不同SOUNDEX(De cressy),即使它们非常相似。
  • 变音位基于字母的位置(以“kn”开头就像以“n”开头,但仅在第一个位置)
  • levenstein 不关心字符串长度:De Cressy 与 Cressy 不同。

您对“混合”这些方法有什么想法,或者您对我有其他想法吗?

0 投票
1 回答
1065 浏览

python - 有没有一种方法可以在不使用语料库的情况下生成听起来与给定字典单词相似的单词?

我正在尝试使用 Soundex 和/或 Metaphone 等语音算法来生成听起来与给定字典单词相似的单词。我是否必须拥有所有字典单词的语料库才能做到这一点?是否有另一种方法可以在不使用语料库的情况下生成听起来与给定单词相似的单词?我正在尝试用 Python 来实现。

0 投票
3 回答
26040 浏览

c++ - 架构 x86_64 的未定义符号:...“_main”,引用自:主要可执行文件的隐式入口/启动

牦牛剃须警报。

尽管我无法显示任何源代码,但我认为通过一篇写得很好的帖子,我可能能够提供足够的信息来获得帮助。我在下面尝试的步骤都是从其他帖子中获得的,现在变得有点循环了。

我在 OS X 上使用以下内容:

所以给了我三个文件:

  • 变音器3.cpp
  • Metaphone3ExampleCode.cpp
  • 变音器3.h

我尝试用 g++ 编译:

我得到:

  • gcc 和 clang++ 报告相同。
  • 添加 -m32 没有影响。
  • g++ Metaphone3.cpp -I /usr/local/include没有效果

如果我尝试:

这消除了警告,并生成了Metaphone3.oMetaphone

如果我尝试执行:

更多研究表明我可能错过了链接步骤。所以:

但这让我回到了最初的错误。

然后其他帖子建议删除该-c标志,但正是这个标志使我能够通过错误。所以你可以看到这是如何循环的。正如您现在可能正在收集的那样,我是一名开发人员,但不是 C++ 开发人员,并且来自 Python,编译世界对我来说是一个新世界。任何和所有的帮助表示赞赏