首页 > 解决方案 > 使用 tidytext 在 ngram 分析中保留连字符

问题描述

我正在对传记进行文本分析。我想保留由连字符连接的许多“简单”单词组成的“复杂”单词。

例如,如果我有以下向量:

Example<- c("bovine retention-of-placenta sulpha-trimethoprim mineral-vitamin-liquid-mixture)

***我编辑了这一部分以使我需要的输出更清晰***

我希望我的传记在尺寸为 3x1 的 data.frame 中(这是您在使用unnest_tokensfrom时获得的格式tidytext


1 bovine                   retention-of-placenta
2 retention-of-placenta    sulpha-trimethoprim
3 sulpha-trimethoprim      mineral-vitamin-liquid-mixture

****本期结束****

我的问题是,对于 tidytext,选项标记与“ngrams”(这是我正在执行的分析)或“regex”(这是我可以用来对这些连字符进行条件处理的命令)一起使用

这是我目前正在使用的代码:

spdiag_bigrams<-diagnostics%>%unnest_tokens(bigram, text, token = "ngrams", n = 2)

我怎样才能同时做这两件事?

谢谢你

标签: rregextext-miningtidytext

解决方案


确实,默认会去除大部分标点符号,但不会去除下划线:

library(tidyverse) 
library(tidytext)

example <- c("bovine retention-of-placenta sulpha-trimethoprim mineral-vitamin-liquid-mixture")

tibble(text = example) %>% 
  mutate(text = str_replace_all(text, "-", "_")) %>%
  unnest_tokens(word, text)
#> # A tibble: 4 x 1
#>   word                          
#>   <chr>                         
#> 1 bovine                        
#> 2 retention_of_placenta         
#> 3 sulpha_trimethoprim           
#> 4 mineral_vitamin_liquid_mixture

reprex 包(v0.3.0)于 2019 年 11 月 1 日创建

有时我将这种方法用于多词标记,或者如果您想分析标点符号和单词,请查看可用的strip_punct = FALSE选项。


推荐阅读