如何在R中从文本中提取关键词?

一张图片说明了R的界面,其中有一个突出的代码片段,用于从文本中提取关键词。

什么是关键词提取?

关键词提取利用文本分析技术,自动从文本中提取最常用和最重要的词汇和表达方式。 它有助于总结文本的内容,识别讨论的主要话题,这对市场研究、情感分析和其他类型的数据分析很有帮助。 这种技术利用了句子嵌入,可以实时分析大量的数据集。

机器学习人工智能(AI)与自然语言处理(NLP)(计算机科学的一个领域)分解了人类语言,以便机器能够理解和分析它。 关键词提取使工作流程自动化,如对传入的调查答复进行标记或对紧急的客户询问进行回应。 该技术使用关于文本及其所含词语的语言学和语义学信息。 有不同的机器学习算法和技术来提取文本中最相关的关键词。

为什么关键词提取很重要?

关键词提取和关键词提取是很重要的,有几个原因:

  1. 搜索引擎优化(SEO):关键词提取有助于确定文件中最重要的单词和短语,可用于为搜索引擎优化网站内容。
  2. 文本总结:关键词提取可用于通过识别代表文本主旨的最重要的单词和短语来总结文件。
  3. 文本分类:关键词提取可用于根据文本文件包含的关键词将其分为不同的类别。 这在情感分析等应用中是很有用的。
  4. 信息检索:关键词提取可用于提高信息检索系统的准确性,通过识别符合用户搜索查询的相关关键词。

如何在R中进行关键词提取?

下面是一些关键词提取技术和它们的使用案例:

  • 通过做语篇标记来寻找关键词,以识别名词
  • 根据搭配和共同出现的情况寻找关键词
  • 根据Textrank算法寻找关键词
  • 基于RAKE(快速自动关键词提取)寻找关键词
  • 根据依赖关系解析的结果寻找关键词(得到文本的主题)
从文本中提取关键词

提取名词

为了找到关键词,一个简单的方法是通过观察名词。 因为如果你使用udpipe软件包对文本进行注释,每个术语都有一个语篇标签:

代码:

stats <- subset(x, upos %in% "NOUN") 
stats <- txt_freq(x = stats$lemma) 
library(lattice) 
stats$key <- factor(stats$key, levels = rev(stats$key)) 
barchart(key ~ freq, data = head(stats, 30), col = "cadetblue", main = "Most occurring nouns", xlab = "Freq")

搭配与共现

获取多词表达的方法是:查看搭配(词的相互跟随)、每个句子中的词的共同出现,或者查看彼此相近的词的共同出现情况。

代码:

Collocation (words following one another)

stats <- keywords_collocation(x = x,
term = "token", group = c("doc_id", "paragraph_id", "sentence_id"),
ngram_max = 4)

Co-occurrences: How frequent do words occur in the same sentence, in this case only nouns or adjectives

stats <- cooccurrence(x = subset(x, upos %in% c("NOUN", "ADJ")),
term = "lemma", group = c("doc_id", "paragraph_id", "sentence_id"))

## Co-occurrences: How frequent do words follow one another

stats <- cooccurrence(x = x$lemma,
relevant = x$upos %in% c("NOUN", "ADJ"))

## Co-occurrences: How frequent do words follow one another even if we would skip 2 words in between

stats <- cooccurrence(x = x$lemma,
relevant = x$upos %in% c("NOUN", "ADJ"), skipgram = 2)

Textrank(按Google Pagerank排序的词网)。

Textrank是另一种提取关键词的方法。 textrank R包实现了Textrank算法。 Textrank算法可以进行文本总结和关键词提取。 为了构建一个单词网络,该算法检查单词是否相互跟随。 Google Pagerank “算法正在提取相关的词。 彼此相随的相关词语组合在一起,就得到了关键词。 TextRank并不源于原始文本,因为它是一种基于图形的方法。

代码:

stats <- textrank_keywords(x$lemma, relevant = x$upos %in% c("NOUN", "ADJ"), ngram_max = 8, sep = " ") 
stats <- subset(stats$keywords, ngram > 1 & freq >= 5) library(wordcloud) wordcloud(words = stats$keyword, freq = stats$freq)

