在自然语言处理(NLP)中,如何有效降低尺寸?

Stu*_*Guy 6 text nlp machine-learning dimension-reduction dimensionality-reduction

在NLP中,特征的维度总是很大.例如,对于一个项目,特征的维度几乎是20万(p = 20,000),每个特征是0-1整数,以显示特定单词或二元组是否在纸上呈现(一篇论文)是R ^ {p} $)中的数据点$ x \.

我知道功能之间的冗余是巨大的,因此减小尺寸是必要的.我有三个问题:

1)我有10万个数据点(n = 10,000),每个数据点有10万个特征(p = 10,000).进行降维的有效方法是什么?R ^ {n\times p} $中的矩阵$ X \是如此巨大,以至于PCA(或SVD,截断的SVD都可以,但我不认为SVD是减少二进制特征尺寸的好方法)和Bag单词(或K-means)很难直接在$ X $上进行(当然,它很稀疏).我没有服务器,我只是用我的电脑:-(.

2)如何判断两个数据点之间的相似性或距离?我认为欧几里德距离可能不适用于二进制特征.L0规范怎么样?你用什么?

3)如果我想使用SVM机器(或其他内核方法)进行分类,我应该使用哪个内核?

非常感谢!

And*_*ler 3

1)不需要降维。如果您确实愿意,可以使用 L1 惩罚线性分类器来减少最有用的特征。

2)经常使用余弦相似度,或者TFIDF重新缩放向量的余弦相似度。

3) 线性 SVM 在具有如此多的特征的情况下效果最好。

这里有一个关于如何在 python 中进行这样的分类的很好的教程:http://scikit-learn.org/dev/tutorial/text_analytics/working_with_text_data.html