R(tm)を使用して、テキストマイニングの演習で次のMWEを検討してください。 トヨタは米国で複数のSUVモデルを用意しています。 models<-c("highlander","land cruiser","rav4","sequoia","4runner")
。一般的なメディアは、 "toyota rav4"(コーパスはすでに小文字に変換されている)ではなく "rav4"と呼ばれています。 DocumentTermMatrixでトヨタsuvsの単一の列を取得するには、私はこれらのすべてのブランドを1つの一般的な "toyota_suv"に変換する必要があります。私が今やっていることは、長さ(モデル)のためにmycorpus<-tm_map(mycorpus, gsub, pattern="rav4", replacement="toyota_suv")
を繰り返すことです。ハックはmodel_names<-rep("toyota_suv",length(models))
を設定し、人生を乗り切ることでしょう。どのように多対1のマッピングで辞書を設定すれば、すべてmodels
が1つの式で 'toyota_suv'に置き換えられますか?どうもありがとう。R辞書:多対1マッピングを作成
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. Cassandra Achilles:1対多のマッピング
- 2. Cassandraの1対多のマッピング
- 3. AutoMapper - 1対多のマッピング
- 4. graphvizツリーグラフの作成 - 1対1マッピング
- 5. 辞書を多対多にする
- 6. リバースエンジニアリング:DB表からクラス図へ(1対多、多対1マッピング)
- 7. 休止状態での1対多マッピングおよび多対多マッピング
- 8. マッピング多対多:
- 9. 多対1外部キー注釈マッピングを
- 10. セットを使用した多対1マッピング
- 11. エンティティフレームワーク多対多マッピング
- 12. マッピング辞書
- 13. 休止状態で1対多のマッピング
- 14. 流暢NHibernateは1対多マッピング
- 15. JDBI 1対多のジョインとマッピング
- 16. Hibernateマッピング - 多対1の関係
- 17. 1対多マッピング双方向のデータ
- 18. HIbernate 1対多マッピングの削除が動作しない
- 19. 多対1のクラス関係の作成
- 20. NHibernateの多対多マッピング
- 21. Linq to SQL - 多対多マッピング
- 22. Hibernate:多対多マッピング例外
- 23. 多対多マッピングのHibernateクエリ
- 24. Fluent nHibernate多対多マッピング
- 25. ハイバーネート1対1マッピング
- 26. Entity Frameworkコード1 - 多対多の追加情報のマッピング
- 27. Mybatisネストされた1対1または1対多の関係マッピング
- 28. Entity Frameworkで多対多マッピングを作成する方法は?ここで
- 29. QueryDSLを使用したクエリーの作成多対多マッピングのあるJPA
- 30. リストを含むマッピング辞書
感謝。別の質問を開くことなく、これは時間の点で辞書のマッピングとどのように比較されますか? – Pradeep
@Pradeep私は分かりません。私は、ドキュメントセットの例と、まさにどのような出力を得ようとしているのかを少し詳しく説明する必要があると思います。入力文書自体を変更する場合(コーパス作成前)、 'stringi'を直接使って打ち込むのは難しいでしょう:' stri_replace_all_fixed(toyExample、pattern = toyota_suvs、replacement = "toyota_suv"、vectorize_all = FALSE) '。 'tm_map'にそれを与えることは、物事をかなり減速させることになります。 – Jota
時間が重要な考慮事項であれば、私は 'tm'パッケージから離れるでしょう。辞書のメソッドを持つ 'quanteda'を試してみることもできますが、" land cruiser "のようなマルチ単語で直接動作させることはできませんでした。したがって、追加の処理が必要になります。 – Jota