R 如何在斜杠前后提取字符串

R 如何在斜杠前后提取字符串,r,regex,R,Regex,我正在研究R中的词性标记。我有一个字符串,其词性如下(格式:Word/POS_标记)。我想在一列中提取单词,在另一列中提取相应的词性标记,并在数据集的第三列中提取频率。 此外,在加载到数据集之前,我需要删除文本中的任何标点符号或特殊字符。我对正则表达式不太熟悉。你能帮我解决这个问题吗 (请参考应用POS_标签前的句子。-->“我喜欢下周参加网球比赛,我将参加一场比赛。我喜欢弹吉他。”) 示例:“I/PRP like/IN to/to play/VB tennis/NN Conference/NN

我正在研究R中的词性标记。我有一个字符串,其词性如下(格式:Word/POS_标记)。我想在一列中提取单词,在另一列中提取相应的词性标记,并在数据集的第三列中提取频率。 此外,在加载到数据集之前,我需要删除文本中的任何标点符号或特殊字符。我对正则表达式不太熟悉。你能帮我解决这个问题吗

(请参考应用POS_标签前的句子。-->“我喜欢下周参加网球比赛,我将参加一场比赛。我喜欢弹吉他。”)

示例:
“I/PRP like/IN to/to play/VB tennis/NN Conference/NN Next/JJ week/NN,/,和/CC I/PRP will/MD参与/VB on/IN/IN a/DT play/NN./.I/PRP like/IN playing/VBG吉他/NN./”

注意:在上面的示例中,我们有3次出现“I”和2次出现“like”。我需要一个数据集中的字数以及下面的字数

Word           POS_Tag    Count
I              PRP        3
like           IN         2
to             TO         1
play           VB         1
tennis         NN         1
tournament     NN         1
Next           JJ         1
week           NN         1
and            CC         1
will           MD         1
partcipate     VB         1
on             IN         1
a              DT         1
play           NN         1
playing        VBG        1
guitar         NN         1
谢谢。

我们用
str\u extract\u all
(from
stringr
)从字符串中提取单词(
\\w+
),然后创建一个
数据。表中有两列,分别来自
向量('v1')的备选单词,按“Word”和“POS标签”分组,得到元素的数量(
.N

数据
str1非常感谢您的支持。这对我帮助很大!!:)嗨,akrun,我在下面的例子中遇到了一些困难。“I/PRP did/VBD n t/RB经验丰富/VBN多/JJ服务/NN差异化/NN”。结果并不像预期的那样出现,因为在“t”中有撇号。有什么解决办法吗?谢谢@Parthasarathybalaman能否请你以新问题的形式发布
library(stringr)
library(data.table)
v1 <- str_extract_all(str1, "\\w+")[[1]]
data.table(Word = v1[c(TRUE, FALSE)], POS_Tag = v1[c(FALSE, TRUE)])[
    , .(Count = .N), .(Word, POS_Tag)]
#           Word POS_Tag Count
# 1:           I     PRP     3
# 2:        like      IN     2
# 3:          to      TO     1
# 4:        play      VB     1
# 5:      tennis      NN     1
# 6:  tournament      NN     1
# 7:        Next      JJ     1
# 8:        week      NN     1
# 9:         and      CC     1
#10:        will      MD     1
#11: participate      VB     1
#12:          on      IN     1
#13:           a      DT     1
#14:        play      NN     1
#15:     playing     VBG     1
#16:      guitar      NN     1
library(tidyverse)
data_frame(string = str1) %>%
       separate_rows(string) %>% 
       group_by(grp = rep(c("Word", "POS_Tag"), length.out = n())) %>% 
       mutate(i1 = row_number()) %>%
       spread(grp, string) %>% select(-i1) %>% 
       count(Word, POS_Tag) %>%
       filter(Word != ".")
# A tibble: 16 x 3
#          Word POS_Tag     n
#         <chr>   <chr> <int>
# 1           a      DT     1
# 2         and      CC     1
# 3      guitar      NN     1
# 4           I     PRP     3
# 5        like      IN     2
# 6        Next      JJ     1
# 7          on      IN     1
# 8 participate      VB     1
# 9        play      NN     1
#10        play      VB     1
#11     playing     VBG     1
#12      tennis      NN     1
#13          to      TO     1
#14  tournament      NN     1
#15        week      NN     1
#16        will      MD     1
str1 <- "I/PRP like/IN to/TO play/VB tennis/NN tournament/NN Next/JJ week/NN ,/, and/CC I/PRP will/MD participate/VB on/IN a/DT play/NN ./. I/PRP like/IN playing/VBG guitar/NN ./."