【发布时间】:2016-04-18 09:48:43
【问题描述】:
我有一个这样的字符向量:
sent <- c("The quick brown fox jumps over the lazy dog.",
"Over the lazy dog jumped the quick brown fox.",
"The quick brown fox jumps over the lazy dog.")
我正在使用textcnt() 生成二元组,如下所示:
txt <- textcnt(sent, method = "string", split = " ", n=2, tolower = FALSE)
format(txt) 给了我所有的二元组
frq rank bytes Encoding
Over the 1 4.5 8 unknown
The quick 2 11.5 9 unknown
brown fox 2 11.5 9 unknown
brown fox. 1 4.5 10 unknown
dog jumped 1 4.5 10 unknown
dog. Over 1 4.5 9 unknown
fox jumps 2 11.5 9 unknown
fox. The 1 4.5 8 unknown
jumped the 1 4.5 10 unknown
jumps over 2 11.5 10 unknown
lazy dog 1 4.5 8 unknown
lazy dog. 2 11.5 9 unknown
over the 2 11.5 8 unknown
quick brown 3 15.5 11 unknown
the lazy 3 15.5 8 unknown
the quick 1 4.5 9 unknown
真实数据有更多的句子。我有两个问题:
1. 是否可以在生成的 ngram 中提到每个句子末尾的点应该被截断?
2. 是否可以防止生成跨越两个句子的 ngram? dog. Over 和 fox. The
【问题讨论】:
-
你的最终目标是什么?根据这一点,您可以考虑将
library(quanteda); tokenize(sent, ngrams = 2L, removePunct = T)或library(quanteda);quanteda:dfm(sent, ngrams = 2L, removePunct = TRUE)作为替代方案。它为您提供双元组,切断了标点符号,并且不会将sent中的元素合并为一个句子。 -
@lukeA 最终目标是使用它的频率作为指标之一对二元组进行排名,感谢您将我指向 quanteda
-
@ImranAli,您仍然没有说是否要允许/删除/有选择地删除 n-gram 中的不同标点符号。请将此编辑到您的问题中。
标签: r whitespace n-gram punctuation