如何比较不精确匹配的字符串

我需要比较两个输出字符串, 即原始转录和语音到文本服务的转录。数字通常是以数字格式或以 "四" 或 "4" 等单词的形式写的。考虑到这些不同的转录方法, 如何比较字符串?

到目前为止, 我只是用小写字母转换了两个字符串, 并将每个单词分成一个空格。

#Read the two files and store them in s1_raw and s2_raw
with open('original.txt', 'r') as f:
    s1_raw = f.read()
with open('comparison.txt', 'r') as f:
    s2_raw = f.read()

#Transform all letters to minuscule letter
s1 = s1_raw.lower()
s2 = s2_raw.lower()

#Split texts with space as seperator to have a list of words
s1_set = s1.split(' ')
s2_set = s2.split(' ')

#Used later for confidence calculation
count1 = len(s1_set)
count2 = 0
x = 0

#Check which string is longer to prevent running out of indices
if len(s1_set) < len(s2_set):
    #Loop through whole list and compare word by word
    for x in range (0, len(s1_set)):
        if s1_set[x] == s2_set[x]:
            count2 += 1
        x += 1
else:
    #Loop through whole list and compare word by word
    for x in range (0, len(s2_set)):
        if s1_set[x] == s2_set[x]:
            count2 += 1
        x += 1

#Confidence level= correct words divided by total words
confidence = count2/count1

#Print out result
print('The confidence level of this service is {:.2f}%'.format(confidence*100))

我想测量几个 *. txt 文件的转录的准确性, 并考虑如何不同的语音到文本服务转录的所有不同的方式。

第1个答案

在比较文本之前, 必须对其进行规范化。首先决定是否 four4 为您的规范形式, 并将所有字符串转换为该窗体。

例如, 如果 four 是规范形式, 则编写代码以替换 1 、替换为、 one 213 two hundred and thirteen 等, 并与这些方法进行比较。

其实, 我认为最好是规范化 4 , 而不是 four 因为在某些语言中表达一个数字可以有不止一种方式。通过偏好, 4 可以将所有等价转录归一化为一个单一的形式。

相关问题

通过随机抽样其他列数据创建新列 如何使用熊猫获得包括每一个组合的计数 如何有效地展开矩阵的值与小块? 如何比较不精确匹配的字符串 我应该将 std:: string 与 &ldquo;string&rdquo; 或 &ldquo;string&rdquo; 进行比较吗?