1、基于关键词的文本知识的挖掘系统的设计与实现。
2、基于MapReduce的气候数据的分析。
3、基于概率图模型的蛋白质功能预测。
4、基于第三方库的人脸识别系统的设计与实现。
5、基于hbase搜索引擎的设计与实现。
6、基于Spark-Streaming的黑名单实时过滤系统的设计与实现。
7、客户潜在价值评估系统的设计与实现。
8、基于神经网络的文本分类的设计与实现。
应用1:关键词自动生成
核心思想是对于某个文档中的某个词,计算其在这个文档中的标准化TF值,然后计算这个词在整个语料库中的标准化IDF值。在这里,标准化是说对原始的计算公式进行了一些变换以取得更好的衡量效果,并避免某些极端情况的出现。这个词的TF-IDF值便等于TF*IDF。对于这个文档中的所有词计算它们的TF-IDF值,并按照由高到低的顺序进行排序,由此我们便可以提取我们想要的数量的关键词。
TF-IDF的优点是快捷迅速,结果相对来说比较符合实际情况。缺点是当一篇文档中的两个词的IDF值相同的时候,出现次数少的那个词有可能更为重要。再者,TF-IDF算法无法体现我词的位置信息,出现位置靠前的词与出现位置靠后的词,都被视为重要性相同,这是不正确的。存在的解决办法是对文章的第一段和每段的第一句话给予比较大的权重。
应用2:计算文本相似度
明白了对于每个词,如何计算它的TF-IDF值。那么计算文本相似度也轻而易举。我们已经计算了文章中每个词的TF-IDF值,那么我们便可以将文章表征为词的TF-IDF数值向量。要计算两个文本的相似度,只需要计算余弦即可,余弦值越大,两个文本便越相似。
应用3:自动摘要
2007年,美国学者的论文<A Survey on Automatic Text Summarization>总结了目前的自动摘要算法,其中很重要的一种就是词频统计。这种方法最早出自1958年IBM公司一位科学家的论文<The Automatic Creation of Literature Abstracts>。这位科学家认为,文章的信息都包含在句子中,有的句子包含的信息多,有的句子包含的信息少。自动摘要就是找出那些包含信息最多的句子。那么句子的信息量怎么衡量呢?论文中采用了关键词来衡量。如果包含的关键词越多,就说明这个句子越重要,这位科学家提出用Cluster的来表示关键词的聚集。所谓簇,就是包含多个关键词的句子片段。
以第一个图为例,其中的cluster一共有7个词,其中4个是关键词。因此它的重要性分值就等于(4*4)/7=2.3。然后,找出包含cluster重要性分值最高的句子(比如5句),把它们合在一起,就构成了这篇文章的自动摘要。具体实现可以参见<Mining the Social Web: Analyzing Data from Facebook, Twitter, LinkedIn, and Other Social Media Sites>(O'Reilly, 2011)一书的第8章,Python代码见github。这种算法后来被简化,不再区分cluster,只考虑句子包含的关键词。伪代码如下。
Summarizer(originalText, maxSummarySize):// 计算文本的词频,生成一个列表,比如[(10,'the'), (3,'language'), (8,'code')...]
wordFrequences = getWordCounts(originalText)
// 过滤掉停用词,列表变成[(3, 'language'), (8, 'code')...]
contentWordFrequences = filtStopWords(wordFrequences)
// 按照词频的大小进行排序,形成的列表为['code', 'language'...]
contentWordsSortbyFreq = sortByFreqThenDropFreq(contentWordFrequences)
// 将文章分成句子
sentences = getSentences(originalText)
// 选择关键词首先出现的句子
setSummarySentences = {}
foreach word in contentWordsSortbyFreq:
firstMatchingSentence = search(sentences, word)
setSummarySentences.add(firstMatchingSentence)
if setSummarySentences.size() = maxSummarySize:
break
// 将选中的句子按照出现顺序,组成摘要
summary = ""
foreach sentence in sentences:
if sentence in setSummarySentences:
summary = summary + " " + sentence
return summary
类似的算法已经被写成了工具,比如基于Java的Classifier4J库的SimpleSummariser模块、基于C语言的OTS库、以及基于classifier4J的C#实现和python实现。
自动的概念比较宽泛。是指自动查全IEEE站的论文并自动下载,还是提供一个URL然后自动下载页面内的论文PDF并且提取元数据,还是给关键字自动下载搜索结果列表的论文?你需要自己先明确自己的需求,这些“自动”实现的难度是不一样的。听你的意思是,你所在的网络环境应该是能够下载IEEE的PDF格式论文吧,要注意的是如果批量下载大量论文的话,可能会被屏蔽C段地址造成别人也无法访问哦。
Python是可以的,可以自己从urllib的基础开始,也可以用模拟浏览器,也有scrapy这样的框架。总之,技术上是可行的。
如果只是写论文整理文献,可以学习使用Zotero,可以很方便的自动下载页面内的论文并生成元数据,引用和批注都很方便,除了IEEE的网站也支持其他非常多的网站类型。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)