2017-04-17 108 views
0

我有一个文本文件文本挖掘中的R

“我写今天。今天我想写作的。今天是伟大的一天”

我试图找到在提到“今天写作”的句子中有多少个实例。可能发生的情况是,“今天写作”并不在一起,但仍然是同一句子的一部分(例如:第二句),也需要捕捉它。

所以在上面的例子中,我的计数是2

任何想法如何做到这一点的R' TIA

+0

你不能使用正则表达式? ((\ bwriting \ b。* \ btoday \ b)|(\ btoday \ b。* \ bwriting \ b)) – Dieter

+0

我是新的正则表达式。它只会在句子中搜索吗? – user35655

+0

因为我可以像“今天是美好的一天,文字是我的爱好”这样的文字。有了这个例子,计数应该是0. – user35655

回答

2

有很多方法可以做到这一点,但tidytext,

library(tidyverse) 
library(tidytext) 

data_frame(text = "I am writing today. Today I am thinking of writing. Today is great day") %>% 
    unnest_tokens(sentence, text, 'sentences', to_lower = FALSE) %>% 
    mutate(sentence_number = row_number()) %>% 
    unnest_tokens(word, sentence, 'words', drop = FALSE) %>% 
    group_by(sentence_number) %>% 
    filter('today' %in% word, 'writing' %in% word) %>% 
    select(-word) %>% distinct() %>% ungroup() %>% 
    mutate(count = n()) 

#> # A tibble: 2 × 3 
#>       sentence sentence_number count 
#>        <chr>   <int> <int> 
#> 1    I am writing today.    1  2 
#> 2 Today I am thinking of writing.    2  2 
+0

太棒了...所以,我只需要拿最后一行来获取发生次数...谢谢。 – user35655

+0

如果你想要计数,你可以用'ungroup()%>%summarize(count = n_distinct(sentence_number))替换'filter'后面的所有内容' – alistaire

-1
  1. 小写的一切。
  2. 按点分割。
  3. 预处理的句子(词干/旅鼠/停用词)
  4. 应用正则表达式 ((\ bwriting \ b \ btoday \ b)中。|(\ btoday \ b \ bwriting \ b))的
+0

谢谢Dieter。不知何故卡住了发生次数。 – user35655