regex - 如何将 POS 与单词分开

标签 regex r pos-tagger

需要创建文本空间矩阵 (DTM) 进行分类。要准备文本,首先我需要消除(分离)文本的 POS 标签。我的猜测是像下面那样做。我是 R 的新手,现在不知道如何否定 REGEX(见下文 NOT!)。

text <- c("wenn/KOUS ausläuft/VVFIN ./$.", "Kommt/VVFIN vor/PTKVZ ;/$.", "-RRB-/TRUNC Durch/APPR und/KON", "man/PIS zügig/ADJD ./$.", "empfehlung/NN !!!/NE")

我猜它是如何工作的:

(POSs <- regmatches(text, gregexpr('[[:punct:]]*/[[:alpha:][:punct:]]*', text)))
[[1]]
[1] "/KOUS"  "/VVFIN" "./$."  

[[2]]
[1] "/VVFIN" "/PTKVZ" ";/$."  

[[3]]
[1] "-/TRUNC" "/APPR"   "/KON"   

[[4]]
[1] "/PIS"  "/ADJD" "./$." 

[[5]]
[1] "/NN"    "!!!/NE"

但是不知道如何否定这样的表达式:

#                          VVV
(texts <- regmatches(text, NOT!(gregexpr('[[:punct:]]*/[[:alpha:][:punct:]]*', text))))
[[1]]
[1] "wenn"  "ausläuft"  

[[2]]
[1] "Kommt" "vor"  

[[3]]
[1] "Durch"   "und"   

[[4]]
[1] "man"  "zügig"

[[5]]
[1] "empfehlung"

最佳答案

一种可能性是通过搜索 POS 标签并将其替换为 ''(即空文本)来消除标签:

text <- c("wenn/KOUS ausläuft/VVFIN ./$.", "Kommt/VVFIN vor/PTKVZ ;/$.", "-RRB-/TRUNC Durch/APPR und/KON", "man/PIS zügig/ADJD ./$.", "empfehlung/NN !!!/NE")

(textlist <- strsplit(paste(gsub('[[:punct:]]*/[[:alpha:][:punct:]]*','', text), sep=' '), " "))
[[1]]
[1] "wenn"     "ausläuft"

[[2]]
[1] "Kommt" "vor"  

[[3]]
[1] "-RRB"  "Durch" "und"  

[[4]]
[1] "man"   "zügig"

[[5]]
[1] "empfehlung"

rawr 的友好帮助下

关于regex - 如何将 POS 与单词分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21949394/

相关文章:

regex - 替换为编号值

javascript - 需要用Javascript替换 "$"为 "_"

r - 如何将因子转换为数字

mysql - 简化 R 中的数据库访问

r - R : contrast coefficient matrix or contrast matrix/coding scheme? 中的自定义对比以及如何到达那里?

machine-learning - 找到英语句子中形容词和副词对应的名词或动词

python - NLP中简化标签的定义?

java - 为什么这个正则表达式不返回第二个单词

regex - AWK 子函数语法

java - 在Java中使用POSTagger将不同的POS(词性)保存在不同的文件中?