见世界

基于文本的简单分组算法

发微博上了,直接搬过来。

在最近的工作中我无意中找到一个简便易行的文本对象分组方法。设有3w个商品title,分词,记录不重复出现的词及其词频。取出现频率最高的双字词 100个,为每个title建立一个二进制的索引(每一位表示一个词是否出现过),这个索引已经为这批title画好了格子,每格中的数据具有一定相关 度。

用于索引的词汇数量,若一个词也不取,相当于所有数据在一个格子中。若取所有词汇,则格子数量等同于title数量,为3w。词汇的选取,能够控制分组的粒度。优化时一定可以通过调整“索引词汇”,取得较优解。最优解也在词汇组合之中。

这个算法的时间复杂度,全量为o(n),增量为o(1),可保证即时性。其中二进制索引字段支持任两条目间相关度的计算(比如:在两个条目中都出现的词除 以每个条目词汇数目)。后悔当年怎么没有想到这个算法。这是在一个边缘需求中,压力下两个小时实现的。3w数据分为2800组,肉眼看了下组内相关度,效 果明显。

这个东西满足了我的需求。绕过“两两比较,海量计算”的常规思路而且有一定效果。
当时如果用这个方法做比价项目,操作上就简单多了。