首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中使用自定义标记器将文本转换为向量?

在R中使用自定义标记器将文本转换为向量?
EN

Stack Overflow用户
提问于 2017-11-21 01:32:54
回答 1查看 681关注 0票数 0

在R中有什么方法可以让我使用自己的标记器将文本转换为向量吗?

vectorizer = TfidfVectorizer(tokenizer=getTokens) X = vectorizer.fit_transform(corpus)

上面的代码是用python编写的,getTokens是我的自定义标记器,所以我可以在R中做同样的事情。我还想提到一些事情,比如R library(text2vec)中也有一个库,但是我不知道如何在R Tokens=words中应用我的自定义标记器

EN

回答 1

Stack Overflow用户

发布于 2017-11-21 01:54:23

“标记化是将文本拆分成标记的过程”。我假设使用标记时,您指的是单词。这可以在R中完成,例如在低级别上使用strsplit。例如:

代码语言:javascript
复制
> example <- "This is an example. This is an example"
> unlist(strsplit(example, split = " "))
[1] "This"     "is"       "an"       "example." "This"     "is"       "an"       "example" 

正如您所看到的,字符串被自动转换为包含多个字符串的向量。现在,被一个简单的空格分割并不能很好地处理特殊情况。因此,应该考虑对一个或多个非字母数字字符使用正则表达式:

代码语言:javascript
复制
> unlist(strsplit(example, split = "[^[:alnum:]]+"))
[1] "This"    "is"      "an"      "example" "This"    "is"      "an"      "example"

如果你想保留标点符号,你可以使用"\\s+",也就是空格。我们可以将其封装到一个函数中:

代码语言:javascript
复制
> tokenize <- function(x){
+   unlist(strsplit(example, split = "\\s+"))
+ }
> tokenize(example)
 [1] "This"      "is"        "an"        "example."  "This"      "is"        "an"        "example"

如果你想有不同于单词的标记(例如句子或字符)。你可以使用quanteda中的标记器,它可以处理特殊情况,例如句点不表示新句子:

代码语言:javascript
复制
> 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"

还有其他几个带有自己的标记器的包。例如,包令牌化器就提供了这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47397872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档