文件列表的 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,而不是 listlist?如果是这样,请更改:

results.append(line.strip().split('\n'))

至:

results.extend(line.strip().split('\n'))

appendsplit 返回的整个 list 作为单个元素添加到 results list 中; extend 正在将 list 中的项目分别添加到 results

旁注:如所写

blob=[]
for line in results:
    blob.append(line)

只是以较慢的方式对 results 进行浅表复制。您可以用 blob = results[:]blob = list(results) 替换它(后者速度较慢,但​​如果您不知道 results 是哪种可迭代对象并且需要它成为 list 仅此而已,这就是您的做法)。