使用您自己的模型构建的预测输出

数据挖掘 机器学习 Python 分类 预测建模 文本分类
2022-02-07 11:26:16

我需要更好地理解如何使用基于布尔值开发的自己的模型从头开始创建机器学习算法,例如文本中的单词数、标点符号数、大写字母数等,以确定文本是正式的还是非正式的。例如:我有

Text
there is a new major in this town
WTF?!?
you're a great person. Really glad to have met you
I don't know what to say
BYE BYE BABY

我创建了一些规​​则来在这个(小)火车数据集上分配标签,但我需要了解如何将这些规则应用于新数据集(测试):

  • 如果有一个大写单词,那么 I;
  • 如果有一个简短的表达式,比如 don't, 'm ,'s, ... , 那么 I;
  • 如果有两个符号(标点符号)彼此靠近,那么 I;
  • 如果一个单词在额外单词列表中,那么我;
  • 否则 F。

假设我有一个数据框要测试并分配这些标签(I 或 F):

FREEDOM!!! I don't need to go to school anymore
What are u thinking?
Hey men!
I am glad to hear that. 

如何将我的模型应用到这个新数据集,添加标签?

Test                                                  Output
FREEDOM!!! I don't need to go to school anymore       I
What are u thinking?                                  I
Hey men!                                              I
I am glad to hear that.                               F

在 mnm 的评论后更新:

下一个会被认为是机器学习问题吗?

import pandas as pd
import numpy as np
data = { "ID":[1,2,3,4],
        "Text":["FREEDOM!!! I don't need to go to school anymore",
    "What are u thinking?",
    "Hey men!","
    I am glad to hear that."]}

# here there should be the part of modelling
df['upper'] = # if there is an upper case word then "I"
df['short_exp'] = # if there is a short exp then "I"
df['two_cons'] = # if there are two consecutive symbols then "I"

list_extra=['u','hey']
df['extra'] = # if row contains at least one of the word included in list_extra then 'I'



# append cols to original dataframe
df_new = df
df_new['upper'] = df1['upper']
df_new['short_exp'] = df1['short_exp']
# and similar for others

然而,目前尚不清楚最新的部分是否基于条件。如何预测其他文本的新值?

1个回答

您提出的是一种启发式方法,因为您提前手动定义了规则。从机器学习 (ML) 的角度来看,“训练”是您观察一些数据并决定应用哪些规则的部分,而“测试”是当您运行应用这些规则以获得预测标签的程序时。正如您正确理解的那样,测试部分应该应用于由看不见的实例组成的测试集。测试集中的实例也应该手动标记(最好在执行测试之前,以避免任何偏差),以便您可以评估您的方法(即计算性能)。

从技术上讲,您在这里没有使用任何 ML 方法,因为没有自动训练模型的部分。然而,启发式方法可能很有用,特别是它们有时被用作比较 ML 模型的基准。


[添加以下评论]

我认为大多数常见的预处理方法都需要将文本转换为小写,但是一个单词,在不同的比赛中,可以有不同的权重。

NLP(自然语言处理)中的许多任务都是如此,但并非所有任务都是如此。例如,对于与捕捉作者的写作风格(文体测量)相关的任务,通常不会以这种方式预处理文本。将文本表示为特征的选择取决于任务,因此选择是设计的一部分,没有通用的方法。

如何训练一个可以“学习”考虑重要的大写单词和标点符号的模型?

在传统 ML(即统计 ML,与深度学习相反)中,这个问题与特征工程有关,即找到表示与任务相关的实例(具有特征)的最佳方法:如果您认为这对您的任务有特定的特征来表示这些东西,你只需添加它们:例如,你可以添加一个布尔特征,如果实例包含至少一个大写单词,则为真,一个数字特征表示实例中标点符号的数量,等等

最近的 ML 包提出了将文本实例表示为特征的标准方法,这通常非常方便,但重要的是要记住它不是唯一的方法。此外,如今深度学习方法提供了绕过特征工程的方法,因此有一种忘记它的趋势,但恕我直言,它是设计的重要组成部分,如果只是为了了解模型的工作原理。