gpt4 book ai didi

nlp - tf-idf 在一定数量(65k)的文本文件上

转载 作者:行者123 更新时间:2023-12-02 04:48:02 24 4
gpt4 key购买 nike

我想尝试将 tfidf 与 scikit-learn(或 nltk 或对其他建议持开放态度)结合使用。我拥有的数据是我们收集并存储在 mongoDB 中的相对大量的论坛帖子(~65k)。每个帖子都有帖子标题、发布日期和时间、帖子消息的文本(或者回复:如果回复现有帖子)、用户名、消息 ID 以及它是子帖子还是父帖子(在线程中) ,你有原始帖子,然后回复这个操作,或嵌套回复,树)。

我认为每个帖子都是一个单独的文档,类似于 20 个新闻组,每个文档都有我在顶部提到的字段,以及我将从 mongo 中提取的消息帖子的文本和为每个文本文件写入所需的格式。

为了将数据加载到 scikit 中,我知道:
http://scikit-learn.org/dev/modules/generated/sklearn.datasets.load_files.html (但我的数据没有分类) http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html - 对于输入,我知道我会使用文件名,但是因为我会有大量文件(每个帖子),有没有办法从文本文件中读取文件名?或者是否有人可以向我指出一些实现示例?

此外,关于为每个论坛帖子构建文件名的任何建议,以便稍后识别我何时获得 tfidf 向量和余弦相似度数组

谢谢

最佳答案

你可以传递一个 python generator或文件名或字符串对象而不是列表的生成器表达式,因此可以随时从驱动器中延迟加载数据。这是一个 CountVectorizer 将生成器表达式作为参数的玩具示例:

>>> from sklearn.feature_extraction.text import CountVectorizer
>>> CountVectorizer().fit_transform(('a' * i for i in xrange(100)))
<100x98 sparse matrix of type '<type 'numpy.int64'>'
with 98 stored elements in Compressed Sparse Column format>

请注意,生成器支持可以直接从 MongoDB 查询结果迭代器中向量化数据,而不是通过文件名。

还有一个 65k 文件名的列表,每个 10 个字符在内存中只有 650kB(加上 python 列表的开销)所以提前加载所有文件名应该不是问题。

any advice on structuring the filenames for each these discussion forum posts, for later identifying when I get the tfidf vectors and cosine similarity array

只需使用确定性排序即可在将文件名列表提供给向量化器之前对其进行排序。

关于nlp - tf-idf 在一定数量(65k)的文本文件上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19419245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com