快速自动关键词提取:RAKE

RAKE是下一个基本算法,它是Rapid Automatic Keyword Extraction的首字母缩写。 RAKE是自然语言处理中一种与领域无关的关键词提取算法。

  1. 计算属于任何候选关键词的每个单词的分数,是通过以下方式进行的
    • 在候选关键词中,该算法查看每个词出现的次数以及与其他词共同出现的次数。
    • 每个词都有一个分数,它是词的程度(它与其他词共同出现的次数)与词频的比率。
  2. 完整的候选关键词的RAKE分数是通过将定义候选关键词的每个词的分数相加来计算的。

代码:

stats <- keywords_rake(x = x, term = "token", group = c("doc_id", "paragraph_id", "sentence_id"), relevant = x$upos %in% c("NOUN", "ADJ"), ngram_max = 4) 
head(subset(stats, freq > 3)) 

使用依赖性分析输出,获得名词性主语和它的形容词

当你使用udpipe执行注释时,dep_rel字段表示词与词之间的关系。 一个令牌使用 token_idhead_token_id与父代相关。 dep_rel字段表示词与词之间的连接方式。 关系的类型是在http://universaldependencies.org/u/dep/index.html。

代码:

stats <- merge(x, x, by.x = c("doc_id", "paragraph_id", "sentence_id", "head_token_id"), by.y = c("doc_id", "paragraph_id", "sentence_id", "token_id"), all.x = TRUE, all.y = FALSE, suffixes = c("", "_parent"), sort = FALSE) 
stats <- subset(stats, dep_rel %in% "nsubj" & upos %in% c("NOUN") & upos_parent %in% c("ADJ")) 
stats$term <- paste(stats$lemma_parent, stats$lemma, sep = " ") 
stats <- txt_freq(stats$term) 
library(wordcloud) 
wordcloud(words = stats$key, freq = stats$freq, min.freq = 3, max.words = 100, random.order = FALSE, colors = brewer.pal(6, "Dark2"))

什么是文本挖掘?

R语言中的文本挖掘是指使用R编程语言和相关的库和包对文本数据进行分析和提取见解的过程。 文本挖掘涉及几个步骤,包括数据清理和预处理、特征提取、统计建模和可视化。
tm 包提供了读取文本数据、清理和预处理数据以及创建文档-术语矩阵的功能,这些功能通常用于分析文本数据。 tidytext 包提供了将文本数据转换为整齐的数据框架的工具。
文本挖掘的一些常见任务包括情感分析、主题建模、文档聚类和文本分类。 这些任务涉及应用统计和机器学习技术来识别文本数据中的模式和关系。

什么是关键词提取API?

关键词提取API是软件接口,允许开发人员使用预先建立的算法和机器学习模型从文本中提取关键词和关键短语。 这些API提供了一个易于使用和可扩展的解决方案,以实现关键词提取过程的自动化,而不需要开发人员建立和训练他们自己的模型。

什么是R?

R是一种开源的编程语言和软件环境,用于统计计算、数据分析和图形。 人们在学术界、研究界和工业界广泛使用R,用于统计建模、数据可视化、机器学习和数据挖掘等任务。 它有与其他编程语言的接口,如PythonC++。 在GitHub上找到更详细的信息与在线教程。

经常问的问题

什么是CSV?

CSV是 “逗号分隔值 “的缩写。 它是一种以纯文本格式存储和交换数据的文件格式,每行代表一条记录,每列代表记录的一个字段或属性。 CSV文件的第一行通常存储列头,为数据集中的每个字段提供一个标签。

什么是TF-IDF?

TF-IDF是指 “术语频率-反向文档频率”。 它是一个数字统计,反映了一个术语在文档语料库中的重要性。 TF-IDF通常在文本挖掘、信息检索和自然语言处理应用中很有用。

什么是止损词?

停顿词是自然语言处理(NLP)任务排除的常见词,因为它们在文本分析中没有什么意义或重要性。 止语的例子包括 “the”、”and”、”of”、”to”、”in”、”a”、”an”、”is “和 “for”。

分享这篇文章:

最先进的人工智能

现在就开始使用Eskritor!

相关文章