如何实现两个声音相似度匹配算法?

如我有N多个音频,每段音频中都出现“多一些润滑,少一些摩擦出自:统一润滑油”的广告词,

怎么样在可以快速的在每个音频中找出现出广告词的时间段

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是Python实现中文相似度匹配算法的示例代码: 1. 余弦相似度算法 ```python import jieba import numpy as np def cosine_similarity(s1, s2): # 对两个文本分词 words1 = jieba.cut(s1) words2 = jieba.cut(s2) # 将分词结果转化为set words_set = set(words1).union(set(words2)) # 构建文本向量 v1 = np.zeros(len(words_set)) v2 = np.zeros(len(words_set)) i = 0 word_dict = {} for word in words_set: word_dict[word] = i i += 1 for word in words1: v1[word_dict[word]] += 1 for word in words2: v2[word_dict[word]] += 1 # 计算余弦相似度 return np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2)) ``` 2. Jaccard相似度算法 ```python import jieba def jaccard_similarity(s1, s2): # 对两个文本分词 words1 = set(jieba.cut(s1)) words2 = set(jieba.cut(s2)) # 计算交集和并集 intersection = words1 & words2 union = words1 | words2 # 计算Jaccard相似度 return len(intersection) / len(union) ``` 3. 编辑距离算法 ```python def edit_distance(s1, s2): m, n = len(s1), len(s2) # 定义二维数组dp dp = [[0] * (n + 1) for _ in range(m + 1)] # 初始化dp for i in range(m + 1): dp[i][0] = i for j in range(n + 1): dp[0][j] = j # 动态规划计算编辑距离 for i in range(1, m + 1): for j in range(1, n + 1): if s1[i - 1] == s2[j - 1]: dp[i][j] = dp[i - 1][j - 1] else: dp[i][j] = min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) + 1 # 返回编辑距离 return dp[m][n] ``` 4. 词向量匹配算法 ```python import jieba import gensim def word2vec_similarity(s1, s2): # 加载预训练的词向量模型 model = gensim.models.KeyedVectors.load_word2vec_format('pretrained_word2vec.bin', binary=True) # 对两个文本分词 words1 = jieba.cut(s1) words2 = jieba.cut(s2) # 将分词结果转化为set words_set = set(words1).union(set(words2)) # 计算两个文本的词向量之间的相似度 v1 = np.zeros(300) v2 = np.zeros(300) for word in words1: if word in model: v1 += model[word] for word in words2: if word in model: v2 += model[word] return np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2)) ``` 以上是一些常见的中文相似度匹配算法的Python实现示例代码。需要注意的是,对于词向量匹配算法,需要提前下载预训练好的词向量模型(如Word2Vec模型),并使用gensim库来加载和使用这些模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值