我在R中有一个使用该tm软件包的语料库.我正在应用该removeWords功能来删除停用词
tm_map(abs, removeWords, stopwords("english"))
Run Code Online (Sandbox Code Playgroud)
有没有办法将自己的自定义停用词添加到此列表中?
我想在NLTK第6章中进行一些分类.这本书似乎跳过了创建类别的一步,我不确定我做错了什么.我的脚本在这里,响应如下.我的问题主要源于第一部分 - 基于目录名称的类别创建.这里的一些其他问题使用了文件名(即pos_1.txt和neg_1.txt),但我更喜欢创建可以将文件转储到的目录.
from nltk.corpus import movie_reviews
reviews = CategorizedPlaintextCorpusReader('./nltk_data/corpora/movie_reviews', r'(\w+)/*.txt', cat_pattern=r'/(\w+)/.txt')
reviews.categories()
['pos', 'neg']
documents = [(list(movie_reviews.words(fileid)), category)
for category in movie_reviews.categories()
for fileid in movie_reviews.fileids(category)]
all_words=nltk.FreqDist(
w.lower()
for w in movie_reviews.words()
if w.lower() not in nltk.corpus.stopwords.words('english') and w.lower() not in string.punctuation)
word_features = all_words.keys()[:100]
def document_features(document):
document_words = set(document)
features = {}
for word in word_features:
features['contains(%s)' % word] = (word in document_words)
return features
print document_features(movie_reviews.words('pos/11.txt'))
featuresets = [(document_features(d), c) for …Run Code Online (Sandbox Code Playgroud) 我的文件有超过4M的行,我需要一种更有效的方法将我的数据转换为语料库和文档术语矩阵,以便我可以将它传递给贝叶斯分类器.
请考虑以下代码:
library(tm)
GetCorpus <-function(textVector)
{
doc.corpus <- Corpus(VectorSource(textVector))
doc.corpus <- tm_map(doc.corpus, tolower)
doc.corpus <- tm_map(doc.corpus, removeNumbers)
doc.corpus <- tm_map(doc.corpus, removePunctuation)
doc.corpus <- tm_map(doc.corpus, removeWords, stopwords("english"))
doc.corpus <- tm_map(doc.corpus, stemDocument, "english")
doc.corpus <- tm_map(doc.corpus, stripWhitespace)
doc.corpus <- tm_map(doc.corpus, PlainTextDocument)
return(doc.corpus)
}
data <- data.frame(
c("Let the big dogs hunt","No holds barred","My child is an honor student"), stringsAsFactors = F)
corp <- GetCorpus(data[,1])
inspect(corp)
dtm <- DocumentTermMatrix(corp)
inspect(dtm)
Run Code Online (Sandbox Code Playgroud)
输出:
> inspect(corp)
<<VCorpus (documents: 3, metadata (corpus/indexed): 0/0)>>
[[1]]
<<PlainTextDocument (metadata: 7)>> …Run Code Online (Sandbox Code Playgroud) 我一直在研究R中{tm}包的许多在线示例,试图创建一个TermDocumentMatrix.创建和清理语料库非常简单,但是当我尝试创建矩阵时,我一直遇到错误.错误是:
UseMethod("meta",x)中的错误:"meta"没有适用于类"character"对象的适用方法此外:警告消息:在mclapply(unname(content(x)),termFreq,control):all计划的核心在用户代码中遇到错误
例如,这里是Jon Starkweather的文本挖掘示例中的代码.为这么长的代码提前道歉,但这确实产生了一个可重复的例子.请注意,错误在{tdm}函数结束时出现.
#Read in data
policy.HTML.page <- readLines("http://policy.unt.edu/policy/3-5")
#Obtain text and remove mark-up
policy.HTML.page[186:202]
id.1 <- 3 + which(policy.HTML.page == " TOTAL UNIVERSITY </div>")
id.2 <- id.1 + 5
text.data <- policy.HTML.page[id.1:id.2]
td.1 <- gsub(pattern = "<p>", replacement = "", x = text.data,
ignore.case = TRUE, perl = FALSE, fixed = FALSE, useBytes = FALSE)
td.2 <- gsub(pattern = "</p>", replacement = "", x = td.1, ignore.case = TRUE,
perl = FALSE, fixed = FALSE, useBytes …Run Code Online (Sandbox Code Playgroud) 我正在努力让RKEA在R Studio中工作.这是我目前的代码:
#Imports packages
library(RKEA)
library(tm)
#Creates a corpus of training sentences
data <- c("This is a sentence",
"I am in an office",
"I'm working on a laptop",
"I have a glass of water",
"There is a wooden desk",
"I have an apple for lunch")
data <- as.data.frame(data)
data <- Corpus(VectorSource(data$data))
#Creates a corpus of training keywords
keywords <- c("sentence",
"office",
"working",
"glass",
"wooden",
"apple")
keywords <- as.data.frame(keywords)
keywords <- Corpus(VectorSource(keywords$keywords))
#Creates output file for created model
tmpdir <- tempfile() …Run Code Online (Sandbox Code Playgroud) 我知道这是一个很长的镜头,但有没有人知道英语单词的数据集有音节压力信息?像下面这样简单的东西会很棒:
AARD vark
A ble
a BOUT
ac COUNT
AC id
ad DIC tion
ad VERT ise ment
...
Run Code Online (Sandbox Code Playgroud) 我一直在尝试实现本文最近提出的算法.给定大量的文本(语料库)的,该算法应该返回特性Ñ -grams(即,序列Ñ语料库的话).用户可以决定适当的n,并且在我尝试使用n = 2-6时,就像在原始论文中一样.换句话说,使用该算法,我想提取表征语料库的2到6克.
我能够实现基于哪个特征n -gram被识别来计算得分的部分,但是一直在努力消除非特征性的.
我有一个名为的列表token.df,其中包含五个数据框,包括出现在语料库中的所有n- gram.每个数据帧对应于n- gram中的每个n.例如,按字母顺序包括所有bigrams(2-gram)及其分数(下面称为mi).token.df[[2]]
> head(token.df[[2]])
w1 w2 mi
_ eos 17.219346
_ global 7.141789
_ what 8.590394
0 0 2.076421
0 00 5.732846
0 000 3.426785
Run Code Online (Sandbox Code Playgroud)
在这里,二元组0 0(虽然它们不是这样的单词)的得分为2.076421.由于数据框包括出现在语料库中的所有n- gram,因此它们每行都有超过一百万行.
> sapply(token.df, nrow)
[[1]]
NULL
[[2]]
[1] 1006059 # number of unique bigrams in the corpus
[[3]]
[1] 2684027 # number of unique trigrams …Run Code Online (Sandbox Code Playgroud) 我搜索了stackoverflow和web,只能找到部分解决方案,或者由于TM或qdap的变化而找不到的部分解决方案.问题如下:
我有一个数据帧:ID和文本(简单文档ID /名称,然后一些文本)
我有两个问题:
第1部分:如何创建tdm或dtm并维护文档名称/ ID?它只在inspect(tdm)上显示"character(0)".
第2部分:我想只保留一个特定的术语列表,即删除自定义停用词的相反.我希望这发生在语料库中,而不是tdm/dtm.
对于第2部分,我使用了一个我在这里得到的解决方案:如何在tm字典中实现邻近规则来计算单词?
这个发生在tdm部分!对于使用"tm_map(my.corpus,keepOnlyWords,customlist)"之类的东西,第2部分是否有更好的解决方案?
任何帮助将不胜感激.非常感谢!
我是R和tm包中的新手,所以请原谅我的愚蠢问题;-)如何在R tm包中显示纯文本语料库的文本?
我在语料库中加载了一个包含323个纯文本文件的语料库:
src <- DirSource("Korpora/technologie")
corpus <- Corpus(src)
Run Code Online (Sandbox Code Playgroud)
但是当我用语料库调用语料库时:
corpus[[1]]
Run Code Online (Sandbox Code Playgroud)
我总是得到这样的输出而不是语料库本身:
<<PlainTextDocument>>
Metadata: 7
Content: chars: 144
Content: chars: 141
Content: chars: 224
Content: chars: 75
Content: chars: 105
Run Code Online (Sandbox Code Playgroud)
如何显示语料库的文本?
谢谢!
更新可 重复的样本:我已经尝试了内置的示例文本:
> data("crude")
> crude
<<VCorpus>>
Metadata: corpus specific: 0, document level (indexed): 0
Content: documents: 20
> crude[1]
<<VCorpus>>
Metadata: corpus specific: 0, document level (indexed): 0
Content: documents: 1
> crude[[1]]
<<PlainTextDocument>>
Metadata: 15
Content: chars: 527
Run Code Online (Sandbox Code Playgroud)
如何打印文档文本?
更新2:会话信息:
> sessionInfo()
R version 3.1.3 (2015-03-09) …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个免费标记的语料库,用于系统训练以进行命名实体识别.我找到的大多数(如"纽约时报")都很贵而且不开放.有人可以帮忙吗?
corpus ×10
r ×7
tm ×5
text-mining ×3
nlp ×2
nltk ×2
data.table ×1
dataframe ×1
dataset ×1
extraction ×1
keyword ×1
python ×1
qdap ×1
stop-words ×1
text ×1