在文本挖掘練習中,考慮使用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