-1

我想用 Python 为 NLP 项目构建一个文本语料库。我在 LSHTC4 Kaggle 挑战赛中看到了这种文本格式:

5 0:10 8:1 18:2 54:1 442:2 3784:1 5640:1 43501:1 

第一个数字对应于标签。

每组由 ':' 分隔的数字对应于向量的 (feature,value) 对,其中第一个数字是特征的 id,第二个数字是其频率(例如,id 为 18 的特征在实例中出现 2 次)。

我不知道这是否是将文本数据预处理为数字向量的常用方法。我在挑战中找不到预处理程序,数据已经预处理。

4

1 回答 1

0

不需要包R(如果我没记错的话,Python 也不需要)。首先将所有内容分开(并删除该初始5)。我猜你希望结果是数字,而不是字符串:

x<-"5 0:10 8:1 18:2 54:1 442:2 3784:1 5640:1 43501:1"
y<-as.integer(unlist(strsplit(x,split=" |:"))[-1])
feature<-y[seq(1,length(y),by=2)]
[1]     0     8    18    54   442  3784  5640 43501
value<-y[seq(2,length(y),by=2)]
[1] 10  1  2  1  2  1  1  1

如果您希望它们并排:

cbind(feature,value)
     feature value
[1,]       0    10
[2,]       8     1
[3,]      18     2
[4,]      54     1
[5,]     442     2
[6,]    3784     1
[7,]    5640     1
[8,]   43501     1

如果要将它们分配给 adata.table进行分析:

库(data.table)dt<-data.table(特征=特征,值=值)

> dt
   feature value
1:       0    10
2:       8     1
3:      18     2
4:      54     1
5:     442     2
6:    3784     1
7:    5640     1
8:   43501     1

等等。

于 2015-07-17T14:57:47.477 回答