gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 09:47:24 29 4
gpt4 key购买 nike

我想使用 MetaPhone , Double Metaphone , Caverphone ,MetaPhone3,SoundEx,如果有人做过NameX 'R' 中的函数,因此我可以对类似的值进行分类和总结,以在分析之前最大限度地减少数据清理操作。

我完全意识到每种算法都有自己的优点和缺点,并且会高度 不喜欢使用 SoundEx 但如果我找不到替代品,它仍然可以工作;就像 mentioned in this post Harper 将与 SoundEx 下的任何不相关名称列表匹配,但不应在 Metaphone 中匹配以获得更好的结果匹配。

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

enter image description here

Table Source Link

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

我已经看过一些东西:

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

  • So I am specifically looking for an answer is to how do a MetaPhone / Caverphone function in R and know the "Value" so I can group data values by them?



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

    最佳答案

    该算法非常简单,但我也找不到现有的 R 包。如果你真的需要在 R 中完成这项工作,一个短期的选择是安装 python 模块 metaphone ( pip install metaphone ) 然后使用 rPython在 R 中使用它的桥:

    library(rPython)

    python.exec("from metaphone import doublemetaphone")
    python.call("doublemetaphone", "architect")
    [1] "ARKTKT" ""

    这不是最优雅的解决方案,但它可以让你在 R 中进行变音操作。

    Apache Commons 有一个 codec library它还实现了变音位算法:
    library(rJava)

    .jinit() # need to have commons-codec-1.10.jar in your CLASSPATH

    mp <- .jnew("org.apache.commons.codec.language.Metaphone")
    .jcall(mp,"S","metaphone", "architect")
    [1] "ARXT"

    您可以使以上 .jcall一个 R 函数并像使用任何其他 R 函数一样使用它:
    metaphone <- function(x) {
    .jcall(mp,"S","metaphone", x)
    }

    sapply(c("abridgement", "stupendous"), metaphone)

    ## abridgement stupendous
    ## "ABRJ" "STPN"

    java 接口(interface)也可能跨平台更兼容。

    下面是使用 java 接口(interface)的更完整的 View :
    library(rJava)

    .jinit()

    mp <- .jnew("org.apache.commons.codec.language.Metaphone")
    dmp <- .jnew("org.apache.commons.codec.language.DoubleMetaphone")

    metaphone <- function(x) {
    .jcall(mp,"S","metaphone", x)
    }

    double_metaphone <- function(x) {
    .jcall(dmp,"S","doubleMetaphone", x)
    }

    words <- c('Catherine', 'Katherine', 'Katarina', 'Johnathan',
    'Jonathan', 'John', 'Teresa', 'Theresa', 'Smith',
    'Smyth', 'Jessica', 'Joshua')

    data.frame(metaphone=sapply(words, metaphone),
    double=sapply(words, double_metaphone))

    ## metaphone double
    ## Catherine K0RN K0RN
    ## Katherine K0RN K0RN
    ## Katarina KTRN KTRN
    ## Johnathan JN0N JN0N
    ## Jonathan JN0N JN0N
    ## John JN JN
    ## Teresa TRS TRS
    ## Theresa 0RS 0RS
    ## Smith SM0 SM0
    ## Smyth SM0 SM0
    ## Jessica JSK JSK
    ## Joshua JX JX

    关于r - MetaPhone Functions(如 SoundEx)功能并在 R 中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27727584/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com