我正在寻找一种将文档(30K和growing)分配给大约200种类别的方法。
类别将由用户定义,并将随着时间的推移而增长。
由于我的数据没有标签,我的思维过程是尝试构建一个系统,通过提供一个粗略的第一遍分类器来帮助手动分类。然后,用户可以快速浏览分类文档,并接受/拒绝分类。
一旦我们有足够的大量机密文件,那么我希望使用一些人工智能系统自动分类剩余的文件和新的文件,因为他们被公布。
我曾经玩过LDA,但据我所知,LDA本质上选择的主题不一定要映射到我想要定义的类别。
我还构建了一个规则引擎,允许我手动定义通用关键字,将每个文档映射到一个类别,但这仍然是一个相当手工的过程,因为我需要为每个类别定义关键字。
发布于 2022-12-26 10:10:43
通过随机森林分类器可以实现文本输入的多输出分类。
首先,您需要将文本向量化,以使数据具有多维性,并允许分类器轻松地分离数据。
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split
# Extract features with a word frequency (for example)
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)
然后,您可以从sklearn中应用随机森林分类器,它可以轻松地自动对矢量化数据进行分类。
#Train/test split
X_train, X_test, y_train, y_test = train_test_split(X, labels, test_size=0.2)
# Training
clf = RandomForestClassifier(n_estimators=200, max_depth=15)
clf.fit(X_train, y_train)
# Make predictions on the test set
y_pred = clf.predict(X_test)
# Model accuracy
accuracy = clf.score(X_test, y_test)
X_test为文本输入,y_pred为多输出分类结果.
或者,您可以使用TfidfVectorizer而不是CountVectorizer。
https://datascience.stackexchange.com/questions/117308
复制相似问题