本帖最后由 bordex 于 2015-1-15 11:20 编辑
词共现是指一堆词或者文档中,某几个词的共同出现频率。
两个词共现频率就叫做二元共现,以此类推。
比如:
## 1.txt ##2.txt
1. SEO优化思路 1 思路
2. 进阶SEO教程
3. 拥有赚钱思路的SEO
4. SEO优化最佳思路
那么上面的 SEO|思路,SEO|进阶,SEO|赚钱共现频率分别是3,1,1
知道词共现的概念后,就是将概念转化为程序实现。
初学python的时候最好是要先理清程序的逻辑再进行编写,可以事先编写伪代码来理清思路.
下列代码需要用到jieba的分词,自定义词典,和记录词位置功能。下载jieba最新版本,部分旧版本会出现jieba.tokenize()不可用的情况。
具体功能请参照jieba官方文档。
下面是词共现实现过程:
首先是将词按照词根建立倒排索引。
然后对循环遍历,两两词进行对比,取交集并统计频率。也可以自定义词进行查询词共现
然后限定条件,两个词不能相同并且设置共现频率过滤条件。并对相同的展现进行去重。
到这里已经实现了简单的词共现,当然还有继续的改进空间。(代码比较麻烦,就不一一贴了,也防止伸手党不劳而获的思想) 执行结果为:
下面是对算法的改进思路,同理也可以加进三元词共现的计算。
1. 可以利用jiaba.tokenize()功能记录词出现的先后顺序,进而通过记录两个词谁先谁后的频率,频率最多的就作为最佳排序,。比如SEO,思路两个词。按照SEO,思路的出现次序是两次,按照“思路,SEO”出现的次数为一次。那么就可以按照筛选出比较区分出两个词先后顺序。
2. 我们还可以利用jieba.tokenize()中记录的相连的词,利用词结果位置等于词开始位置。可以提取出相近词的共现词,通常相近词里有很多是分词不准的词,可以利用这一方法,得到分词不准的词加到jieba的自定义词典中改善分词的精度。
3. 还可以加入更多的参数来提高识别率,比如通过词性语义和观察到的规律,比如当提取出来的共现都是两个字的时候,很少是分词不准的情况,那么就可以排除掉这一情况。
上面提到的改善分词精度只是词共现的很小应用,实际上还可以运用在
1. 可以对词库进行词共现分析,找出用户关心的维度,建立受控词表,建立清晰网站的结构,也可以对词库共现和站内搜索来源共现进行对比,找出潜在的需求进行内容补充
2. 利用词共现可实现相关词调用,相关文章调用
3. 利用词共现和其他技术综合可以实现类似百度知道相关主题推荐,如下图
4. 可以用来计算两篇文档的相似度(比较复杂)
深挖的地方还有很多,上面只是介绍词共现的简单的应用,后续可以根据网站其他维度的数据进行对比(比如排名与内链数,用户浏览记录,点击率)挖掘更多潜在需求和潜在流量增长点。
基于用户需求,用技术解决改善和用户需求才是提高SEO技术最好方式,别学我,以前总想着研究百度算法,找漏洞啥的,撞墙了才知道回头。
编辑转直:ITsEo山豆同学。