文件列表的 Tfidf
Tfidf of a list of documents
我有一个文档列表(TDT2 语料库),我想使用 tfidf 从中获取词汇表。使用 textblob 需要很长时间,考虑到速度,我认为它不会在 5-6 天之前生成词汇表。还有其他技术可以解决这个问题吗?我遇到了 scikit-learn 的 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)
这会不断产生关于不接受列表的错误,并且该列表没有较低的。
我假设 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
仅此而已,这就是您的做法)。
我有一个文档列表(TDT2 语料库),我想使用 tfidf 从中获取词汇表。使用 textblob 需要很长时间,考虑到速度,我认为它不会在 5-6 天之前生成词汇表。还有其他技术可以解决这个问题吗?我遇到了 scikit-learn 的 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)
这会不断产生关于不接受列表的错误,并且该列表没有较低的。
我假设 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
仅此而已,这就是您的做法)。