有没有办法将nltk特征集转换为scipy稀疏数组?

1 投票
2 回答
683 浏览
提问于 2025-04-17 07:47

我正在尝试使用scikit.learn这个库,它需要用到numpy或scipy的数组作为输入。
在nltk中生成的特征集包含了单个词(unigram)和两个词组合(bigram)的频率。我可以手动去做这些,但那样会非常麻烦。所以我在想,是否有我忽略的解决办法。

2 个回答

1

Jacob Perkins 创建了一个桥接工具,用于使用 scikit-learn 的分类器来训练 NLTK 的分类器,具体内容可以在这里找到,源代码如下:

https://github.com/japerk/nltk-trainer/blob/master/nltk_trainer/classification/sci.py

如果你使用的是 0.9 以上的版本,记得更新包的导入行。

0

我不知道有没有其他方法,但要注意,scikit-learn本身可以进行gram频率统计。假设我们是在处理单词级别的gram:

from sklearn.feature_extraction.text import CountVectorizer, WordNGramAnalyzer
v = CountVectorizer(analyzer=WordNGramAnalyzer(min_n=1, max_n=2))
X = v.fit_transform(files)

这里的files是一个字符串或类似文件的对象的列表。执行完这个后,X将会是一个包含原始频率计数的稀疏矩阵。

撰写回答