什么是文本分类,如何实现文本分类?代码举例讲解

文本分类是一种机器学习技术,其目的是将文本分为预定义的类别。它在自然语言处理中有着广泛的应用,如情感分析、新闻分类等。

文本分类的主要步骤是:

  1. 数据读取:读取训练集和测试集文本数据及标签。
  2. 数据预处理:包括文本清洗、大小写转换、标点符号过滤、停用词过滤、词干提取等。
  3. 特征提取:将文本表示为数字特征向量,主要方法有词袋模型、TF-IDF、词嵌入等。
  4. 选择分类模型:如朴素贝叶斯、SVM、随机森林、神经网络等。
  5. 模型训练:使用训练集训练选择的分类模型。
  6. 模型评估:使用测试集评估模型性能,计算准确率、召回率、F1值等指标。
  7. 预测新文本:对未知文本进行特征提取后,使用训练好的模型进行分类预测。

代码示例:

python
# 数据预处理
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences

tokenizer = Tokenizer()
tokenizer.fit_on_texts(texts)
sequences = tokenizer.texts_to_sequences(texts)
data = pad_sequences(sequences, maxlen=MAX_LEN)

# 选择分类模型 
from keras.models import Sequential
from keras.layers import Dense, Flatten, Embedding

model = Sequential()
model.add(Embedding(n_words, n_embd, input_length=MAX_LEN))
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['acc'])
model.fit(x_train, y_train, epochs=10, batch_size=32)

# 预测新文本
new_text = "I am very happy today!"
new_seq = tokenizer.texts_to_sequences([new_text])
new_data = pad_sequences(new_seq, maxlen=MAX_LEN) 
pred = model.predict(new_data)
print(pred)
# Output: [[0.05]] 积极文本