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. AutoMapper - 1対多のマッピング
- 2. Cassandraの1対多のマッピング
- 3. symfony 1対多[マッピング] doctrine:FAIL:validate
- 4. Cassandra Achilles:1対多のマッピング
- 5. graphvizツリーグラフの作成 - 1対1マッピング
- 6. 辞書を多対多にする
- 7. リバースエンジニアリング:DB表からクラス図へ(1対多、多対1マッピング)
- 8. 休止状態での1対多マッピングおよび多対多マッピング
- 9. マッピング多対多:
- 10. Hibernateの多対多と多対1の同時マッピング
- 11. grails grom多対多マッピングの条件を作成します。
- 12. 多対1マッピングのリアルタイムシナリオを休止
- 13. 多対1外部キー注釈マッピングを
- 14. セットを使用した多対1マッピング
- 15. エンティティフレームワーク多対多マッピング
- 16. Hibernateマッピング - 多対1の関係
- 17. JDBI 1対多のジョインとマッピング
- 18. 1対多マッピング双方向のデータ
- 19. 休止状態で1対多のマッピング
- 20. ジャージーWebサービスとハイバネート1対多マッピング
- 21. 流暢NHibernateは1対多マッピング
- 22. マッピング辞書
- 23. HIbernate 1対多マッピングの削除が動作しない
- 24. 多対1のクラス関係の作成
- 25. 多対多マッピングのHibernateクエリ
- 26. NHibernateの多対多マッピング
- 27. Linq to SQL - 多対多マッピング
- 28. Hibernate:多対多マッピング例外
- 29. Fluent nHibernate多対多マッピング
- 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