在文本挖掘练习中,考虑使用R {tm}来考虑以下MWE: 丰田在美国有几款SUV车型。 models<-c("highlander","land cruiser","rav4","sequoia","4runner")
。一般媒体称这些不是“丰田rav4”(语料库已经转变为小写),而是“rav4”。为了在DocumentTermMatrix中获得一列丰田suvs,我需要将所有这些品牌转换为一个通用的“toyota_suv”。我现在正在做的是重复mycorpus<-tm_map(mycorpus, gsub, pattern="rav4", replacement="toyota_suv")
的长度(模型)。黑客将设置model_names<-rep("toyota_suv",length(models))
并继续生活。如何创建一个包含多对一映射的字典,以便在一个表达式中将所有models
替换为'toyota_suv'?非常感谢。R词典:创建多对一映射
1
A
回答
4
您可以使用矢量化替代函数。 stringi
包与stri_replace_all
功能家族提供了这样的功能。在这里,我使用stri_replace_all_fixed
,但需要时调整大小写和其他选项。
library(tm)
library(stringi)
toyota_suvs <- c("highlander","land cruiser","rav4","sequoia","4runner")
tm_map(toyCorp, stri_replace_all_fixed,
pattern = toyota_suvs, replacement = "toyota_suv",
vectorize_all = FALSE)
数据:
toyExample <- c("you don't know about the rav4, John Snow",
"the highlander is a great car",
"I want a land cruiser")
toyCorp <- Corpus(VectorSource(toyExample))
相关问题
- 1. 从拼合嵌套字典的映射创建一个新词典
- 2. 多对一映射
- 3. 一对多映射
- 4. 从字典创建映射使用LINQ
- 5. 角 - 创建对象映射
- 6. 创建词典
- 7. 映射教义一对多/多对一
- 8. O/R映射:一对一ID列
- 9. 通过Swift词典过滤和映射?
- 10. 如何使用RestKit映射根词典?
- 11. Python词典和映射性能
- 12. 如何使用多映射创建多个一对多对象层次
- 13. LINQ Query创建词典词典
- 14. 流利的NHibernate:如何创建一对多的双向映射?
- 15. 无法在休眠状态下创建一对多映射表
- 16. 如何使用JPA创建此多对一映射?
- 17. 创建“集词典”
- 18. nhibernate映射,多对一
- 19. 休眠多对一映射
- 20. Cassandra Achilles:一对多映射
- 21. 映射一对多关系
- 22. FluentNHibernate一对多映射
- 23. JPA一对多自映射
- 24. 一对多映射。 NHibernate的
- 25. Hibernate的一对多映射
- 26. NHibernate映射:一对多
- 27. 用Dapper映射一对多
- 28. 一对多双向映射
- 29. AutoMapper - 一对多映射
- 30. EF映射一对多
感谢。没有打开另一个问题,这与字典映射在时间上的比较如何? – Pradeep
@Pradeep我不知道。我认为你需要做更多的工作来提供一套示例文档,以及你想要获得什么类型的输出。如果你想自己改变输入文档(在语料库创建之前),直接使用'stringi'将很难被击败:'stri_replace_all_fixed(toyExample,pattern = toyota_suvs,replacement =“toyota_suv”,vectorize_all = FALSE)'。将其馈送到'tm_map'会显着减慢速度。 – Jota
如果时间是一个重要的考虑因素,我会放弃'tm'包。你也许可以尝试'quanteda',它有一个字典方法,但是,我还没有能够直接使用像“陆地巡洋舰”这样的多词。所以,需要一些额外的处理。 – Jota