在 Keras 中使用 LSTM 进行多类文本分类

数据挖掘 喀拉斯 降维 多类分类 多标签分类
2021-10-14 04:23:39

我对深度学习很陌生,并试图使用深度学习解决多类、多标签文本分类的问题。

https://github.com/fchollet/keras/blob/master/examples/imdb_cnn_lstm.py我有另一个数据集。csv 文件(“文本”,“分类器”)的 int 形式,我想在其上执行文本分类任务。我已经尝试了几种方法将我的训练文本传递给 keras,但不能,所以我被困在这一点上。谁能建议我如何将我的“train.csv”和“test.csv”文件传递给 X_train、y_train 和 X_test、y_test?

通常卡在这条线上。

(X_train, y_train), (X_test, y_test) = imdb.load_data(nb_words=max_features)

'train.csv' 具有以下格式:

“职位描述:理想的人选是在尖端的工业分析专业数据科学组织中应用他/她的高级分析专业知识;主要是在以下任何领域-汽车/能源/石油和天然气/航空航天/海洋/化学。经验在统计建模,预测建模,随机森林,决策树,线性回归,相关性,时间序列。机械/或/ IE/计算机科学/EE/化学的BE / MS /博士。导师/领导一个数据科学家的小团队“,商业分析

'test.csv' 具有与 "job_description","category" 相同的格式

2个回答

看了源码后发现,keras.datasets.imdb.load_data实际上并没有加载纯文本数据并将它们转换成向量,它只是加载了之前已经转换过的向量。

至于你的问题,我假设你想将你的转换job_description成向量。也许您可以尝试sklearn.feature_extraction.text.CountVectorizer

我不是 NLP 方面的专家,但我遇到了需要这种技术的问题(例如两个 Sigma Connect:租赁列表查询)。

同时,您还可以尝试其他 word2vec/embedding 技术。这是来自 keras 的教程,其中显示了有关词嵌入的详细示例。

参考

https://github.com/fchollet/keras/blob/master/keras/datasets/imdb.py

http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html

https://www.kaggle.com/sudalairajkumar/two-sigma-connect-rental-listing-inquiries/xgb-starter-in-python

像这样的东西:

nb_classes = 3 # the number of categories you have
x_train = []
y_train = []

with open('train.csv', 'r') as train_file:
    reader = csv.reader(train_file)
    for row in reader:
       sentence = row[0]
       category = row[1]

       x_train.append(sentence)
       y_train.append(category)

Y_train = np_utils.to_categorical(y_train, nb_classes)
X_train = ? # your choice of tokanization

你应该对你的测试数据集做同样的事情。

您还应该将损失更改为categorical_crossentropy.