在R中有什么方法可以让我使用自己的标记器将文本转换为向量吗?
vectorizer = TfidfVectorizer(tokenizer=getTokens) X = vectorizer.fit_transform(corpus)
上面的代码是用python编写的,getTokens是我的自定义标记器,所以我可以在R中做同样的事情。我还想提到一些事情,比如R library(text2vec)中也有一个库,但是我不知道如何在R Tokens=words中应用我的自定义标记器
发布于 2017-11-21 01:54:23
“标记化是将文本拆分成标记的过程”。我假设使用标记时,您指的是单词。这可以在R中完成,例如在低级别上使用strsplit。例如:
> example <- "This is an example. This is an example"
> unlist(strsplit(example, split = " "))
[1] "This" "is" "an" "example." "This" "is" "an" "example" 正如您所看到的,字符串被自动转换为包含多个字符串的向量。现在,被一个简单的空格分割并不能很好地处理特殊情况。因此,应该考虑对一个或多个非字母数字字符使用正则表达式:
> unlist(strsplit(example, split = "[^[:alnum:]]+"))
[1] "This" "is" "an" "example" "This" "is" "an" "example"如果你想保留标点符号,你可以使用"\\s+",也就是空格。我们可以将其封装到一个函数中:
> tokenize <- function(x){
+ unlist(strsplit(example, split = "\\s+"))
+ }
> tokenize(example)
[1] "This" "is" "an" "example." "This" "is" "an" "example"如果你想有不同于单词的标记(例如句子或字符)。你可以使用quanteda中的标记器,它可以处理特殊情况,例如句点不表示新句子:
> example <- "This is an example. This is an example Dr. Knowitall"
> quanteda::tokens(example, what = "sentence")
tokens from 1 document.
text1 :
[1] "This is an example." "This is an example Dr. Knowitall"还有其他几个带有自己的标记器的包。例如,包令牌化器就提供了这一点。
https://stackoverflow.com/questions/47397872
复制相似问题