gpt4 book ai didi

nltk - 互联网文章和社交媒体的层次分类+主题模型训练数据

转载 作者:行者123 更新时间:2023-12-04 15:44:54 39 4
gpt4 key购买 nike

我想按主题对大量基于互联网的小型文章(推文、博客文章、新闻等)进行分类(100K 到 1M+)​​。为了实现这个目标,我一直在寻找可用于构建分类器模型的标记训练数据文档。为了使这篇文章最有用,以下是我发现的一些可能的来源:

a) www.freebase.com/internet/website/category?instances=
b) wikipedia-miner.cms.waikato.ac.nz(访问维基百科数据的工具包)
c) en.wikipedia.org/wiki/Wikipedia:Database_download
d) wiki.dbpedia.org/About(属于类别的 SKOS 格式主题关键字)
e) 互联网搜索大型文章集,然后进行聚类和手动管理

问题 1:是否有其他互联网资源可以提供带标签的培训文件?给定主题的关键字集,尤其是加权集也很有用

理想情况下,我想构建一个分类器,该分类器将返回分层类别,并且随着更多的兴趣/数据变得可用,可以在以后添加子主题详细信息。

问题 2:是否有分层结构的主题建模/分类框架(也可能是可扩展的)?一个代码示例将特别受欢迎

非常感谢

更新:

路透社语料库第 1 卷(在 RCV1-v2 上搜索)
大约 80 万篇 1990 年代后期的路透社文章,按人类分类为主题、行业和地区类别

一个学术联盟 (LDC) 分发各种语料库,
包括一份由纽约时报编译的带有约 150 万份标记文件的文件:
http://catalog.ldc.upenn.edu/LDC2008T19

最佳答案

缺乏标记数据是困扰许多机器学习应用的问题。澄清一下,您是否正在寻找一个看过您的推文、博客文章和新闻、标记来源并发布该数据库的人?或者程序进行分类是否可以接受?在前一种情况下,关键字似乎是一个很好的分类方案,但实际上并非如此:不同的人会为相同的内容选择不同的关键字。这将从根本上损害您的机器学习过程。

我的观点是,无论哪种情况,您都应该使用无监督学习(不提供标签)而不是监督学习(提供标签)——您不应该寻找带标签的数据,因为您不会找到它。即使您遇到一些已被程序标记的数据,该程序也可能使用了无监督学习方法。

我推荐你使用 scikit-learn 的 cluster 模块中定义的一些函数。这些实现了无监督学习技术。

加州大学欧文分校拥有庞大的机器学习数据集存储库。你可以在他们的一些数据集上测试你的一些自然语言处理工作。一个流行的数据集是安然电子邮件数据集。它和其他4个编译here .

UCI 数据集很棒,但它们不是 scikit-learn 格式。您将不得不转换它们。我通常使用 iris 数据集,因为它很小,您可以通过这种方式轻松地使用 scikit-learn。正如您在 example 中看到的那样线

est.fit(X)

只需要数据数组 X 而不需要标签 Y。
X = iris.data

通过 4_features numpy 数组为 X 分配 150_instances。您需要这种形式的 UCI 数据。让我们看看纽约时报的新闻文章。

来自 UCI 链接说明的 readme.txt
For each text collection, D is the number of documents, W is the
number of words in the vocabulary, and N is the total number of words
in the collection (below, NNZ is the number of nonzero counts in the
bag-of-words). After tokenization and removal of stopwords, the
vocabulary of unique words was truncated by only keeping words that
occurred more than ten times.
...
NYTimes news articles:
orig source: ldc.upenn.edu
D=300000
W=102660
N=100,000,000 (approx)

也就是说,您的 X 将具有 300000_instances 乘以 102660_features 的形状。注意属性格式:
Attribute Information:

The format of the docword.*.txt file is 3 header lines, followed by
NNZ triples:
---
D
W
NNZ
docID wordID count
docID wordID count
docID wordID count
docID wordID count
...
docID wordID count
docID wordID count
docID wordID count
---

此数据位于 docword.nytimes.txt 数据文件中。一些代码来阅读它并运行聚类算法:
import numpy as np
from sklearn.cluster import KMeans
with open('docword.nytimes.txt','r') as f:
# read the header information
n_instances = int(f.readline())
n_attributes = int(f.readline())
n_nnz = int(f.readline())

# create scikit-learn X numpy array
X = np.zeros((n_instances, n_attributes))
for line in f:
doc_id, word_id, count = line.split()
X[doc_id, word_id] = count

# run sklearn clustering on nytimes data
n_clusters = 8
est = KMeans(n_clusters)
est.fit(X)

不幸的是,这需要大量内存。实际上,内存比我的机器多,所以我无法测试这段代码。不过,我想您的应用程序域可以与这个相媲美。您将不得不研究一些降维技术,或者一次只查看较小的单词子集。

我希望这有帮助。随时给我留言。

关于nltk - 互联网文章和社交媒体的层次分类+主题模型训练数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19799560/

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