在向量化

时间:2016-07-30 02:47:22

标签: python python-3.x scikit-learn nltk

我正在尝试用scikit-learn编写机器学习算法,该算法解析文本并根据训练数据对其进行分类。

直接从scikit-learn文档中使用文本数据的示例使用CountVectorizer生成稀疏数组,显示每个单词出现的次数。

>>> from sklearn.feature_extraction.text import CountVectorizer
>>> count_vect = CountVectorizer()
>>> X_train_counts = count_vect.fit_transform(twenty_train.data)

不幸的是,这并未考虑短语的任何排序。可以使用较大的ngramsCountVectorizer(ngram_range=(min, max)))来查看特定的短语,但这会快速增加功能的数量,甚至不会很好。

有没有一种以另一种方式处理有序文本的好方法?我绝对愿意使用自然语言解析器(nltktextblob等)以及scikit-learn

1 个答案:

答案 0 :(得分:1)

word2vec embedding?怎么样?它是一个基于神经网络的单词嵌入到向量中,并考虑了上下文。这可以为您的分类器提供更复杂的功能集。

一个功能强大的python库,用于自然语言处理,具有良好的word2vec实现,gensim。 Gensim具有高度可扩展性和快速性,并具有高级文本处理功能。以下是如何入门的快速概述:

<强>安装

只需easy_install -U gensimpip install --upgrade gensim

一个简单的word2vec示例

import gensim

documents = [['human', 'interface', 'computer'],
 ['survey', 'user', 'computer', 'system', 'response', 'time'],
 ['eps', 'user', 'interface', 'system'],
 ['system', 'human', 'system', 'eps'],
 ['user', 'response', 'time'],
 ['trees'],
 ['graph', 'trees'],
 ['graph', 'minors', 'trees'],
 ['graph', 'minors', 'survey']]

model = gensim.models.Word2Vec(documents, min_count=1)
print model["survey"]

这将输出&#34;调查&#34;映射到,您可以将其用于分类器的功能输入。

Gensim还有很多其他功能,如果您对自然语言处理感兴趣,那么值得更好地了解它。