0

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

我正在寻找编写一个程序来检测两个特定音节(字符串)是否在语音上押韵。我已经尝试过“发音”模块,但它通常只检查完美的押韵(例如“​​cat”和“hat”)。但是,不会检测到基于语音的押韵,例如“poor”和“pour”或“poor”和“tour”。

我编写了以下程序,它基本上将一系列单词作为输入,对它们进行音节化,将这些音节排列为数组中的行和列,并根据模块“交叉检查”数组中的每个条目是否押韵“发音”; 如果是这种情况则返回 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)

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

你会如何解决这个问题?您将如何编写一个可以检测音韵而不会出现太多误报的程序?

4

0 回答 0