![](/img/trans.png)
[英]Python supervised ML text classification into different categories with probability
[英]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
。
之后,您将不得不准备数据(尝试nltk
或spacy
),处理小写/大写字母,删除标点符号,特殊字符,也许是词干和词形还原。 然后,您将使用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.