我想在Python中为NLP项目构建一个文本语料库。我在LSHTC4 Kaggle挑战中看过这种文本格式:
>>> x = {'a':1, 'b': 2}
>>> y = {'b':10, 'c': 11}
>>> { key: y[key] if key in y else x[key]
for key in set(x) + set(y)
}
第一个数字对应于标签。
由':'分隔的每组数字对应于矢量的(特征,值)对,其中第一个数字是特征的id,第二个数字是其频率(例如,id为18的特征出现2次在实例中)。
我不知道这是否是将文本数据预处理为数字向量的常用方法。我无法在挑战中找到预处理程序,数据已经过预处理。
答案 0 :(得分: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
如果您想将它们分配到data.table
进行分析:
库(data.table) DT&LT; -data.table(feature =功能,值=值)
> 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
等