快速python语音算法
Fuzz的Python项目详细描述
fuzzy是一个python库,可以快速实现常用的语音算法。 通常这是在弦乐相似性练习中,但它们非常多用。
它使用c扩展(通过cython)来提高速度。
算法如下:
- Soundex
- NYSIIS
- Double Metaphone基于莫里斯 Aubrey的Perl实现的C代码。
用法
这些功能很容易使用!
>>> import fuzzy >>> soundex = fuzzy.Soundex(4) >>> soundex('fuzzy') 'F200' >>> dmeta = fuzzy.DMetaphone() >>> dmeta('fuzzy') ['FS', None] >>> fuzzy.nysiis('fuzzy') 'FASY'
性能
fuzzy的双变音比纯python快10倍 由Andrew Collins实现 在最近的一些testing。 Soundex和NYSII也应该更快。使用ipython的时间:
In [3]: timeit soundex('fuzzy') 1000000 loops, best of 3: 326 ns per loop In [4]: timeit dmeta('fuzzy') 100000 loops, best of 3: 2.18 us per loop In [5]: timeit fuzzy.nysiis('fuzzy') 100000 loops, best of 3: 13.7 us per loop
距离度量
我们推荐Python-Levenshtein 用于快速、基于c的字符串距离/相似性度量的模块。在其他中 它包括的功能:
- Levenshtein edit distance
- Jaro distance
- Jaro-Winkler distance
- Hamming distance
在测试中,它比同类的纯python快了好几倍 这些算法的实现。