繁体   English   中英

Python中如何使用ML进行文本分类?

[英]How to use ML for text classification in Python?

我到处寻找答案,但找不到答案,所以如果重复,我提前道歉。

我有两列大约 25k 行的数据。 第一列包含损益表行项目列表,是从 OCR 创建的,因此其中有很多错误。 例如,“Income”可能有 20 个订单项,但它们可能显示为“I ncome”或“Imcome”或“...Incom”等。

第二列包含手动编码的分类列表,以便可以对行项目进行分类。 例如,“杂费”、“申请费”、“保险费”都将归类为“其他收入”。

我想训练一个 model 使用我现有的数据集来预测“I ncome”应该放在“收入”类别中,“杂项费用”应该放在“其他收入”类别中等等。

我在 ML 方面的经验仅限于我在类中处理过的示例,这些示例都在数据集中使用连续变量,因此我在处理文本分类方面的经验几乎为零。 我可以将文本类别转换为数值,但无法对行项目执行此操作,所以我不知道它会对我有所帮助。

我可以用 sklearn 做到这一点吗? Pytorch? Tensorflow? 火花?

如果有人能指出我正确的方向,真的很感激!

首先,您必须更正单词,因为所有 Tensorflow 和 PyTorch 预训练模型都可以使用正确格式的单词。 为此,例如,您可以在 Python 中使用pyspellchecker或自动autocorrect

之后,您将不得不准备数据(尝试nltkspacy ),处理小写/大写字母,删除标点符号,特殊字符,也许是词干和词形还原。 然后,您将使用nltk.word_tokenize对短语进行标记。

只有在那之后,您才能将第一列 map 嵌入到表示该单词/句子的向量中。

对于嵌入,请尝试此选项,这是最快的选项之一(选择 TF hub 中的语言):

import seaborn as sns
from sklearn.metrics import pairwise
import tensorflow as tf
import tensorflow_hub as hub
import tensorflow_text as text  # Imports TF ops for preprocessing.

BERT_MODEL = "https://tfhub.dev/tensorflow/bert_multi_cased_L-12_H-768_A-12/4"
PREPROCESS_MODEL = "https://tfhub.dev/tensorflow/bert_en_uncased_preprocess/3"

sentences = [
  "Here We Go Then, You And I is a 1999 album by Norwegian pop artist Morten Abel. It was Abel's second CD as a solo artist.",
  "If it rains, it pours.", "The quick brown fox jumps over the lazy dog."]

preprocess = hub.load(PREPROCESS_MODEL)
bert = hub.load(BERT_MODEL)

inputs = preprocess(sentences)
outputs = bert(inputs)

然后你将 map X(第一列,现在很多列 - 嵌入)到 Y(第二列 - 类)。 在这一步中,您可以使用任何您想要的分类算法:逻辑回归、朴素贝叶斯、SVM、决策树、随机森林、梯度提升甚至神经网络。

啊,还记得用dataframe['column_2'].cat.codes把你的第二列类变成数字类

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM