背景?做一个可以定位系统故障的自动化工具,需要在开发过程中使用爬虫获取公司测试平台的bug描述,以及Sonar上的爬虫进行代码故障分析。这些数据对系统故障进行定位、分析和分类。由于属于银行业务,会涉及专业词汇分类不准确,从而衍生出“从需求文档中提取业务关键词”的需求。算法的基本概念和原理?TextRank算法是从PageRank算法改进而来的。两人的想法是相似的。不同的是PageRank算法是根据网页之间的链接关系构建网络,而TextRank算法是根据词间的链接关系构建网络。共现关系构建网络;TextRank算法构建的网络中的边是无向带权边,与PageRank算法构建的网络中有向无权边不同。TextRank算法的核心公式如下,其中Wji用来表示两个节点之间的边连接具有不同的重要程度:为了便于理解,使用TextRank算法提取关键词和关键词组的具体步骤为给出如下:待测文档整句切分,即对每个句子进行分词和词性标注,然后删除句子中包含的停用词,得到一个候选词保留给定词性,如名词、动词、形容词等,即第i句中的保留词;构造词图网络G=(V,E),其中V为节点集,由上述步骤生成的词组成,然后通过共现关系构造任意两个节点之间的边:当两者之间存在边时这两个节点,当且仅当这两个边连接节点对应的词同时出现在长度为k的窗口中时,表示至多出现k个关键词,一般在k=2的情况下;根据上式,迭代计算各节点的权值,直至收敛;对每个节点的权重进行倒序排序后,得到前N个关键词作为top-N关键词和词组;对于得到的top-N关键词,在原文中进行标记查询和比较,如果它们之间形成相邻的词组,则可以将其提取为关键词组。图3-2TextRank关键词抽取算法流程图TextRank算法作为关键词抽取方法相对于上面介绍的其他抽取方法的最大优势在于,TextRank方法是一种无监督的抽取方法,是以一段文本为单位进行处理,所以不需要大量的语料库训练。通过现有计算机的发展,可以比较快速地进行计算和处理,适用于各种文件格式或专题文档,可以在短时间内快速计算出结果,关键词提取成功后,还可以实现摘要的自动生成,整体效果比较连贯。遇到问题?1.需要的文件获取路径是从svn下载下来,放在项目文件夹下直接读取(因为我对python不是很熟练,只能先用这个方法)用爬虫从svn上爬取下来(优化方向是接下来要准备的)2、提取的关键词与职业相关度不是很高。新提取的关键词都是技术相关性较大的词组。具体的关键词组目前是打印出来的形式,下一步的优化方向是能够直接输出提取关键词的文档,并封装成一个工具。
