解决方案:人工智能方向*敏*感*词*重要吗

优采云 发布时间: 2022-11-23 13:41

  解决方案:人工智能方向*敏*感*词*重要吗

  智能文章主要是利用java技术和luncen对内容进行搜索聚合,进行设计开发。该系统功能简单,专注于算法的设计和开发。提交任务后,内容不会立即可用。通过我们的服务器多次处理后,返回到您的网站,处于待发布状态。

  

  AI文章是基于人工智能GPT-2训练和搜索的内容。提交任务后,无法立即获取内容。经过我们的服务器多次处理后返回您的网站,并处于等待状态。

  

" />

  GPT-2 模型是 GPT 模型的延续。它使用更多的训练集,有更多的参数,是GPT模型的扩展版本。GPT-2 训练集由 800 万个网页组成,由研究人员从互联网上获得,总大小为 40 GB 的文本数据。它的训练内容是让模型预测下一个词。

  GPT-2对其他预训练模型的一个突破是,当模型足够大,训练数据充足时,无监督训练技术也可以训练出在各种下游任务中表现良好的模型。GPT-2模型的研究也很重要,因为监督学习需要大量的数据,需要仔细清洗数据,所以获取这样的数据需要很高的人力成本。由于无监督学习不需要人工标注,并且有大量数据可供选择,因此无监督学习方法可以有效解决这个问题。

  与智能文章相比,人工智能文章经过训练产生的文章效率更高。

  解决方案:机器学习-文本关键词算法探索

  背景:最近实验室项目需要提取关键词文本,所以对关键词提取算法做了一些研究,这里总结一下。本文将首先对关键词抽取算法进行总结,介绍常用的TF-IDF算法和TextRank算法,最后结合Python jieba库的源码讲解算法的实现。

  第一部分:简介

  关键词抽取是文本挖掘领域中一个非常重要的部分。通过文本提取关键词,可以窥探整篇文本的主题,进一步应用于文本推荐或文本搜索。

  文本关键词提取算法大致分为监督式和非监督式:

  监督算法将关键词抽取问题转化为判断每个候选关键词是否为关键词的二元分类问题。它需要一个标记为 关键词 的文档集来训练分类模型。但是,对训练集进行标注非常费时费力,因此更常用无监督算法。

  无监督算法不需要人工标注的训练集,通过一些方法找出文本中比较重要的词作为关键词,提取关键词。衡量词的重要性的方法有很多种:基于文本统计特征、基于词图模型和基于主题模型,TF-IDF、TextRank和LDA是这几种不同方式的代表。无监督文本关键词抽取过程如下:

  第二部分:TF-IDF关键词 提取

  TF-IDF是关键词抽取最基本也最容易理解的方法。判断一个词在一篇文章中是否重要,一个容易想到的衡量标准就是词频。重要的词在文章中经常出现;但另一方面,出现频率高的词不一定重要。因为有些词在各种文章中频繁出现,其重要性肯定不如那些只在某篇文章中频繁出现的词重要。从统计学的角度来说,就是给那些不常见的词更大的权重,降低常见词的权重。IDF(Inverse Document Frequency)就是这样一个权重,TF指的是词频。TF和IDF的计算公式如下:

  一个词的IDF值的计算是基于语料库的。如果一个词在语料库中越常见,分母就会越大,IDF就会越小,越接近于0。之所以给分母加1,是为了避免分母为0(即所有文档都没有收录

这个词)。

  最后得到TF-IDF值:

  可以看出,TF-IDF与某个词在文档中出现的次数成正比,与该词在整个语料中出现的次数成反比。一个词的TF-IDF值很高,说明这个词比较少见,但是在这篇文章中出现了很多次,那么这个词很可能就是我们需要的关键词。

  引用阮一峰资深文章TF-IDF与余弦相似度的应用(一):自动提取关键词——阮一峰博客中的例子:

  以《Apiculture in China》一文为例,“bee”和“breeding”这两个词的TF-IDF值都很高,关键词其实很适合这篇文章。另外,虽然文章中“中国”的词频不低,“蜜蜂”和“育种”的词频较低,但由于在整个语料库中经常出现,所以IDF值很低,所以不会用作文章的 关键词。

  第三部分:提取 TextRank关键词

  TextRank从词图模型的角度寻找文章的关键词。它的基本思想来自著名的 PageRank 算法。PageRank算法是整个Google搜索的核心算法,通过网页之间的链接来计算网页的重要性。先介绍一下PageRank算法:

  PageRank算法把整个互联网看成一个有向图,网页是图中的节点,网页之间的链接是途中的边。根据重要性传递的思想,如果一个网页A收录

