检测两个单词是否使用Python语音押韵

时间:2017-10-10 09:17:14

标签: python arrays windows python-3.x phonetics

首先,我对Python(以及一般的编程)非常陌生,

我正在寻找一个程序来检测两个特定的音节(字符串)是否在语音上押韵。我已经尝试过模块"pronouncing",但它通常只检查完美的押韵(例如“​​猫”和“帽子”)。然而,没有检测到基于语音的押韵,例如“差”和“倾倒”或“差”和“游览”。

我编写了以下程序,它基本上将一系列单词作为输入,对它们进行音节化,将这些音节排列在一个数组中作为行和列,并“交叉检查”数组中的每个条目是否相符到模块“发音”;如果是这样则返回1,否则返回0。

例如,输入

cat hat man

将输出数组

1 1 0
1 1 0
0 0 1

以下是截至目前的代码:

from hyphen import Hyphenator
import pronouncing
import numpy as np

h_en = Hyphenator('en_US')

P = [str(x) for x in input().split()]
Q = []
for i in range(0,len(P)):
    if h_en.syllables(str(P[i])) == []:
        Q = Q + [P[i]]
    else:
        Q = Q + h_en.syllables(str(P[i]))

print(Q)
S = []
for i in range(0,len(Q)):
    for j in range(0,len(Q)):
        if str(Q[j]) in pronouncing.rhymes(str(Q[i]))+[Q[i]]:
            S = S + [1]
        else:
            S = S + [0]
print(S)
a = np.transpose([S[x:x+len(Q)] for x in range(0, len(S), len(Q))])
print()
print(a)

在这种情况下输出数组的原因是无关紧要的,因为我只想优化检查押韵的程序部分。

你会怎么解决这个问题?你怎么写一个能够在没有太多误报的情况下检测出音韵的程序呢?

0 个答案:

没有答案