我有一个文档列表(TDT2语料库),我想使用tfidf从其中获取一个词汇表。使用textblob需要花费很长时间,而且我不认为它会在5-6天之前产生一个词汇表。还有什么其他的技巧可以做吗?我遇到了scikit-学习的tfidf技术,但我担心它也将花费同样的时间。
from sklearn.feature_extraction.text import CountVectorizer
results = []
with open("/Users/mxyz/Documents/wholedata/X_train.txt") as f:
for line in f:
results.append(line.strip().split('\n'))
blob=[]
for line in results:
blob.append(line)
count_vect= CountVectorizer()
counts=count_vect.fit_transform(blob)
print(counts.shape)
这会产生一个关于不接受列表的错误,并且列表没有更低的值。
发布于 2015-12-10 18:48:35
我认为results
应该只是一个list
,而不是list
的list
?如果是这样的话,改变一下:
results.append(line.strip().split('\n'))
至:
results.extend(line.strip().split('\n'))
append
将split
返回的整个list
作为results
list
中的单个元素添加;extend
将从list
返回的项单独添加到results
中。
备注:书面
blob=[]
for line in results:
blob.append(line)
只是在缓慢地复制results
。您可以用blob = results[:]
或blob = list(results)
来代替它(后者比较慢,但是如果您不知道什么类型的可迭代results
,并且需要它是一个list
,而不是其他东西,那就是这样做的)。
https://stackoverflow.com/questions/34215300
复制