一个“set”子类,提供基于n-图的模糊搜索。
ngram的Python项目详细描述
ngram类以高效的方式扩展python“set”类 利用n-gram相似度对成员进行模糊搜索。 它还有静态方法来比较一对字符串。
n-grams是基于字符的,而不是基于单词的,类也不是 实现一个语言模型,只需通过字符串相似度搜索成员。
documentation、tutorial和release notes位于 PYPI包文档站点。请使用GitHub issue tracker 报告问题。
它是如何工作的?
集合存储任意项,但对于非字符串项a键函数 (例如str)必须指定才能提供字符串表示。钥匙 该功能还可用于在 n元索引。
若要索引字符串,它会用指定的伪字符填充字符串,然后 将其拆分为长度为n(默认n=3)个字符的重叠子字符串 并将每个n-gram与使用它的项相关联。
为了查找类似于查询字符串的项,它将查询拆分为n个grams, 收集与查询共享至少一个n-gram的所有项, 并根据共享与非共享的比率按分数对项目进行排序 字符串之间有N个g。
历史记录
2007年,Michel Albert(Exhuma)基于Perl的 String::Trigram模块由tarek ahmed编写,并将2.0.0b2的代码提交给 现在被废弃的Sourceforgesubversion repo。
自2008年底以来,graham poulter一直维护python ngram,最初是重构的。 它要建立在集合类的基础上,还要添加特性、文档、测试, 性能改进和python 3支持。
最初的开发是在GitHub上进行的,但也会推动更改 到Google Code上的早期回购协议。