一个指向网页B的链接,那么网页B的重要性排名就会根据A的重要行提升。网页的重要性传达思想如下图所示:

  PageRank的简要说明(来自PageRank论文)

  在PageRank算法中,网页初始重要性值(PR值)的计算非常关键,但这个值是无法预测的,所以PageRank论文中给出了一种迭代求PR值的算法:一个初始值随机赋予每个网页值,然后迭代得到收敛值作为网页重要性的度量。

  PageRank计算网页i的PR值的计算公式如下:

  TextRank建图时,节点由网页变为词,网页间的链接变为词间的共现关系。在实际处理中,取一定长度的窗口,认为窗口内的共现关系是有效的。计算公式修改如下:

  迭代获取所有单词的PR值后,可以根据PR值对单词进行排序,得到关键词文本集合。

  第四部分:算法实现

  中文分词中非常常用的Python jieba库fxsjy/jieba,提供了基于TF-IDF算法和TextRank算法的关键词提取。jieba库的源码清晰易懂,因此本章通过分析jieba库的源码来介绍关键词提取算法的实现。

  首先我们看一下关键词提取jieba库的效果:

  

" />

  1. jieba.analyse.extract_tags(文本)

  完整代码位于jieba/analyse/tfidf.py

  我们看一下关键代码:

  def extract_tags(self, sentence, topK=20, withWeight=False, allowPOS=(), withFlag=False):

# (1)中文分词

if allowPOS:

allowPOS = frozenset(allowPOS)

words = self.postokenizer.cut(sentence)

else:

words = self.tokenizer.cut(sentence)

# (2)计算词频TF

freq = {}

for w in words:

if allowPOS:

if w.flag not in allowPOS:

continue

elif not withFlag:

w = w.word

wc = w.word if allowPOS and withFlag else w

if len(wc.strip()) < 2 or wc.lower() in self.stop_words:

continue

freq[w] = freq.get(w, 0.0) + 1.0

total = sum(freq.values())

# (3)计算IDF

for k in freq:

kw = k.word if allowPOS and withFlag else k

freq[k] *= self.idf_freq.get(kw, self.median_idf) / total

# (4)排序得到关键词集合

if withWeight:

tags = sorted(freq.items(), key=itemgetter(1), reverse=True)

<p>

" />

else:

tags = sorted(freq, key=freq.__getitem__, reverse=True)

if topK:

return tags[:topK]

else:

return tags</p>

  extract_tags() 函数将原创

文本作为输入并输出 关键词 文本集。代码大致分为四部分:(1)中文分词(2)计算词频TF(3)计算IDF(4)对所有词进行排序,得到关键词集合。着重计算词频TF和IDF,(2)部分代码恢复了一个字典freq,记录了所有词在文本中出现的次数。(3)部分代码计算IDF。上面说了IDF需要通过语料库计算出来,jieba.analyse里面有一个idf.txt:

  idf.txt中记录了所有单词的IDF值:

  当然你也可以使用自己的语料库idf.txt,详见fxsjy/jieba文档。

  2. jieba.analyse.textrank(文本)

  完整代码位于jieba/analyse/textrank.py

  关键代码如下:

  def textrank(self, sentence, topK=20, withWeight=False, allowPOS=(&#39;ns&#39;, &#39;n&#39;, &#39;vn&#39;, &#39;v&#39;), withFlag=False):

# (1)构建词图

g = UndirectWeightedGraph()

words = tuple(self.tokenizer.cut(sentence))

for terms, w in cm.items():

g.addEdge(terms[0], terms[1], w)

# (2)迭代计算所有词的PR值

nodes_rank = g.rank()

# (3)排序得到关键词集合

if topK:

return tags[:topK]

else:

return tags

  textrank() 函数也将原创

文本作为输入并输出 关键词 文本集合。代码大致分为三部分: (1)构建词图:UndirectWeightedGraph()类 (2)调用UndirectWeightedGraph()类的rank ()方法迭代计算所有词的PR值 (3)排序得到关键词 设置

  更多实现细节,可以直接阅读jieba库提取部分源码关键词,代码量小,清晰易懂~

  第五部分:总结

  关键词抽取在文本挖掘领域有着非常广泛的应用。由于文本字段不同,长文本和短文本的文本类型不同,每种关键词提取方法的效果也不尽相同,实际应用中,需要尝试多种方法选择最适合效果最好的方法。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线