2017-09-19 15 views
0

저는 R이 처음이에요. 그리고 나는 widyr을 사용하여 텍스트 마이닝을하고 있습니다. 나는 here이라는 메서드를 사용하여 텍스트의 각 섹션 내에서 함께 발생하는 단어 목록과 그 phi 계수를 얻었습니다.pairwise_cor와 pairwise_count를 결합하여 각 단어 쌍에 대한 phi 계수 AND 발생 횟수를 얻을 수 있습니까?

코드는 다음과 같이

word_cors <- review_words %>% 
    group_by(word) %>% 
    pairwise_cor(word, title, sort = TRUE) %>% 
    filter(correlation > .15) 

내가 좋아하는 코드를 사용하여, 나는 또한 공동 발생하는 단어와 함께 데이터 프레임 및 나타나는 횟수를 생성 할 수 있음을 이해 :

word_pairs <- review_words %>% 
    pairwise_count(word, title, sort = TRUE) 

무엇 나는 피 계수가 모두 이고 인 테이블이 필요합니다. 각 단어 쌍의 어커런스 수입니다. 나는 pairwise_cor와 pairwise_count를 파고 있었지만 여전히 그들을 결합하는 방법을 알 수 없다. 내가 올바르게 이해한다면 조인은 하나의 열만을 고려하여 일치시킬 수 있습니다. 따라서 item1 열에 같은 단어를 가진 여러 쌍이있을 수 있기 때문에 조인을 안정적으로 사용할 수 없습니다.

위어를 사용하면 가능합니까? 그렇지 않다면이 작업을 수행 할 수있는 또 다른 패키지가 있습니까?

여기에 전체 코드입니다 :

#Load packages 
pacman::p_load(XML, dplyr, stringr, rvest, httr, xml2, tidytext, tidyverse, widyr) 

#Load source material 
prod_reviews_df <- read_csv("SOURCE SPREADSHEET.csv") 

#Split into one word per row 
review_words <- prod_reviews_df %>% 
    unnest_tokens(word, comments, token = "words", format = "text", drop = FALSE) %>% 
    anti_join(stop_words, by = c("word" = "word")) 

#Find phi coefficient 
word_cors <- review_words %>% 
    group_by(word) %>% 
    pairwise_cor(word, title, sort = TRUE) %>% 
    filter(correlation > .15) 

#Write data to CSV 
write.csv(word_cors, "WORD CORRELATIONS.csv") 

내가 pairwise_count에 추가 할,하지만 난 피 계수 함께 필요.

감사합니다.

+0

나는 혼란 스러워요하지만 당신은 동일한 데이터에서 두 개의 통계를 얻고 싶었다 같은 문제는 소리가났다. 좀 더 명확히 해 주시겠습니까? 또한 조인은 사용하는 패키지에 따라 다를 수 있지만 한 열에 국한되지 않습니다. – Elin

+0

안녕 Elin, 혼란에 대 한 미안 해요. 나는 실제로 코드에서 pairwise_count 함수를 사용하지 않기 때문에 사용하고있는 지침의 pairwise_count 예제를 복사하여 붙여 넣기 만하면된다. 내 코드에 추가하고 싶지만 pairwise_cor 함수에서 얻은 단어 쌍과 phi 계수에 첨부 된 열로 만 추가하고 싶습니다. 나는 어떻게하는지 알아낼 수 없으며 어떤 지시 사항도 찾을 수 없었습니다. 나는 명확성을 위해 나의 포스트를 편집 할 것이다. 또한, 내가 본 조인은 dplyr에서 가져온 것입니다. 다른 패키지를 살펴 보겠습니다. – ElizabethW

답변

0

당신이 단정 한 데이터 원칙과 tidyverse 도구를 사용하여 들어갈 경우, 나는 모든 방법을 GOING : 그리고 당신이에 관심이 조인 할 dplyr을 사용하는 것이 좋습니다 것입니다. 당신은 pairwise_cor()pairwise_count()에서 계산을 연결하는 left_join을 사용할 수 있습니다 , 원할 경우 하나에서 다른 파이프로 연결할 수 있습니다. 이 예제에 대해 서로 다른 데이터를 사용하고 있기 때문에

library(dplyr) 
library(tidytext) 
library(janeaustenr) 
library(widyr) 

austen_section_words <- austen_books() %>% 
    filter(book == "Pride & Prejudice") %>% 
    mutate(section = row_number() %/% 10) %>% 
    filter(section > 0) %>% 
    unnest_tokens(word, text) %>% 
    filter(!word %in% stop_words$word) 

austen_section_words %>% 
    group_by(word) %>% 
    filter(n() >= 20) %>% 
    pairwise_cor(word, section, sort = TRUE) %>% 
    left_join(austen_section_words %>% 
       pairwise_count(word, section, sort = TRUE), 
      by = c("item1", "item2")) 

#> # A tibble: 154,842 x 4 
#>  item1  item2 correlation  n 
#>  <chr>  <chr>  <dbl> <dbl> 
#> 1 bourgh  de 0.9508501 29 
#> 2  de bourgh 0.9508501 29 
#> 3 pounds thousand 0.7005808 17 
#> 4 thousand pounds 0.7005808 17 
#> 5 william  sir 0.6644719 31 
#> 6  sir william 0.6644719 31 
#> 7 catherine  lady 0.6633048 82 
#> 8  lady catherine 0.6633048 82 
#> 9 forster colonel 0.6220950 27 
#> 10 colonel forster 0.6220950 27 
#> # ... with 154,832 more rows 
0

오늘 병합을 발견하고 사용했는데 두 데이터를 병합하는 데 관련있는 칼럼을 사용하는 것 같습니다. 정확성을 검사하는 방법을 모르겠지만 효과가 있다고 생각합니다.