精华内容
下载资源
问答
  • HanLP是由一系列模型与算法组成的工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点;提供词法分析(中文分词、词性标注、命名实体识别)、句法...
  • 利用word2vec对关键词进行聚类
                   

    继上次提取关键词之后,项目组长又要求我对关键词进行聚类。说实话,我不太明白对关键词聚类跟新闻推荐有什么联系,不过他说什么我照做就是了。

    按照一般的思路,可以用新闻ID向量来表示某个关键词,这就像广告推荐系统里面用用户访问类别向量来表示用户一样,然后就可以用kmeans的方法进行聚类了。不过对于新闻来说存在一个问题,那就量太大,如果给你十万篇新闻,那每一个关键词将需要十万维的向量表示,随着新闻数迅速增加,那维度就更大了,这计算起来难度太大。于是,这个方法思路简单但是不可行。

    好在我们有word2vec这个工具,这是google的一个开源工具,能够仅仅根据输入的词的集合计算出词与词直接的距离,既然距离知道了自然也就能聚类了,而且这个工具本身就自带了聚类功能,很是强大。下面正式介绍如何使用该工具进行词的分析,关键词分析和聚类自然也就包含其中了。word2vec官网地址看这里:https://code.google.com/p/word2vec/

    1、寻找语料

    要分析,第一步肯定是收集数据,这里不可能一下子就得到所有词的集合,最常见的方法是自己写个爬虫去收集网页上的数据。不过,如果不需要实时性,我们可以使用别人提供好的网页数据,例如搜狗2012年6月到7月的新闻数据:http://www.sogou.com/labs/dl/ca.html 直接下载完整版,注册一个帐号,然后用ftp下载,ubuntu下推荐用filezilla





    下载得到的数据有1.5G



    2、分词

    我们得到的1.5的数据是包含一些html标签的,我们只需要新闻内容,也就是content其中的值。首先可以通过简单的命令把非content的标签干掉

    cat news_tensite_xml.dat | iconv -f gbk -t utf-8 -c | grep "<content>"  > corpus.txt

    得到了corpus.txt文件只含有content标签之间的内容,再对内容进行分词即可,这里推荐使用之前提到过的ANSJ,没听过的看这里: http://blog.csdn.net/zhaoxinfan/article/details/10403917

    下面是调用ANSJ进行分词的程序:

    import java.util.HashSet;import java.util.List;import java.util.Set;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.io.StringReader;import java.util.Iterator;import love.cq.util.IOUtil;import org.ansj.app.newWord.LearnTool;import org.ansj.domain.Term;import org.ansj.recognition.NatureRecognition;import org.ansj.splitWord.Analysis;import org.ansj.splitWord.analysis.NlpAnalysis;import org.ansj.splitWord.analysis.ToAnalysis;import org.ansj.util.*;import org.ansj.recognition.*;public class test public static final String TAG_START_CONTENT = "<content>";    public static final String TAG_END_CONTENT = "</content>";        public static void main(String[] args) {        String temp = null ;                BufferedReader reader = null;        PrintWriter pw = null;        try {            reader = IOUtil.getReader("corpus.txt", "UTF-8") ;            ToAnalysis.parse("test 123 孙") ;            pw = new PrintWriter("resultbig.txt");            long start = System.currentTimeMillis()  ;            int allCount =0 ;            int termcnt = 0;            Set<String> set = new HashSet<String>();            while((temp=reader.readLine())!=null){                temp = temp.trim();                if (temp.startsWith(TAG_START_CONTENT)) {                    int end = temp.indexOf(TAG_END_CONTENT);                    String content = temp.substring(TAG_START_CONTENT.length(), end);                    //System.out.println(content);                    if (content.length() > 0) {                        allCount += content.length() ;                        List<Term> result = ToAnalysis.parse(content);                        for (Term term: result) {                            String item = term.getName().trim();                            if (item.length() > 0) {                                termcnt++;                                pw.print(item.trim() + " ");                                set.add(item);                            }                        }                        pw.println();                    }                }            }            long end = System.currentTimeMillis() ;            System.out.println("共" + termcnt + "个term," + set.size() + "个不同的词,共 "                    +allCount+" 个字符,每秒处理了:"+(allCount*1000.0/(end-start)));        } catch (IOException e) {             e.printStackTrace();        } finally {            if (null != reader) {                try {                    reader.close();                } catch (IOException e) {                    e.printStackTrace();                }            }            if (null != pw) {                pw.close();            }        }    }}

    经过对新闻内容分词之后,得到的输出文件resultbig.txt有2.2G,其中的格式如下:


    这个文件就是word2vec工具的输入文件


    3、本地运行word2vec进行分析

    首先要做的肯定是从官网上下载word2vec的源码:http://word2vec.googlecode.com/svn/trunk/ ,然后把其中makefile文件的.txt后缀去掉,在终端下执行make操作,这时能发现word2vec文件夹下多了好几个东西。接下来就是输入resultbig.txt进行分析了:

    ./word2vec -train resultbig.txt -output vectors.bin -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1

    这里我们指定输出为vectors.bin文件,显然输出到文件便于以后重复利用,省得每次都要计算一遍,要知道处理这2.2G的词集合需要接近半个小时的时间:




    下面再输入计算距离的命令即可计算与每个词最接近的词了:

    ./distance vectors.bin

    这里列出一些有意思的输出:





    怎么样,是不是觉得还挺靠谱的?补充一点,由于word2vec计算的是余弦值,距离范围为0-1之间,值越大代表这两个词关联度越高,所以越排在上面的词与输入的词越紧密。

    至于聚类,只需要另一个命令即可:

    ./word2vec -train resultbig.txt -output classes.txt -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -classes 500

    按类别排序:

    sort classes.txt -k 2 -n > classes.sorted.txt



    后记:如果想要了解word2vec的实现原理,应该读一读官网后面的三篇参考文献。显然,最主要的应该是这篇: Distributed Representations of Words and Phrases and their Compositionality  

    这篇文章的基础是 Natural Language Processing (almost) from Scratch 其中第四部分提到了把deep learning用在NLP上。

    最后感谢晓阳童鞋向我提到这个工具,不愧是立志要成为NLP专家的人。


    附:一个在线测试的网站,貌似是一位清华教授做的:http://cikuapi.com/index.php


               

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • HanLP是由一系列模型与算法组成的工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点;提供词法分析(中文分词、词性标注、命名实体识别)、句法...
  • 基于搜索引擎的关键词自动聚类法.pdf
  • 基于关键词共现聚类的战略管理研究热点分析.pdf
  • 基于关键词共现聚类的创业教育研究热点分析.pdf
  • 基于关键词共现聚类的电子商务信用研究热点分析.pdf
  • 基于高频关键词共现聚类的远程医疗研究热点分析.pdf
  • 一种高效的用于话题检测的关键词聚类方法.pdf
  • 中外企业孵化器研究热点对比分析——基于关键词共现聚类研究.pdf
  • 针对基于关键词元的话题内事件检测算法运行效率不高、不适合进行大规模文本话题检测的问题,提出了一种高效的关键词聚类算法.该算法在进行词元簇选择时,为簇间相似度分配权值,并借鉴正态分布函数评估词元簇的个数,...
  • 我国基础教育集团研究热点内容分析——基于关键词共现聚类的研究.pdf
  • 世纪以来中外排球运动研究热点对比分析——基于关键词共现聚类的透视.pdf
  • 中外普惠金融研究热点对比分析——基于关键词共现聚类的透视.pdf
  • 国内城市治理研究的知识图谱、研究热点与研究展望——基于关键词共现聚类的透视.pdf
  • K-means在关键词聚类中的尝试

    千次阅读 2019-03-22 01:34:51
    K-means在文本聚类中的尝试 K-means算法是无监督的聚类算法。它的算法思想是:先随机选取K个对象作为初始的聚类中心。然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类...

    K-means在文本聚类中的尝试

    K-means算法是无监督的聚类算法。它的算法思想是:先随机选取K个对象作为初始的聚类中心。然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。一旦全部对象都被分配了,每个聚类的聚类中心会根据聚类中现有的对象被重新计算。

    K-means算法的关键点在于:

    • 初始k个聚类中心的选择
    • 距离的计算方式

    我想讨论的是:在关键词聚类的任务当中,距离的计算方式的选择,对聚类效果的影响。


    具体任务

    我爬取了司法相关的法律文章,包括:

    • 法律
    • 法律法规
    • 法律解读
    • 行政法规
    • 部门规章
    • 地方政府规章

    首先对于这些文章我使用了LTP进行分词,对每个词计算它的TFIDF值,然后根据TFIDF值大小选取了每篇文章的前10个关键词得到关键词词袋。

    任务的目的是将同一类关键词划分在一起,得到司法文章某一类的共性,从而得到司法文章的全部类别特性。

    我把这个任务视为一个聚类任务。因为虽然我们事先已经对文章有了“预分类”,但是文章的关键词可能是多个类别所共有的,换言之,关键词词袋不同于“预分类”文章,并不具有类别特性,仍需要我们根据关键词的特性将同一类关键词划分在同一簇中。


    关键词向量化

    我对关键词向量化的方式是词向量概率模型,做法是将关键词映射到6维实数向量,6个维度分别对应----法律,法律法规,法律解读,部门规章,行政法规,地方政府规章。对于关键词w(w属于关键词词袋),他的第i维的值xi是它在i维中出现的tfidf值的和,于是w = {x0,x1,x2,x3,x4,x5}

    向量化后的关键词词袋,就可以应用k-means算法进行聚类了,但由于我之前没有NLP的经验,使用k-means算法对关键词聚类的过程中走了弯路。


    欧式距离

    欧式距离是K-means在网上流传性比较广的实现方式,尽管我不知道它是否在学术上流传广泛。

    应用欧式距离进行k-means聚类,问题在于:文本的预处理以及向量化过程导致使用欧式距离难以得到良好效果。
    具体而言,为了得到文章的关键词,不能简单的使用概率模型,不得不使用TF-IDF(逆向文本率)剔除文本共性,得到文章的关键词;但词向量化过程,由于剔除了文本共性,得到的词向量(欧式距离中更好的表述是“词点”),绝大多数都是诸如{1,0,0,0,0,0}只在某一维度上拥有非0值。最终导致,使用欧式距离,绝大多数“词点”集中在{0,0,0,0,0,0}“原点”附近。


    余弦相似度

    因为欧式距离难以实现聚类效果,所以我把目光转向了在其他文章博客中多次提到但没有人拿来实现的余弦相似度K-means。
    为了少走弯路,我查阅了基于余弦距离选取初始簇中心的文本聚类研究论文。
    论文的贡献在于:

    • 1、探索余弦相似度与欧氏距离的关系, 在此基础上给出一种余弦距离, 通过余弦距离的优良性质, 使改进算法思想得以运用到余弦K-means算法中。
    • 2、余弦K-means及其拓展算法的簇内中心点仍是簇内各坐标的和的均值, 与欧氏K-means的簇内中心点的计算方法相同
    • 3、将欧氏距离的距离远即可当初始点的思想迁移应用于余弦K-means算法, 即依次寻找余弦距离相隔最远的K个点。

    在1中,作者证明了余弦相似度、欧氏距离,以及作者提出的余弦距离在函数上的关系,作为作者改进K-means算法的基础。
    在这里插入图片描述
    作者在文章中给出了改进后的算法在公开数据集20newsgroup (20NG) 新闻组数据集上的实验数据
    在这里插入图片描述
    可见改进后的算法效果得到了提升。

    有了上述论文的理论支持,我部分实现了作者的改进Kmeans算法(没有采用余弦距离,采用了余弦相似度,但中心点和初始点选择参考了作者的实现)。同一簇内的向量基本具有相同的方向,我又根据簇内向量在中心向量上的投影的大小,将簇内向量进行重要性排序,最终利用了词向量方向和距离的特性,得到了较好的聚类效果。

    http://xueshu.baidu.com/usercenter/paper/show?paperid=40a3ae181b554a498725b6815daf3e18&site=xueshu_se

    展开全文
  • CiteSpace关键词聚类图谱含义详细解析 回顾上一次推文:CiteSpace关键词共现图谱含义详细解析 其中有一句: 当你人工已经可以很容易的进行归纳后,就不需要再利用CiteSpace聚类功能啦。 我们来看一下上次推文出来...

    CiteSpace关键词聚类图谱含义详细解析
    在这里插入图片描述
    回顾上一次推文:CiteSpace关键词共现图谱含义详细解析
    其中有一句:
    当你人工已经可以很容易的进行归纳后,就不需要再利用CiteSpace聚类功能啦。
    我们来看一下上次推文做出来的关键词共现图谱:

    在这里插入图片描述
    人工不好归纳!那怎么聚类呢?
    此时便可使用CiteSpace的聚类功能啦!
    如下所示:我们可以清晰地看到上边的关键词共现网络聚成了一个个不规则区域,每一个区域都对应着一个标签。

    顺序是从0到7,数字越小,聚类中包含的关键词越多,每个聚类是多个紧密相关的词组成的,具体是那些关键词我们可以通过导出得报告得到详细信息。
    在这个网络中我们需要注意两个数值,一个是Q值一个是S值,这两个数值表征着聚类想过的好坏,一般认为:
    Modularity::聚类模块值(Q值),一般认为Q>0.3意味着聚类结构显著
    Silhouette:S值:聚类平均轮廓值 ,一般认为S>0.5聚类类就是合理的,S>0.7意味着聚类是令人信服的。
    如果这两个值不在此范围内,我们可以调节每年出现的次数或者网络的剪切算法。
    但是,我们不能为了调值而调值,有时两个值是调好了,但是呢?图谱已经不能看了,结果根本就不符合实际啦。
    所以呢,关于这两个值到底如何,我们还是需要根据图谱来判断。如果图谱合理了,即使值不在范围内也是可以。
    另外,每个聚类都有一个标签,这个便签是怎么生成的呢?
    这个答案,可以通过下图来回答。
    在这里插入图片描述

    每个聚类竟然都是共现网络中的关键词。
    也就是说我们得到的聚类标签其实早已经存在了网络中,只不过CiteSpace是通过算法将关系紧密的关键词进行聚类,然后会给每个关键词一个值,同一聚类中值最大的当选为该类别的代表,给它打上标签。
    哦,原来是排序呀!简单。
    这也是为什么开头告诉大家:当你人工已经可以很容易的进行归纳后,就不需要再利用CiteSpace聚类功能啦。
    因为人工可以总结出共现图谱中没有的词,可以将多个词归纳成一个短语。
    所以。。。你懂了吧。。。
    既然已经聚类完成了,接下来就是根据聚类结果进行论述你的主题啦,这部分要靠你自己啦!
    上图为老版本做的图,下图为新版本做的图,喜欢哪个自己抉择。

    定量分析的大部分最终结果就是排序,只不过过程有所差异罢了。大到国家综合国力的比拼,小到自己考试考了多少分。所谓定量分析无非就是从数字的角度找到最优的结果。
    比如文献定量中关键词频次排序获取研究热点,社会网络分析中点度中心性、接近中心性、中间中心性排序,获取网络中有影响力的行动者,上文CiteSpace聚类中的关键词排序得到该聚类的标签等等。

    展开全文
  • 谈谈我过的关键词聚类

    千次阅读 2014-06-02 20:16:03
    看到知乎有这样的问题,如何聚类,恰好我以前过,但是想想内容太多,还是单独写一篇说一下。 首先,如果单纯拿出一堆词就让我分类,这个我真不到,我不知道有没有人能做到,反正我不到。做关键词分类...

    转载理由:去年面试的时候,被问到相关问题,之后查了一些资料,没有什么收获,今天不小心看到,挺受启发。

    转自:http://www.wumii.com/topbar/mSzZftie

    看到知乎有这样的问题,如何做词聚类,恰好我以前做过,但是想想内容太多,还是单独写一篇说一下。

    首先,如果单纯拿出一堆词就让我分类,这个我真做不到,我不知道有没有人能做到,反正我做不到。做关键词分类,对我而言,一定有一些基础信息,基础数据作为背景。

    案例1:百度商业词聚类模型

    现在看新闻,大家经常讨论一个话题,百度医疗行业的收入贡献比是多少,其实,我爆个大料给大家,在2005年甚至2006年之前,百度自己都不掌握这类数据。

    当时百度有一个简单的客户分类,是客服提交的,然后我们看了一下消费的行业分布,结果显示超过50%属于其他分类,这个结果基本上就没法看了。

    然后我就琢磨,用商业词能不能直接聚类为行业,当时我在产品部门,合作反欺诈点击的工程师是张怀亭(此人似乎现在还在百度),这是个算法高手,他当年的毕业论文就是关联规则和聚类算法,我就去请教他,他说了一堆,我大部分没听懂,但大概要点知道了一些,然后找他要了论文看了看,也没太看明白,凭借自己粗浅的理解我就动手了,然后这个还真做成了。

    出发点是 假设客户本身具有行业属性(如果这个假设不存在,那就没辙了),我认为每个客户提交的关键词,彼此是有关联的。某两个关键词如果同时被不同的客户提交,其关联性就会随之增加,这个是最基本的一个定义,叫做共同推举数。也是最容易算的一个值。

    但是仅仅依赖于共同推举数有一个问题,就是会导致很多词都和热门词关联,这是不合理的,我记得当时好像是某网上书城的推荐购买那一栏,明显都是热门书籍,似乎也是基于共同推举数做的关联。

    问题1:A和B有50个共同推举,A和C有30个共同推举,但是B这个词是热门词,共有2000个客户提交;而C是冷门词,只有50个客户提交,请问A和B的关联度高还是A和C的关联度高?

    问题2:客户1 提交了10000个词(类似阿里,中青旅真的是这么提交的);客户2提交了20个词,客户1所提交的10000个词的彼此关联度和客户2之间提交的是否一致?

    考虑这两个问题,做权值调整,(其实我记得还有一个权值,很久的事情了,搞不清了)然后计算词与词的关联值。

    那么,权值怎么定? 呵呵,实话说,拍脑袋,不过拍完了要校验。

    实现程序只用了不到一个下午,然后跑一遍程序大约1个小时到2个小时(那时候百度的商业词还没那么多,客户也没现在呢么多,我的程序其实效率不够好)。然后我做了一个web展示界面,就是任意输入一个词,列出其关联词及关联值,目测坏案例,分析参数的问题,然后修改参数,再跑一遍。。。 跑了n多遍,大约两三天时间,觉得结果差不多了,词与词的关联建立起来了,考虑第二步,聚类。(当时认识了很多奇葩的商业词,大开眼界,对互联网行业认识彻底改观,比如白小姐,黄大仙,咳咳、咳咳,这个领域就不能再说了)

    聚类的想法极为简单,把每个行业的代表词(与很多词关联的)抽取出来,当作核心词,然后基于词的关联(延展一级关联、二级关联、三级关联,比如A与B关联,B月C关联,C与D关联,计算彼此权值衰减,得出A与D的关联)。尽可能把所有词聚合到核心词上,作成行业词表。

    最开始核心词我从库里挑与其他词关联度较高的有20多个,然后多级权值衰减也是拍脑袋想的,然后跑一遍,看两个指标,第一、覆盖率是多少;第二、准确率如何,选取每个行业关联度最低的词(坏案例的密度较高,有些词会同时被两个行业核心词关联,但权值计算会出问题,导致被并入错误的行业)去看,选择没有被关联上的词去看,分析权值的问题。然后修改衰减参数,增加核心词。这个程序我也是写了一个下午,但是调试权值和增加核心词,干了一个礼拜。

    然后,百度商业分析部终于可以推出,基于行业的收入报表。我自豪的说一句,百度做收入行业分布,是基于我的关键词分类算法开始的,当然,今天他们鸟枪换炮了,我的算法效率不够(初期还行,到更大的词规模和更多客户就不行了),覆盖率和准确度并不十分完美(坏案例还是一直存在的,不过尽可能控制在消费总额的10%以内,对热门词比较准,但对一些长尾控制不住)。不过、我是在产品部门干的这个活,呵呵。

    后来,这个模型还用于智能起价。下面说一下智能起价的八卦。

    智能起价其实是百度一个失败的商业尝试,对业务的伤害非常大,但是初期的设计理念并没有大问题,百度当时基于关键词的竞价(当时的竞价模式非常简单,别跟我说现在百度的竞价模式不这样,我明白),对商业价值的挖掘是有缺陷的,比如一些超级热门词,3毛一个点击也是卖不掉的(比如电影,小游戏)。是不是可以便宜点卖呢?对一些非常长尾但是价值很高的词,因为发现的客户少,所以起价很低,而其商业价值并不弱,比如 “最新型绿色干洗机报价” 这样的长尾词可能参与竞价的只有一两个客户,但是其商业价值不会低于“干洗机”这样的高价词。所以,智能起价真正的目的,是给热门非商业词降价,给冷门长尾商业词提价。 那么我就提出一个观点,关键词的起价应与他关联词的平均点击价格相关。然后他们拿这个模型去跟领导讲,很快就通过了。(牢骚一句,赵某童鞋去讲的,被领导问毛了,就说算法是技术部门的,他也不是很清楚,他去讲的时候明明是我提供的原型! 不过后来技术部门又做了一版,但那是后话了。) 智能起价模型失败的原因,有两个原因,第一,他们上的时候为了提高对非商业词的覆盖率,硬把关键词包含规则加上去了。导致了一些坏案例。(比如平板,平板电脑,并不是一个行业)。当时效果很不好,领导很不爽,批评我的坏案例太多,列了一堆,我挨个去查,所列的没有一个是我算法算出来的,都是词包含包进去的。其实这个问题还不算严重,词包含固然有坏案例,但是影响面极为有限;第二个问题更严重,就是领导太急迫了,这个事情我的建议是,起价权值低一点(通过算法计算每个词关联平均价格,然后关联平均价格*起价参数=该词起价,这是基本公式,起价参数全凭个人判断),看效果慢慢调整,结果领导一上来设的相当高,所以,客户极大不爽,各种擦屁股持续了几个月。百度那个季度实在可怜。

    凤巢之后,智能起价终于寿终正寝。凤巢的方案更完美,更综合,这是必须承认的。

    案例2:搜索词/指数词的聚类

    当然,也可以基于搜索网民的提交来计算关联度,但是首先,网民的搜索行为,并不如客户提交商业词行为那样具有分类属性。其次,我当时的处理能力也搞不定这样的数据规模的关联计算。(好吧,现在也不大搞得定。)

    那么基于什么呢?基于关键词+搜索量。

    这事又是张怀亭帮忙,我在百度合作最多的工程师就是怀亭,当时他帮我做所有搜索记录的整理,包括汇总和反刷处理(除了一些ip,客户端标记清理外,最重要的还有一个规则,是基于渠道分布和客户端分布规则,正常的搜索词,来自于不同渠道的比例应该是遵循一个合理分布比例的,所谓渠道包括百度官网,hao123,其他联盟渠道等等,如果严重不遵守这个比例,基本就是刷指数了,但这个规则没有应用到百度指数上,至少当时没应用到,原因似乎是这样的,当时几乎所有榜单上的热门女星,似乎都有经纪公司或粉丝团的刷榜行为。)所以当时我手里有百度所有搜索词的搜索数据(清理掉刷指数的数据),而且每日更新。

    那么怎么分类呢?如果做全分类,我真做不到,但是热门词是可以做的。这里有一个要点,就是每个热门关键词,都不是孤立存在的。而这些热门词的相关词(基于词包含)里,会携带一些表明其行业属性的词根,然后可以回溯这个热门词的行业属性。(对了,我上面不是说词包含有坏案例么,咳咳,这个,别求全责备。只有词和搜索量,还要做分类,有些坏案例也只能手工调整了。)

    举例,

    一个热门游戏,比如 神仙道, 会有大量诸如 神仙道攻略, 神仙道新服,神仙道道具,神仙道外挂 等等相关词。通过这些相关词的词根(可以对词根标记分类属性)回溯原词,以及原词所有相关词的分类。比如电视剧,常见词根有 “第**集,最新集。”,一个小说,常见词根有“第**章”,“最新章节” 等。

    当然,还有一个情况,有些词是多含义的,比如典型如苹果(IT产品,电影,水果)。武林外传(电视剧,游戏)等。通过词根的分析,并基于不同词根下的搜索量加权,得到该词的搜索属性,偏向哪个领域,或各个领域的比例,是的,不是很精确,但是还是有一定价值的。

    实现方法就是,针对每个未分类的热门词,去遍历包含他的所有词,然后基于预先定义的分类词根去套,对包含每个分类词根的长尾词根据搜索量加权,汇总,得到该热门词的分类属性,以及覆盖包含该热门词的所有长尾词的分类属性。

    这个算法思路,不适合对长尾词挖掘(含有行业属性词根的长尾词可以覆盖,但是毕竟覆盖率不够),但是对百度热榜可以有很好的帮助,对热门词的挖掘和自动分类还是有一定把握的,当时不少人抱怨我说百度热榜更新不及时,一些新游戏都很火了也进不了热榜,我就拉着百度热榜的产品经理和技术分享过,还提供过原型代码,然后也没有然后了。

    至少当时,我能不断看到网民搜索行为的分类比例(百度长尾词太多,我的模型覆盖搜索量只有50%左右),以及变化趋势,比如眼看着视频类的搜索比例快速增长。

    又是一篇自吹为主的文章,那个,啥也不说了,您凑活看吧。


    展开全文
  • 利用Python实现中文文本关键词抽取,分别采用TF-IDF、TextRank、Word2Vec词聚类三种方法。
  • 1.取英文文章数据,训练成模型,就是特征向量...// // 计算聚类的中心点 // println("Cluster Centers: ") // model.clusterCenters.foreach(println)  有兴趣可以加我的大数据、数据分析、爬虫群: 《453908562》
  • 利用word2vec实现关键词聚类

    千次阅读 2019-05-24 16:17:54
    一、训练自己的词向量 通常需要以下4个步骤: ...4.利用官方提供的聚类方法,Kmeans来实现关键词聚类 ./distance vectors.bin                     参考: ...
  • 基于关键词聚类的深度学习研究.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,729
精华内容 4,691
关键字:

关键词做聚类