R:使用grep和tm包的部分匹配字典词

旋转医生

嗨:我有一本由他人准备的否定词典。我不确定他们如何进行除草,但似乎他们使用了Porter Stemer以外的其他东西。该字典具有通配符(*),我认为该通配符可以阻止词干的发生。但是我不知道如何在R上下文中通过grep()或tm包来使用它,因此我将其删除,希望找到一种grep部分匹配的方法。所以原来的字典看起来像这样

#load libraries
library(tm)
#sample dictionary terms for polarize and outlaw
negative<-c('polariz*', 'outlaw*')
#strip out wildcard
negative<-gsub('*', '', negative)
#test corpus
test<-c('polarize', 'polarizing', 'polarized', 'polarizes', 'outlaw', 'outlawed', 'outlaws')
#Here is how R's porter stemmer stems the text
stemDocument(test)

因此,如果我用R的词干对我的语料进行词干处理,则会在字典中找到“不合法”之类的词,但不会与“极化”之类的词相匹配,因为它们的词干与字典中所发现的词干会有所不同。

因此,我想拥有一种使tm包仅匹配每个单词的精确部分的方法。因此,我希望在不删除我的文档的情况下,能够在“违法”和“违法”一词中选择“非法”,并在“两极化”,“两极化和两极化”中选择“极化”。这可能吗?

#Define corpus
test.corp<-Corpus(VectorSource(test))  
#make Document Term Matrix
dtm<-documentTermMatrix(test.corp, control=list(dictionary=negative))
#inspect
inspect(dtm)
肯·贝努瓦

我还没有看到任何tm答案,所以这里有一个使用Quanteda软件包作为替代方案的答案它允许你使用“水珠在你的字典项,这是默认的”通配符值valuetypequanteda的字典功能。(请参阅参考资料?dictionary。)使用这种方法,您不需要阻止文本。

library(quanteda)
packageVersion("quanteda")
## [1] ‘0.9.6.2’

# create a quanteda dictionary, essentially a named list
negative <- dictionary(list(polariz = 'polariz*', outlaw = 'outlaw*'))
negative
## Dictionary object with 2 key entries.
##  - polariz: polariz*
##  - outlaw: outlaw*

test <- c('polarize', 'polarizing', 'polarized', 'polarizes', 'outlaw', 'outlawed', 'outlaws')

dfm(test, dictionary = negative, valuetype = "glob", verbose = FALSE)
## Document-feature matrix of: 7 documents, 2 features.
## 7 x 2 sparse Matrix of class "dfmSparse"
##        features
## docs    polariz outlaw
##   text1       1      0
##   text3       1      0
##   text2       1      0
##   text4       1      0
##   text5       0      1
##   text6       0      1
##   text7       0      1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R:使用grep和tm包的部分匹配字典词

来自分类Dev

R-失败的RegEx模式匹配是否源自文件转换或使用tm包?

来自分类Dev

R-失败的RegEx模式匹配是否源自文件转换或使用tm包?

来自分类Dev

使用grep从字典中删除词根已存在的词

来自分类Dev

R tm软件包:如何将文本与肯定参考词列表进行比较并返回肯定出现词的计数

来自分类Dev

R grep和完全匹配

来自分类Dev

R tm软件包和西里尔文字

来自分类Dev

R tm软件包和西里尔文字

来自分类Dev

如何使用R查找单词的尾随词和前导词?

来自分类Dev

在R中使用tm包获取关键字计数

来自分类Dev

使用bigrams在R中带有tm包的LDA

来自分类Dev

Python映射减少字典和总和中的匹配部分键

来自分类Dev

使用jQuery删除匹配词

来自分类Dev

使用mongo的原始包进行部分匹配

来自分类Dev

使用mongo的原始包进行部分匹配

来自分类Dev

如何在R中使用grep匹配表达式的开头和结尾

来自分类Dev

使用Grep和/或RegEx从R中的元数据字段提取ID的模式匹配

来自分类Dev

如何在R中使用grep匹配表达式的开头和结尾

来自分类Dev

grep不匹配和匹配

来自分类Dev

在tm包R中声明双引号

来自分类Dev

如何使用 R 突出显示 Wordcloud 中的否定词和肯定词

来自分类Dev

Java Regex-空格和匹配词

来自分类Dev

grep -f和A2组合和部分匹配

来自分类Dev

grep -f和A2组合和部分匹配

来自分类Dev

在R中使用tm包来阻止单词不能正常工作?

来自分类Dev

tm包中的stemDocment无法处理过去时词

来自分类Dev

R grep匹配点

来自分类Dev

R grep匹配点

来自分类Dev

使用列表,字典和循环匹配密码子