0

[![ここに画像の説明を入力][1]][1]次のコードは、ビジネスのレビューのデータ フレームをコンパイルし、各行からビジネス名を抽出することを目的としています。最初の 14 行に正規表現との一致がないことに気付きましたが、問題はありません。一致する最初の行 (この場合は 15) を含めるとすぐに、次のエラーが表示されます。

Error in substring(x[ind], so, eo) : invalid substring arguments

問題は、結果を index.list に送信する regexpr と、適切な引数として index.list を使用できない regmatches の間にあるようです。

mapply を使用せずに 15 行目だけを実行すると、適切な結果が得られることに注意してください。mapply の代わりに、regmatches の結果を新しい列に効率的に取得する方法がある場合は、お知らせください。stringr やその他のパッケージ (学校の課題) を使用できません。

require("tm")
reviews <- VCorpus(DirSource("C:/...../reviews"))

all.reviews <-   data.frame(text=unlist(sapply(reviews,'[',"content")),stringsAsFactors=F)

data <- all.reviews[10:15,]

index.list <- mapply(regexpr, "(?<=Review of )(\\w+ )+(?=-\\s*   [A-Z])", data, perl=T))
rest.names <- mapply(regmatches, data, index.list)

画像を添付できないため、all.reviews data.frame の 15 行目のサンプルを次に示します (薄暗い 90 X 1 です)。

Yelp の Good To Go -Bronx (4/5) に関する S. のレビューより。Good To Go 22 件のレビュー 評価の詳細 カテゴリ: レストラン アメリカン (トラディショナル)レストラン イタリアン アメリカン (トラディショナル); イタリア語 [編集] 1894 Eastchester Rd Bronx; NY 10461 (718) 829-2222 http://www.good2gorestaurant.comメニューを見る 写真を追加 営業時間: 月~木。日 午前 10 時~午後 10 時 金~土 午前 10 時~午後 11 時 ガレージ; ストリート;私有地 服装: カジュアル グループ向け: はい 価格帯: $ 予約が必要: はい

この関数の期待される出力は、90 個の要素を持つベクトルで、各要素はレストラン名です (または、文字列から何も抽出されなかった場合は空白です。これは、追加の正規表現ステートメントで対処する他のレビュー形式があるためです)。15 番目のインデックスに「Good to Go」が表示されると予想されます。

4

1 に答える 1

0

私の同級生は答えを思いつきました。mapply の最後の引数は、データフレームではなくリストであるべきであることが判明したため、lapply はトリックを実行します。

data.mult <- all.reviews[1:15,]    

index.list <- lapply(data.mult,function(x) {
regexpr("(?<=Review of )([A-z-'\\s*]+)+\\w+(?=\\s*-\\s*[A-Z])",x,perl=T)})

rest.names <- mapply(regmatches, data.mult, index.list)
于 2015-11-13T00:37:57.523 に答える