gpt4 book ai didi

python-3.x - 如何在Python 3中对大量文本进行分类?

转载 作者:行者123 更新时间:2023-11-30 08:48:19 25 4
gpt4 key购买 nike

我必须对超过 10,000 个类别的大量文本进行分类。我需要专家的建议,因为我还是一名学生。

我的数据是按类别分类的商业产品的描述和标题。例如,标题为“又大又好的键盘”的键盘位于类别办公室>计算机>键盘中。

现在,我使用“from sklearn.feature_extraction.text import TfidfVectorizer”来表示我的文本数据。但矩阵在内存中太大了。对于表示大量数据,您有什么建议吗?

我正在考虑使用 word-2-vec 来表示数据,然后使用神经网络进行分类。

但是我需要你的建议才能走上正确的道路!!

谢谢

最佳答案

如果您想减小 Tfidf 矢量化的大小,我为您提供了两种选择。

假设您有以下数据:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.decomposition import TruncatedSVD

X = ["When I wake up in the morning I always eat apples",
"What do you eat in the morning",
"Usually I only drink coffee",
"How awful, I really cannot stand coffee"]

应用 Tfidf 变换时,您将得到形状为 (4,21) 的矩阵:

vectorizer = TfidfVectorizer()
vectorized_X = vectorizer.fit_transform(X)
vectorized_X.shape
>>> (4,21)

现在让我们假设 21 列太多了,我们想减少它。

选项 1

您可以使用降维。执行 Tfidf 后,最自然的方法是使用截断的 SVD。这会对 tfidf 向量化执行线性降维。它的好处是您可以指定要保留的新组件的数量:

svd = TruncatedSVD(n_components=2)
reduced_X = svd.fit_transform(vectorized_X)
reduced_X.shape
>>> (4,2)

选项 2

Tfidf 允许您指定要在矢量化中保留多少个单词。然后,它返回仅对词频最高的单词执行的向量化。

vectorizer_reduction = TfidfVectorizer(max_features = 5)
vectorized_reduced_X = vectorizer_reduction.fit_transform(X)
vectorized_reduced_X.shape
>>> (4,5)

如果我可以在两者之间进行选择,我会选择选项 1,因为它首先考虑所有信息,然后对其进行总结,而选项 2 只是丢弃从一开始就提供信息。但我也希望选项 1 需要更长的时间...所以也许最佳解决方案可能是两者的混合(首先应用限制性 Tfidf,然后应用 SVD)?

关于python-3.x - 如何在Python 3中对大量文本进行分类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55911531/

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