gpt4 book ai didi

python - 使用 Sci-Kit 学习对大型语料库的文本进行分类

转载 作者:太空狗 更新时间:2023-10-29 21:26:47 25 4
gpt4 key购买 nike

我的数据库中有大约 1600 篇文章,每篇文章都已预先标记为以下类别之一:

Technology
Science
Business
World
Health
Entertainment
Sports

我正在尝试使用 sci-kit learn 构建一个分类器来对新文章进行分类。 (我想我会将我的训练数据分成两半,用于训练和测试?)

我希望使用 tf-idf,因为我没有停用词列表(不过,我可以使用 NLTK 仅提取形容词和名词,但我宁愿将整篇文章提供给 scikit-learn ).

我已经阅读了所有关于 scikit-learn 的文档,但是他们的示例涉及单词出现和 N-gram(很好),但他们从未指定如何将一段数据绑定(bind)到标签。

我试过查看他们的示例代码,但太困惑了,无法理解。

有人可以帮我解决这个问题,或者给我指明正确的方向吗?

谢谢。

最佳答案

我认为当我开始将自己的数据提供给分类器时,您遇到了同样的问题。

您可以使用函数sklearn.datasets.load_files,但要这样做,您需要创建这个结构:

train
├── science
│   ├── 0001.txt
│   └── 0002.txt
└── technology
├── 0001.txt
└── 0002.txt

其中 train 的子目录被命名为标签,标签目录中的每个文件都是具有该标签的文章。然后使用load_files加载数据:

In [1]: from sklearn.datasets import load_files

In [2]: load_files('train')
Out[2]:
{'DESCR': None,
'data': ['iphone apple smartphone\n',
'linux windows ubuntu\n',
'biology astrophysics\n',
'math\n'],
'filenames': array(['train/technology/0001.txt', 'train/technology/0002.txt',
'train/science/0002.txt', 'train/science/0001.txt'],
dtype='|S25'),
'target': array([1, 1, 0, 0]),
'target_names': ['science', 'technology']}

返回的对象是一个sklearn.datasets.base.Bunch,它是一个简单的数据包装器。这是开始使用分类器的一种直接方法,但是当您的数据更大并且经常更改时,您可能希望停止使用文件并使用例如数据库来存储带标签的文档,并且可能具有比普通结构更多的结构文本。基本上,您需要生成类别列表(或 target_names),例如 ['science', 'technology', ...] 并分配 target data 列表中每个文档的值作为 target_names 列表中标记类别的索引。 datatarget的长度必须相同。

你可以看看我之前写的运行分类器的脚本:https://github.com/darkrho/yatiri/blob/master/scripts/run_classifier.py#L267

关于python - 使用 Sci-Kit 学习对大型语料库的文本进行分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19336497/

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