【问题标题】:Rhyme in PHPPHP中的押韵
【发布时间】:2009-04-21 08:43:30
【问题描述】:

我很难找到一种方法来检测两个单词在英语中是否具有相同的韵律。它不必是相同的音节结尾,而是更接近语音相似度

我不敢相信 2009 年唯一的办法就是使用那些老式的押韵词典。你知道有什么资源可以帮助我完成这个痛苦的任务吗?

谢谢。

您的提示都非常有用。我会花一些时间来调查它。无论如何,关于 DoubleMetaPhone 的更多信息可以在here in a proper PHP code 找到(另一个是扩展)。 关于 MethaPhone 功能和 doublemetaphone in Php.net 的有趣信息。

他们特别提醒双变音与变音相比有多慢(大约慢 100 倍)。

【问题讨论】:

    标签: php nlp


    【解决方案1】:

    Soundex 不会帮助您。 Soundex 关注单词的开头,而不是结尾。一般来说,它认为你很难找到任何工具来做到这一点。即使对语言学家来说,词根比词尾更有趣。

    通常你要做的是将单词分成音节并比较它们的最后一个音节。如果您可以将其划分为音素,颠倒它们的顺序并在颠倒的单词上进行比较,那就更好了。
    您可以尝试比较metaphone keys 的最后一部分。

    【讨论】:

    • 双变音位是个好主意。或者,Sortea2 可以反转原始单词并比较它们的 Soundex。
    【解决方案2】:

    参见Bradley Buda's CS project summary from U. Michigan,它使用 Levenshtein 距离作为原子来查找押韵的英语单词。我相信结合 Levenshtein 和 soundex 应该会产生更好的结果。

    【讨论】:

      【解决方案3】:

      除了提到的soundex() 函数ramonzoellner,还有另一个名为levenshtein() 的函数计算两个词之间的levenshtein distance。这可能会对您有所帮助。

      【讨论】:

        【解决方案4】:

        似乎你需要找到一个包含发音的数据库,可能还有重音/重音:多音节词具有相似的最后一个音节,但不同音节的重音并不完全押韵,至少在能够使用它们的意义上诗歌;例如“诗歌”和“下摆”。其他答案(levenshtein 和 soundex)应该有助于找到候选人,但他们不会确认:

        • 艰难
        • 咳嗽
        • 面团
        • 通过
        • 树枝

        【讨论】:

          【解决方案5】:

          你试过 soundex() 函数吗?如果单词听起来相似,它至少应该给你一些指示。

          【讨论】:

          • 我认为 soundex 函数不太适合这个。看看这些例子——两个词几乎不会产生相同的 soundex 押韵。双变音位可能更有意义。
          • 双变音位算法在此处以 pecl 包的形式提供:pecl.php.net/package/doublemetaphone
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-25
          • 1970-01-01
          • 2012-05-31
          • 1970-01-01
          相关资源
          最近更新 更多