如何让百度收录自己的网站信息,无锡企业网站设计公司,做网站寄生虫需要哪些东西,茶叶网站源码php今天是个阴雨连绵的夏日#xff0c;因此带来今天的第二篇推文。 祝您阅读愉快#xff01;
文本探索和预处理是将非结构化文本转换为结构化数据进行分析的关键步骤。
R语言中的正则表达式(Regex)
正则表达式(Regex)是定义文本模式的字符序列#xff0c;用于搜索、模式匹配…今天是个阴雨连绵的夏日因此带来今天的第二篇推文。 祝您阅读愉快
文本探索和预处理是将非结构化文本转换为结构化数据进行分析的关键步骤。
R语言中的正则表达式(Regex)
正则表达式(Regex)是定义文本模式的字符序列用于搜索、模式匹配和文本替换等任务。在处理搜索引擎和垃圾邮件过滤等应用中的非结构化文本时至关重要。
R中常用的正则表达式函数
grep() / grepl()定位匹配模式的字符串grep()返回索引grepl()返回逻辑向量。regexpr() / gregexpr()返回匹配项的位置和长度gregexpr()处理所有匹配项。sub() / gsub()替换匹配项sub()替换第一个匹配项gsub()替换所有匹配项g代表全局。regexec()提供详细的匹配信息包括子表达式。
示例在基础R中使用正则表达式 word_vector - c(statistics, estate, castrate, catalyst, Statistics)grep(pattern stat, x word_vector, ignore.case TRUE, value TRUE) # valueTRUE返回匹配的完整单词
[1] statistics estate Statisticsgrepl(pattern stat, x word_vector) # 返回TRUE/FALSE表示是否匹配
[1] TRUE TRUE FALSE FALSE FALSEsub(stat, STAT, word_vector, ignore.case TRUE) # 将第一个stat替换为STAT
[1] STATistics eSTATe castrate catalyst STATistics # 每个单词中只替换第一个匹配项。使用gsub会得到相同的结果。stringr包tidyverse的一部分提供了更一致的接口其中数据始终是第一个参数。以下是使用stringr执行类似操作的方法
library(stringr)# 检测模式类似于grepl
str_detect(word_vector, regex(stat, ignore_case TRUE))
# [1] TRUE TRUE FALSE FALSE TRUE# 提取匹配的字符串类似于grep的valueTRUE
str_subset(word_vector, regex(stat, ignore_case TRUE))
# [1] statistics estate Statistics# 替换第一个匹配项类似于sub
str_replace(word_vector, regex(stat, ignore_case TRUE), STAT)
# [1] STATistics eSTATe castrate catalyst STATistics# 替换所有匹配项类似于gsub
str_replace_all(statistics is statistical, stat, STAT)
# [1] STATistics is STATistical# 计算每个字符串中的匹配次数
str_count(word_vector, regex(stat, ignore_case TRUE))
# [1] 1 1 0 0 1stringr的主要优势
一致的函数命名都以str_开头数据始终是函数的第一个参数更易读且支持管道操作一致的NA值处理内置的正则表达式辅助函数如regex()、fixed()和coll()
使用tm包进行文本预处理
预处理将原始文本转换为结构化格式以便分析。R中的tm包使用语料库文档集合作为其核心结构支持两种类型
VCorpus易失性存储在内存中。PCorpus永久性存储在外部。
预处理步骤
创建语料库使用VCorpus或PCorpus收集文本文档。清理原始数据 转换为小写以减小词汇量。移除停用词如the、“an”、特殊字符、标点符号、数字和多余的空格。 分词将文本分割成标记单词或短语以便分析。 词干提取将单词还原为词干形式如running→run。注意过度词干化如university和universe→univers或词干提取不足如data和datum→不同的词干的问题。词形还原使用词汇知识找到正确的基本形式保留词义。 关键区别虽然两者都将单词还原为基本形式但词形还原会考虑上下文和词性来返回有意义的基本单词而词干提取只是按照算法规则截取词尾。 创建词项-文档矩阵(TDM)将词项表示为行文档表示为列权重如词频作为单元格值。
示例使用tm进行预处理
library(tm)
texts - c(欢迎来到我的博客, 学习R语言很有趣。)
corpus - VCorpus(VectorSource(texts))
corpus - tm_map(corpus, content_transformer(tolower)) # 转换为小写
corpus - tm_map(corpus, removeWords, stopwords(english)) # 移除停用词
corpus - tm_map(corpus, stripWhitespace) # 移除多余空格分析文本数据
预处理后可以使用以下方法分析语料库
findFreqTerms()识别出现频率超过最小值的词项如≥50次。findAssocs()查找相关性超过阈值的词项。词云使用wordcloud2包可视化高频词。
示例分析词频 findFreqTerms(dtm, lowfreq 2) # 出现≥2次的词项
[1] 数据 科学findAssocs(dtm, 数据, 0.8) # 与数据相关的词项相关性≥0.8
$数据
numeric(0)示例创建词云
library(wordcloud2)
freq - colSums(as.matrix(dtm))
wordcloud2(data.frame(word names(freq), freq freq))结论
使用R语言中的正则表达式和tm包进行文本预处理和探索可以将非结构化文本转化为可操作的见解。正则表达式便于模式匹配而分词和创建词项-文档矩阵等预处理步骤则为分析做好准备。findFreqTerms()和wordcloud2等工具可以快速洞察文本模式。