不建立网站建设的利弊,免费的erp系统,工程建设数字化管理平台,网站的跟目录大家好#xff0c;我是微学AI#xff0c;今天给大家带来自然语言处理实战项目2-文本关键词抽取和关键词分值评估。关键词抽取是自然语言处理中的重要任务#xff0c;也是基础任务。
一、关键词抽取传统方法
1.基于统计的方法#xff1a;
基于统计的方法是通过对一组文本…大家好我是微学AI今天给大家带来自然语言处理实战项目2-文本关键词抽取和关键词分值评估。关键词抽取是自然语言处理中的重要任务也是基础任务。
一、关键词抽取传统方法
1.基于统计的方法
基于统计的方法是通过对一组文本进行分析计算出每个词在文本中出现的频率和权重然后根据一定的算法计算词语的重要性从而抽取出关键词。常用的算法有TF-IDF词频-逆文档频率算法等。TF-IDF算法是通过计算一个词在文本中的词频和出现文档的逆文档频率来计算一个词的重要性。出现文档的逆文档频率越低则该词的权重越高即该词在文本中越关键。
2.基于规则的方法
基于规则的方法是根据一定的规范和语言学规则对文本进行词性标注和语法分析然后从中提取出关键词。通常情况下利用句子的语法结构如主语、谓语、定语、状语等来判断一个词的重要性并将其作为关键词。此外还可以结合自定义规则、英文分词等方式进行关键词提取。
3.基于语义的方法
通过利用自然语言处理和信息检索技术对文本进行分析了解文本所表达的含义从而抽取出关键词。基于语义的方法能够更准确地挖掘文本中的重要信息和隐含含义。例如可以使用词向量模型如Word2Vec通过计算文本中各个词之间的相似度来判断一个词的重要性并将其作为关键词。还可以使用LDA等主题模型将文本抽象成一些主题从而提取关键词。
本项目将要采用KeyBERT模型来实现关键词的抽取。
二、KeyBERT模型介绍
KeyBERT是一个用于关键词抽取和关键短语生成的Python第三方库。它是基于BERT预训练模型和TextRank算法的混合方法同时结合了分句、词性筛选、主题建模等技术以提高关键词和短语生成的准确性和有意义性。
KeyBERT的主要特点
1基于BERTKeyBERT使用预训练的BERT模型来编码和理解文本从而提高关键词和短语的质量和准确性。
2灵活性KeyBERT支持不同的预训练BERT模型用户可以根据需求自由选择所需的模型。
3多语言支持KeyBERT支持多种语言的处理包括英语、汉语、阿拉伯语等方便用户进行跨语言的应用。
4高效性KeyBERT基于BERT预训练模型运算效率高尤其在长文本上处理效率更高。
5易用性KeyBERT使用简单只需一行代码即可实现文本关键词提取和关键短语生成。 三、KeyBERT模型的训练
KeyBERT是一个基于BERT模型进行关键词提取的工具其训练步骤主要是
1.预处理对文本进行预处理包括数据清洗、分词、停用词过滤、词干化等处理。
2.BERT编码使用预训练的BERT模型对文本进行编码得到文本的向量表示。
3.句向量构建将文本中的多个句子的向量进行加权平均或使用类似Pooling的操作得到文本的处理后的一个向量表示这个向量称为句向量。
4.基于余弦相似度的关键词提取算法 KeyBERT通过计算文本embedding矩阵中每个句子embedding向量和整个文本embedding向量的相似度给每个句子打上相应的权重然后从每个句子中抽取得分最高的几个词作为关键词计算方式就是用每个词的embedding向量和得分最高的K个句子embedding向量计算余弦相似度然后加和作为关键词权重得分最后按照得分排序输出结果。
5.超参数调整使用验证集对模型进行超参数调整如句子数量、关键词数量等。
6.模型评估使用测试数据对模型进行评估包括准确率、召回率、F1值、AUC等指标。
四、KeyBERT的应用
# codingutf-8/gbk
from sklearn.feature_extraction.text import CountVectorizer
import jiebadef tokenize_zh(text):words jieba.lcut(text)return words
vectorizer CountVectorizer(tokenizertokenize_zh)from keybert import KeyBERTdoc AI生成视频是利用人工智能技术生成视频的过程通常这种技术基于图像识别、语音合成等算法从各种不同来源的数据中获取信息然后自动生成视频。 AI生成视频技术的优势是可以快速生成高质量视频同时还可以自动完成各种冗长的编辑工作提高工作效率。此外还可以实现一些人类不可能完成的任务例如在极端天气、危险环境下进行拍摄。
kw_model KeyBERT()keywords kw_model.extract_keywords(doc, vectorizervectorizer,top_n6)
#print(keywords)keys [x for x in keywords if len(x[0])1]
print(keys)
运行结果
[(完成, 0.5415), (生成, 0.4935), (人工智能, 0.4928), (进行, 0.4882), (合成, 0.3963), (高质量, 0.3836)]
关键词抽取的可视化代码
colorlist [#7aebec,#e3e7d2,#ab9cfc,#bfe1d9,#c2e19d,#d423d2,#f423d2]
with open(keyword2.html, w, encodingutf8) as f:head div classentities styleline-height: 3.5; direction: ltr h3关键词抽取结果:/h3/divf.write(head)mainhtml textlist doc.split(\n)for tex in textlist:mainhtml mainhtml div classentities styleline-height: 2.5; direction: ltr tex /divfor sch,color in zip(keylist,colorlist[0:len(keylist)]):mainhtml mainhtml.replace(sch,mark classentity stylebackground: color; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;schspan stylefont-size: 0.5em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5remkeyword/span/mark)f.write(mainhtml)keys for key in keylist:keys keyskey keyword_show div classentities styleline-height: 2.5; direction: ltrh4 关键词keys /h4/divf.write(keyword_show)
最后会生成keyword2.html网页文件我们打开网页文件就可以看到 我们可以清晰地看到关键词的位置以及出现的频次。