Python中的文本预处理

时间:2015-07-17 14:47:20

标签: python nlp kaggle

我想在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次在实例中)。

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

1 个答案:

答案 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